Hany Essam self-taught software developer

Get a Free Nano-Degree from Udacity Through Github

If you are +13 student, you can now benefit from the partnership Udacity and Github recently made, A 1 month free access to All of Udacity Nano Degrees, Its a great opportunity to learn by doing, as a Nano Degree student you will get the chance to build a lot of applications as this is the main method of Udacity's learning process.

Some of the Available Nano-Degrees from Udacity are:

  • Senior Web Developer Nanodegree
  • Android Developer
  • Data Analyst
And more..

First you need to apply for a student developer pack from Github and then you can enjoy the free resources Github offers through a kick ass partnership with a top notch institutions.

Happy hunting.

Full Stack Web Development Coursera's Specialization

Couple days ago i head to Coursera to check their upcoming courses, i came across the Full Stack Web Development Course Specialization, Where you are going to learn and be exposed to a lot of technologies, the Specialization consist of 5 courses and a Capstone Project at the end of the course, The Courses involved as the following:

  1. HTML, CSS and Javascript
  2. Front-End Web UI Frameworks and Tools
  3. Front-End JavaScript Frameworks: AngularJS
  4. Multiplatform Mobile App Development with Web Technologies
  5. Server-side Development with NodeJS
  6. Full Stack Web Development Specialization Capstone Project

Sounds Interesting huh!, But there is no way i can afford the course's cost while im unemployed, Luckly i applied for a Financial Aid, and Coursera offered me the Specialization free of charge.
I got excited and finished the 1 week material and assignment in one sitting :), If you can't afford the cost of the course which is 395$ total(79$) each, You too can apply for a Financial Aid and most likely you will get one if you’re from a developing country like i am(Egypt).

Coursera Also offers a Data Science and Algorithms and Data Structure Specializations , Both are very sufficient and a must have specially the Data Science as its the most high demand profssion in 2016 according to a linkedin survey.

Good Luck.

Journey to the Center of Becoming a Software Developer part2

Building on the previous post, I want to say that most software developers are self-taught, and don’t have a CS degree; In fact, I have seen alot of topics on Quora about people wanting to have a career shift into software development, And with the Digital Era we live in today your timing couldn’t be better. Having mastered the skills I mentioned in the previous post will most likely grantee you an entry level software developer role, as a reminder you need to know the following;

  • HTML
  • CSS > Framework(Bootstrap)
  • JavaScript > Framework(Angularjs)
  • JQuery
  • Server Side Language(C#, Java, Python etc.)
  • OOP
  • Database
  • Source Control(Git)

Those are enough to get you started, and I don’t want to complicate things talking about front end and back end routes, Let’s just say that a front end developer only concern with the UI – User Interface -, while the backend developer concern with the Business Logic/Data Integration and the functionality of the application. Either way you want to master both.

The very next thing you want to do is to gain a real life experience, so learn by doing, start building applications, get a portfolio, the benefit of that is you are going to get your hands dirty and will learn more by doing, hence showcase your future employer that you have built stuff, you’re initiative and have a hands on experience, Another way to achieve that goal is to contribute to an open source projects.

3 years ago, i rejected offers because salary was below the average, given that i will have to relocate and it barley will cover my expenses of rent, bills and other stuff, However you don’t want to do that, if I can give my younger self an advise i would say accept the fucking offer, you need a fucking real life experience.
If i only had a mentor!
I learned the hard way, 3 years later now and im willing to accept unpaid internship to learn and advance my skills.

There is nothing to be ashamed off accepting internship at a late age, as im a big fan of Friends show, I remember when Chandler quit his job and got an internship in advertising as a junior copy writer at the age of 30 while he was married to Monica.
So there is nothing wrong with having a career shift and starting from scratch, if anything, this shows that you are initiative, self-motivated, out of your comfort zone person, and that should appeal employers and head hunters.
Good Luck.

Journey to the Center of Becoming a Software Developer part1

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:

  • HTML
  • CSS and Css framework(Bootstrap)
  • Javascript and JS framework(Angularjs)
  • JQuery
  • 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..

Cheers