How to Become Software Engineer in Bulgaria?

advertisement
How to Become a
Software Developer?
Guidelines for Future Software Engineers
Svetlin Nakov, Ph.D.
Senior Technical Trainer
www.nakov.com
Telerik Software Academy
academy.telerik.com
Table of Contents
 Step 1: Define Your Goals
 Web / Mobile / Java / Embedded / QA / …
 Step 2: Find Resources
 Courses, Tutorials, Videos, Books, etc.
 Step 3: Practice,
Practice, Practice!
 Practical Projects every day
 Step 4: Join the Community
 User groups, IT school, IT university
 Step 5: Start
a Job in the Industry
2
Step 1: Define Your Goals
What Kind of Developer You Want to Become?
Defining Your Goals
 What kind of software engineer you want to
become (what position)?
 Software Developer
 Designer / Front-End Developer
 Developer Support Engineer
 Software Quality Assurance Engineer (QA)
 Business Analyst / Requirements Engineer
 System Administrator / IT Specialist
 Project Manager / IT Manager
4
Defining Your Goals (2)
 What technology
you want to learn?
 Web Development
 PHP / Zend / CakePHP / Symfony / MySQL
 C# / ASP.NET MVC / Web Forms / EF / SQL Server
 Ruby / Rails / Sinatra / MySQL
 Python / Django / MySQL / PostgreSQL
 Java / Java EE / Servlets / JSP / JSF / JPA / Oracle
 JavaScript / Node.js / MySQL / MongoDB
 HTML5, JavaScript / jQuery / AJAX / REST / JSON
5
Defining Your Goals (3)
 What technology
you want to learn ?
 Mobile Development (Smart Phones / Tablets)
 iOS / iPhone / iPad / Objective C /
XCode / Cocoa Touch
 Android / Java / Eclipse
 Windows Phone / Silverlight / C# / Visual Studio
 Blackberry / C / C++ / Java / HTML5 / WebWorks
 Cross-Platform Mobile Frameworks / PhoneGap /
Titanium / Rhodes
6
Defining Your Goals (4)
 What technology
you want to learn?
 Server-Side Development
 Java / Java EE / Spring Framework /
Hibernate / JPS / JAX-WS / JAX-RS / Oracle
 C# / .NET Framework / WCF / WWF / ADO.NET
Entity Framework / SQL Server
 Database Development
 Oracle / SQL Server / MySQL / PostgreSQL /
Stored Procedures / ETL / Reporting / DBA
7
Defining Your Goals (5)
 What technology
you want to learn?
 Game Development
 2D / 3D Graphics / C++ / OpenGL / DirectX /
XNA / Geometry / Physics / AI / Networking
 Mobile Games
 Facebook Games
 Embedded Development
 Microcontrollers / Real-Time Systems /
RTOS / Embedded OS / C / C++ / Assembler
8
Defining Your Goals (6)
 Is your desired technology / position
accurate to the modern trends?
 You might want to be a spacecraft
developer but do you find any job openings?
 You might become a 3D game developer but
check whether this is a perspective profession
 Prefer technologies and positions
with high demand in the industry!
 E.g. Web developer / iOS developer
/ .NET Developer / Java developer
9
Step 2: Find Resources
Join Courses, Follow Tutorials, Watch
Videos, Read Books, Articles, Blogs, etc.
Find Training Resources
 Finding teaching resources for learning
the
technologies you want
 Join courses
 Free / paid / live / online
 Watch video tutorials / video courses
 Follow tutorials
 Just search in Google
 Read books
 Read articles / blogs
11
Free Courses for Developers
 Telerik Academy – academy.telerik.com
 Free software development courses + videos
 HTML5, C#, algorithms, ASP.NET MVC, mobile
development, cloud development, SEO,
software engineering, QA, high-quality code, …
 School Academy – schoolacademy.telerik.com
 PHP, Web development, HTML5, JavaScript,
