I first started my coding journey back in 2012 after i granted the Ministry of Communication and information Technology (MCIT) scholarship to study the .Net Framework for 9 months, I’m very grateful having granted this opportunity to be exposed to the software development industry,I was working in sales that time at a Multinational and wasn’t fully dedicated to the course so i decided to resign and start a new career from scratch.
Despite that we had intense +1200 hours of learning and studying we lack the real life experience, so the very reasonable thing to do after the course is to gain a real life experience by getting an entry level position in a software house, sounds about right but it wasn’t the case for me as i live far outside the capital and there was completely zero opportunity in my home town, nor was able to relocate at that time. So i tried to break into the freelance world by setting up a couple of accounts on Upwork(Odesk back then), Elance, Khamsat(The Arabic version of Freelancer). But it was kinda hard to land a project with the fierce competition especially with Indians who willing to accept projects at a very low rate.
On the other hand i constantly was trying to advance my skill set with enrolling for a couple of “MOOC” Online classes such as CS101 Building a search engine using python, and Web applications from Udacity, and read a couple of Head First Series from O’really, Head First C# for example, which i highly recommend.
The one mistake i have made and you should avoid is that, i started to learn the hell i think it’s going to land me a job, so every time i saw a job post require a specific set of skills I immediately jump and learn it thinking it is the current trend and hoping that i might get a job soon, so learned php, python, wordpress, android and more.. instead of focusing on one technology and become good at it i kept going from one tech to another thinking that way im getting better while in fact i im not. If you're anything like me i highly advise you to stick to one programming language, and master it. for me the answer was the .Net framework/C#, Not only it’s easy to learn and use with the cool IDE and intellisene, there is a huge support and community behind it, it’s a very powerful yet easy to learn and i highly recommend it for a newbie, im not an expert to list every single advantage why you should go with Microsoft but to name a few:
- Easy to learn yet very powerful and you can build the hell you want, desktop, web, mobile Using Xamarin to build Android and IOS apps using C# (which recently became free), Game Development using Unity
- Microsoft announced that the latest ASP.NET version is now open source and you can develop/host .net applications on Linux or any platform
- Huge community support
- Object Oriented
Anyway whether you will go with the .Net, Java, Python or Ruby... just remember to stick to one technology and master it. A few skills that you need along your server side language:
- CSS and Css framework(Bootstrap)
- Version Control like (Github)
Hopefully you will land an entry level/junior role as a software developer, Later on as you grow as a software developer and you want to join the kick ass companies Facebook, Google, Microsoft etc, you definitely need to learn and understand Algorithms and Data Structures, a good book that i recommend is “The Algorithms Design Manual” by Steven S.Skiena, Also a must have skill for a good software developer is problem solving, “Think Like A programmer - an introduction to creative problem solving” by V.Anton Spraul might be a good start, on a side note. those are a few publishing companies that i recommend, Apress, Itworx, O’really.
And if you are a video tutorial type of guy there is Pluralsight, Tuts+ and Treehouse.
Software Development is a very challenging career path and you will have a lot of fun pursuing it, and it’s worth every bit of hard work and time you put in, professionally and personal wise.
Until Next Time..