Getting Hired as a Software Developer

With every tech startup founder I’ve spoken to in the last 3 months, there seems to be a unanimous concession that the most recent fresh graduate/intern batch of software developers are the worst ever. 
This happening in a time where the cost of going to universities is at its highest, with lecturers and admin staff paid the highest with the least amount of industrial experience.
If there has ever been an inflection point in the history of formal education to question its value, now is the time.

The problem isn’t that there are not many good jobs as software developers. It’s quite the contrary. There are way too many openings. The problem is that many youngsters fail to provide enough value as a hire to justify getting the job. So in a time like this, how does a fresh graduate software developer find a job? On a macro level there are two possible things he can do;

  1. Complain and moan about how he has been dealt a bad hand, rally and try to change government policies to ease getting hire, and start the blame game with his university, or
  2. Make himself valuable with activities beyond the formal system.

If you picked number 2, read on.

Context

Lets first establish what are the different kinds of jobs I’m talking about. Essentially they fall into 3 categories.

  1. Giant corporations who just need man power. These are not particularly high paying, nor do they provide a lot of opportunities for career growth. The need someone to fill the shoes of people who retire, and they are willing to slowly train you to fill the role. Not much skill beyond a relatively good CGPA is required here.
  2. Startups have little resources but provide you with many responsibilities. The might pay low, but the opportunity to learn a lot of things quickly and progress career wise is abundant. These jobs require a reasonably good skill set, not just CGPA.
  3. Product development studios or digital agencies had higher than market rate salaries, and provide a lot of opportunities to learn as they usually have a lot of different clients with different problems. Employees usually work in smaller teams for each client, therefore a good skill set is required for consideration.

The remainder of this article will be discussed in these 3 categories as context.

Considerations for Hiring

There are several things to consider when companies are looking to hire. It may vary from company to company, but the general principles are as follows;

The Fullstack Skillset

The most requested software developer position by far is the vaguely titled “Fullstack Developer”. Essentially it means they are looking for personel who understands a stack, from Templates to Models.

To get into a category 1 company, a developer needs a good CGPA, as well as understanding of simple things like SQL, HTML and CSS. The job often involves running database maintenance, data entry, copy modifications on templates and software testing.

Category 2 companies however will require a candidate to have an understanding and practical knowledge in any popular Fullstack Frameworks. These include Ruby on Rails, Django or any framework built on NodeJS. Interviews in this category of companies often include a simple OOP test as well as a little bit of SQL and OS Shell Scripting test. Job scope often involves developing a new product from scratch and maintaining it.

Category 3 companies will require all of the above, as well as a portfolio of projects that includes DevOps and Unit Testing. The technical interview in these kind of companies will involve deep understanding of frameworks like REST API implementation, integration testing and Continuous Development. The job demands timely execution of product development processes as well as communicating with clients fluently.

Action Plan for Students

A fresh graduate with the following notches in her belt will be able to get a job paying RM 4,000 monthly easily.

Master the Fundamentals

Pick either Python, Ruby, JavaScript, Swift or Java. Don’t know what to pick and crippled by indecision? Pick JavaScript.
Practice doing Object Oriented Programming until the point where you can understand and solve problems using Abstract Classes.

Next, pick a database, either a relational one like Postgres, or a NoSQL one like MongoDB. Practice doing complex create, read, update and delete queries.

Finally, learn about Object Relational Modelling(ORM) or Object Document Modeling(ODM) to interface with your database through your base programming language.

Pick a Stack and Grow

A technology stack is a list of individual technologies for the complete execution of a business process. It includes, at a bare minimum, a template engine for UI, an application logic layer and a database. An example of a stack is the MEAN stack, MongoDB for database, ExpressJS for application logic, Angular for templating and NodeJS as the runtime language. There are many stacks. The simplest to start with is Django for Python, Ruby on Rails for Ruby, Meteor for JavaScript.

For mobile apps, its probably iOS Stack(Swift) or the Android SDK(Java/Kotlin)

Learn to Deploy

A software that you wrote is of no use if its not deployed. In order to deploy, the software you wrote must pass a minimum quality standard.

Easiest deployment for web apps is thorough Heroku. You need to have knowledge of Git, and some shell scripting. You also need to learn the right maintaining a secure connection with users through the understanding of security best practices.

Apps go through quality checking in the App Store or Play Store. You will need to understand platform style guides and security best practices to be accepted.

Exhibit and Network

Please. Get a GitHub account and have some public projects for your employers to evaluate you by. 95% of Malaysian students do not have a GitHub profile to exhibit their portfolio. Its not hard to do. Do not show up to an interview with only an Academic Transcript.

Attend events and network. Impress professional by giving free advice and get their attention by showing them your work. Malaysia is blessed nowadays with an abundance of tech events to attend. In my experience, MDEC’s iMSC tournament was the best, but AngelHack and several other hackathons are amazing too.

In Conclusion

This problem of having a huge gap in the demand and supply of software developers is a problem that can only be solved by students taking responsibility. Malaysia is in the precipice of a technological boom with tech startups emerging and maturing into good ones. We’re set to become the technological hub of ASEAN, but we cannot achieve without the young leading the charge.