C#, .NET, databases, SQL, SQL Server, MySQL,
ORM, ADO.NET EF, WPF, 3D game
development, embedded systems
12
Free Courses for Developers (2)
 Kids Academy – telerik-kids.com
 Free C++ programming courses
 For 9-13 years old children
 Algo Academy – algoacademy.telerik.com
 Free preparation for the informatics contests
 Algorithms, data structures, competitive
programming for contests and Olympiads
 Web Design, HTML, JavaScript
 http://tiny.cc/frontend-videos
13
Free Courses for Developers (3)
 PHP & MySQL
 http://tiny.cc/php-mysql-academy
 C# Programming and Algorithms
 http://tiny.cc/csharp-videos
 ASP.NET MVC Development
 http://tiny.cc/aspnetmvc-videos
 ASP.NET Web Forms Development
 http://tiny.cc/aspnet-videos
 Search Engine Optimization (SEO)
 http://tiny.cc/seocourse-videos
14
Free Courses for Developers (4)
 Mobile Development
 http://tiny.cc/mobile-dev-videos
 iPhone Development
 http://tiny.cc/iphone-dev-videos
 Android Development
 http://tiny.cc/android-videos
 Databases
and SQL
 http://tiny.cc/databases-academy
 http://www.db-class.org
15
Free Courses for Developers (5)
 High-Quality Code
 http://tiny.cc/quality-code-videos
 Game Development
 http://tiny.cc/game-dev-videos
 Java Programming
 http://tiny.cc/java-dev-videos
 MIT OpenCourseWare
 http://tiny.cc/mit-ocw-dev-courses
 Stanford Open Engineering Courses
 http://see.stanford.edu/see/courses.aspx
16
Step 3: Practice,
Practice, Practice!
Work on Real-World Practical Projects
Learn by Practice
 There is only
one way to learn programming
and software development
Practice, Practice, Heavy Practice!
 Most people learn the basics
of programming
in 5-6 months to 1 year (8-10 hours / day)
 To learn coding well you need to write
30 000 – 50 000 lines of code (at least)
 To become an expert you may need
3-5 years (full time – 8-10 hours / day)
18
Practice Every Day for Years
 To become a good developer you need to:
Practice programming
every day for few years!
 Solve few hundreds of programming tasks
 E.g. all exercises from the Intro C# book –
introprogramming.info/intro-csharp-book
 Create few larger practical
projects
 E.g. create your own simplified Facebook
 E.g. develop your own accounting software
19
Create Real-World Projects
 Creating
real-world projects is essential!
 Watching videos / reading books in not enough
 Work on practical projects every day
 For Web developers
 Learn Web design, HTML and some CMS system
 Learn ASP.NET MVC or PHP or Ruby or Python
 Create your own web site / blog
 Create at least 5-10 web sites and applications
 Create your own Facebook / Flickr / YouTube / …
20
Create Real-World Projects (2)
 For desktop developers
 Learn C#, databases, SQL, EF and WPF
 Create your own video player / Minesweeper,
Tetris / calculator / Windows explorer / Paint
 Create your own accounting software /
warehouse management / retail system
 For game developers
 Learn C++, OpenGL and 2D / 3D graphics
 Create your own Popcorn / Xonix / Tetris
 Create your own 3D striker game
21
Create Real-World Projects (3)
 For mobile developers
 Learn some of the mobile platforms
 Android / iOS / Windows Phone / Blackberry
 Along with the languages, APIs and tools
 Create at least 5-10 simple applications
 E.g. Tetris game / calculator / alarm clock / gallery
viewer / mp3 player / video player / text editor
 Create at least 2-3 more complex applications
 E.g. chat server + mobile client / foursquare app
22
Create Real-World Projects (4)
 For embedded developers
 Learn to program for 2-3 embedded platforms
 E.g. Arduino + Atmel AVR + PIC
 Learn C language, the tools and APIs
 Learn to control peripheral devices
 E.g. GPIO (input / output pins), buttons, displays,
