760 likes | 1.28k Views
How to Become a Software Developer?. Guidelines for Future Software Engineers. Svetlin Nakov , Ph.D. Telerik Software Academy. academy.telerik.com. Senior Technical Trainer. www.nakov.com. Table of Contents. Step 1 : Define Your Goals Web / Mobile / Java / Embedded / QA / …
E N D
How to Become aSoftware Developer? Guidelines for Future Software Engineers Svetlin Nakov, Ph.D. Telerik Software Academy academy.telerik.com Senior Technical Trainer www.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
My Goals 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
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
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
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
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
Defining Your Goals (6) • Is your desired technology / positionaccurate to the modern trends? • You might want to be a spacecraftdeveloper 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
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
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
Free Courses for Developers (2) • Kids Academy – telerik-kids.com • Free C++ programming courses • For 9-13years 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
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
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 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.aspx
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 write30000 – 50000 lines of code (at least) • To become an expert you may need3-5years (full time – 8-10 hours / day) 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 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 / …
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
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
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
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
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! 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-8years everyday (full time)
Developers Step 4: Join the Community User Groups, Mailing Lists,Seminars, IT School, IT University
Join the Community • To be a developer, you mustjoin 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
Join the Community (2) • To be a developer, you mustjoin the development community • Visit regularly any seminars andconferences 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
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
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
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
JOB Step 5: Start a Job Start a Job in the Software IndustryLearn and Practice at Work software IT
Start a Job as Developer • 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!
How to Become aSoftware Developer? ? ? Questions? ? ? ? ? ? ? ? ? ? http://www.nakov.com