Monday, August 19, 2013

Sri Lankan Software Industry: Hiring Fresh Software Engineering Graduates, the IPL style

Year over year, Sri Lankan IT companies are getting into a bidding battle with each other to hire fresh graduates from our local universities. Mostly from University of Moratuwa.


This year, the average salary offer for a fresh graduate from University of Moratuwa has been 80K rupees, and the news is, the batch top received offers in excess of 150K rupees! In comparison, average senior software engineers with more than couple of years of experience in the industry today are getting salaries in the range of 80K and there are technical leads with 5+ years of experience who are earning less than 150K.


So, a natural question to ask, does it worth hiring a fresh graduate for 80K as oppose to someone with experience? Don’t forget, these 80K engineers have completed their degrees few years back - it’s not like they don’t hold university degrees!


To answer that, we need to look at what makes a good software engineer.


Ability to identify software responsibilities and encapsulate them in the appropriate abstraction: This is the core skill of a software craftsman. It requires understanding of software engineering principles, understanding of the business domain, understanding of the language and tech-stack in use and the skill to see what would trigger a change and what’s more likely to change - all in different levels of details and interests.
While this skill require intelligence and good IQ, it is a skill that should be mastered through exposure and practice. While some fresh graduates would outsmart some senior engineers in a good design, that’s an anomaly than the norm. Exposure to a business domain and mentorship from a seasoned software craftsman are things that’s hard to come by in Sri Lankan universities.


Good analytical skills: This is the ability to understand a problem and solve it in a sustainable manner. Needs understanding of how a given environment work and how the business requirements are mapped. Should be able to see beyond others mistakes, yet understand them and still see a solution, not necessarily idealistic, but practical and sustainable in the given context.
Again, while good IQ helps, to master good analytical skills, one need exposure and practice.


Competency in a given tech-stack: The knowledge what’s at disposal to use and the wit to use only what’s needed. Ability to see what’s sustainable and what’s not. Maturity to resist using every possible new technology in favor of building a sustainable solution.
While this is definitely something that doesn’t demand a lot of experience, it does help in making mature choices.


Software Development Process and SCM: Unfortunately, this is something that even the most experienced in our industry struggle with, even those who preach good process practices, don’t follow them. Even though this is something that could be taught, it’s a different beast in practice. Each of us over the years have practiced different processes and seen many fail - mostly not because of the shortcomings of the process but because of how people practice.
It is arguable in this sense that no experience in practicing a process is better than bad practices that are hard to let go of. But, in my opinion, those who are experienced really know what could go wrong and how to mitigate the risks in the process. And when a new process is proposed they are more likely to understand the benefits than someone without experience.


In that analysis, I think we could safely conclude that for the same salary, hiring an engineer with experience is always a better choice than hiring a fresh graduate, to get the job done.

Now, the question is then, why are companies willing to pay more than their worth to these fresh graduates, taking the risk of losing the loyalty of their current employees who will become underpaid, compared to the new graduates?

P. S. Further reading: http://butunclebob.com/ArticleS.MicahMartin.SoftwareApprenticeship