SD card, RS-232 serial interface, USB interface,
timers, sensors, networking, RFID, Bluetooth, …
 Create 4-5 practical projects: e.g. traffic lights,
card based access control system, MP3 player
23
Becoming a Software Engineer
 For server-side developers
 Server-side development is not for beginners!
 Try to start a job and study at work
 Two possible tracks
 Java + Java EE + ORM Frameworks + Oracle
 C# + .NET + ORM + SQL Server + WCF + WWF
 Learning server-side development is a big effort
 Once you learn programming, it will take 3-5
years to learn server-side development
24
Becoming a Software Engineer (2)
 For database
developers
 Several possible tracks
 Oracle / SQL Server / PostgreSQL /
MySQL / cloud databases
 First learn SQL, database design, database
transactions and database reporting
 Get familiar with database administration
 Get familiar with BI (business intelligence),
data warehouse systems, etc.
 Start a job and learn at work!
25
Becoming a Software Engineer (2)
 For business analysts
 Not for beginners – learn business
and IT, start a job and practice at work
 For software architects
 Not for beginners – learn software development
and practice 8-10 years everyday (full time)
 For software project managers
 Not for beginners – learn to develop software
and practice 7-8 years everyday (full time)
26
Step 4: Join the Community
User Groups, Mailing Lists,
Seminars, IT School, IT University
Join the Community
 To be a developer, you must
join the development community

Join Telerik academy initiatives

Enter in the best High School / University
related to your goals in your area

Join to the user groups in your area

Take part in their seminars and events

Regularly visit the forums related to your goals

Join the mailing lists related to your goals
28
Join the Community (2)
 To be a developer, you must
join the development community

Visit regularly any seminars and
conferences related to your goals

Join the local hacker space community

Join any other community organizations

Take part in all related programming contests,
tournament s and Olympiads

Create a blog and share your knowledge / establish
your own events / courses / organizations
29
Developer Communities in BG
 initLab
(hacker space in Sofia) – initlab.org
 varnaLab
(hacker space Varna) – varnalab.org
 SofiaDev .NET user group
– sofiadev.org
 Java users group (Sofia) – java-bg.org
 Oracle user group
 Sofia JavaScript
 Ruby on Rails
– bgoug.org
user group – sofiajs.org
community – bgonrails.com
 Drupal Bulgaria
– drupalbg.org
 Joomla Bulgaria
– joomla-bg.com
30
Developer Communities in BG (2)
 Photoshop Bulgaria
 SQL & BI Bulgaria
– photoshop.bg
– bgsqlgroup.com
 BG PostgreSQL Group
 Silverlight
 NLP Club
– bgpug.groupsite.com
Bulgaria – silverlight.bg
Bulgaria – nlpclub.devbg.org
 SharePoint User Group Bulgaria
 Azure User Group Bulgaria
 Flex User Group Bulgaria
– sugbg.org
– azure.bg
– flex.riabg.org
 C++ Bulgarian User Group – cppbg.devbg.org
31
Developer Communities in BG (3)
 Scrum Bulgaria
 Linux Bulgaria
– scrumbulgaria.org
– linux-bulgaria.org
 Linux for Bulgarians
 iPhone Bulgaria
 Solaris
– linux-bg.org
– iphone-bulgaria.com
BG User Group – bgsug.filibeto.org
 Bulgarian Association
of Software
Developers (BASD) – devbg.org
 Nakov.com Portal
for Developers – nakov.com
32
Step 5: Start a Job
Start a Job in the Software Industry
Learn and Practice at Work
Start a Job as Developer
 The best way to learn
real-world
software development:
Start a Job as Developer!
 Working on real-world commercial projects is
essential to gain practical skills and experience
 The best developers learn
their job at work
 Start by learning programming at home / class
 Start as junior developer and trainee
 Become regular / senior developer / team leader
34
How to Become a
Software Developer?
Questions?
http://www.nakov.com
Download