A guide to launching your software career - Part 4
In the previous part, we began to look at a Skill-based POV and examined the meaning of “full-stack”.
Continuing to look at a Skill POV, there are a few different aspects to consider - design approach, development model and deployment model. There are unique skill sets needed for different variants of these. In design, a greatly neglected aspect is the ability to use a human-centered design approach to ideate and arrive at the best possible solution - this is accomplished using Design Thinking.
Beyond that, the technical design of the system or solution would need to consider the base architecture - can it be built using a loosely coupled services approach like a micro services architecture?
The development model presents many more interesting possibilities. Do we rely on locally installed middleware (such as runtime, messaging & queueing or database) or use a PaaS model and consume these as services on the cloud? Following a scrum agile development approach might make the most sense. How do we ensure our code is secure? Do we use a test-driven-development approach? How much of our testing can we automate? Does pair-programming make sense? So many questions…that can be answered only by experience in each of these approaches and being aware of the advantages they bring and any downsides to adopting them.
The deployment model presents its own set of challenges and opportunities. How often should we roll out updated versions of our software to our customers? The appetite to update might be different for different industries. For instance, an aircraft operation module might not be updated more than once a year, where as a mobile app used for banking can be updated every month. Having a sound DevOps strategy is key to ensuring iterative roll-outs of feature and function. For that, a robust automation implementation is the foundation.
Each one of these aspects bring in a different dimension of skills needed - for instance a python programmer would need to know how to automate test cases for continuous integration and deployment. A release engineer might need to be skilled in containerisation and automating the whole process. The possibilities are many but it also makes it an exciting new world for the software engineer.
Next part (conclusion) : Neglect soft skills at your own risk
About the Author :
Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA.