how to become a developer in bulgaria
DESCRIPTION
Guidelines for Future Software Engineers http://academy.telerik.com The website and all video materials language is Bulgarian 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 IndustryTRANSCRIPT
How to Become aSoftware
Developer?Guidelines for Future Software Engineers
Svetlin Nakov, Ph.D.
Telerik Software Academyacademy.telerik.com
Senior Technical Trainerwww.nakov.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 GoalsWhat Kind of Developer You Want to Become?
MyGoals
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 / positionaccurate 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 positionswith high demand in the industry! E.g. Web developer / iOS developer
/ .NET Developer / Java developer
9
Step 2: Find ResourcesJoin 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.org15
SQL
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.aspx16
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
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
write30 000 – 50 000 lines of code (at least)
To become an expert you may need3-5 years (full time – 8-10 hours / day)
18
Practice, Practice, Heavy Practice!
Practice Every Day for Years
To become a good developer you need to:
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
Practice programmingevery day for few
years!
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
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
Create Real-World Projects (3)
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
DEV
Becoming a Software Engineer (2)
For business analysts
Not for beginners – learn businessand 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
Developers
Join the Community To be a developer, you must join the development community Join Telerik academy initiatives Enter in the best High School /
Universityrelated 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 – bgoug.org Sofia JavaScript user group – sofiajs.org
Ruby on Rails community – bgonrails.com
Drupal Bulgaria – drupalbg.org Joomla Bulgaria – joomla-bg.com
30
Developer Communities in BG (2)
Photoshop Bulgaria – photoshop.bg SQL & BI Bulgaria – bgsqlgroup.com
BG PostgreSQL Group – bgpug.groupsite.com
Silverlight Bulgaria – silverlight.bg NLP Club Bulgaria – nlpclub.devbg.org
SharePoint User Group Bulgaria – sugbg.org
Azure User Group Bulgaria – azure.bg
Flex User Group Bulgaria – flex.riabg.org
C++ Bulgarian User Group – cppbg.devbg.org
31
Developer Communities in BG (3)
Scrum Bulgaria – scrumbulgaria.org
Linux Bulgaria – linux-bulgaria.org
Linux for Bulgarians – linux-bg.org
iPhone Bulgaria – iphone-bulgaria.com
Solaris BG User Group – bgsug.filibeto.org
Bulgarian Association of SoftwareDevelopers (BASD) – devbg.org
Nakov.com Portal for Developers – nakov.com
32
Step 5: Start a JobStart a Job in the Software Industry
Learn and Practice at Work
IT
software
JOB
Start a Job as Developer
34
The best way to learn real-worldsoftware development:
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
Start a Job as Developer!
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки
уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop
уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC
безплатен курс "Разработка на софтуер в cloud среда"
BG Coder - онлайн състезателна система - online judge
курсове и уроци по програмиране, книги – безплатно от Наков
безплатен курс "Качествен програмен код"
алго академия – състезателно програмиране, състезания
ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия
курс мобилни приложения с iPhone, Android, WP7, PhoneGap
free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно
?
? ? ??
?? ?
?
?
?
??
?
?
? ?
Questions?
?
How to Become aSoftware Developer?
http://academy.telerik.com
Free Trainings @ Telerik Academy
Telerik Software Academy academy.telerik.com
Telerik Academy @ Facebook facebook.com/TelerikAcademy
Telerik Software Academy Forums forums.academy.telerik.com