How to Become a Developer in Bulgaria

  • 1,663 views
Uploaded on

Guidelines for Future Software Engineers …

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 Industry

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,663
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
39
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. How to Become a Software Developer? Guidelines for Future Software EngineersSvetlin Nakov, Ph.D.Senior Technical Trainerwww.nakov.comTelerik Software Academyacademy.telerik.com
  • 2. 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
  • 3. Step 1: Define Your GoalsWhat Kind of Developer You Want to Become?
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. Step 2: Find Resources Join Courses, Follow Tutorials, WatchVideos, Read Books, Articles, Blogs, etc.
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. Step 3: Practice, Practice, Practice!Work on Real-World Practical Projects
  • 18. Learn by Practice There is only one way to learn programming and software development Practice, Practice, Heavy Practice! Most people learn the basicsof 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. Step 4: Join the Community User Groups, Mailing Lists, Seminars, IT School, IT University
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. 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 Software Developers (BASD) – devbg.org Nakov.com Portal for Developers – nakov.com 32
  • 33. Step 5: Start a JobStart a Job in the Software Industry Learn and Practice at Work
  • 34. 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
  • 35. How to Become a Software Developer? курсове и уроци по програмиране, уеб дизайн – безплатно BG Coder - онлайн състезателна система - online judge курсове и уроци по програмиране – Телерик академия форум програмиране, форум уеб дизайн уроци по програмиране и уеб дизайн за ученици ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET http://academy.telerik.com програмиране за деца – безплатни курсове и уроци ASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC безплатен SEO курс - оптимизация за търсачки алго академия – състезателно програмиране, състезаниякурсове и уроци по програмиране, книги – безплатно от Наков курс мобилни приложения с iPhone, Android, WP7, PhoneGap уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop Дончо Минков - сайт за програмиране free C# book, безплатна книга C#, книга Java, книга C# Николай Костов - блог за програмиране безплатен курс "Качествен програмен код" безплатен курс "Разработка на софтуер в cloud среда" C# курс, програмиране, безплатно
  • 36. Free Trainings @ Telerik Academy Telerik Software Academy  academy.telerik.com Telerik Academy @ Facebook  facebook.com/TelerikAcademy Telerik Software Academy Forums  forums.academy.telerik.com