Companies hire software engineers for coding. In old waterfall model days, engineers used to get a nicely written requirement document along with UI mockups, where to put a button and what happened when you click on a button. The role of a software engineer was to transform those mockups into working software. That resulted in many issues, a huge waste of code as the whole software development process depended heavily on business managers and if he or she failed to understand requirements properly it will result in a huge mess later on.
In 2001, several thinkers in the software world came up with an agile manifesto to solve this exact problem using a process called agile software development. Here the entire team is involved in software development and there is a kaizen process of continuous review and improvement. This has become a standard norm in the software industry right now where people practice agile in different forms such as scrum, kanban, etc.
While agile has solved many issues with the traditional waterfall model, has it really brought colors into a software engineer’s life? I feel that the majority of software engineers’ life still remains mono-color and dull where they spend the majority of their time at work in one primary activity: coding. I am an avid programmer myself and have a special love for coding, but in the end, we write code to solve some real-life problems. I have a friend who is a BI analyst. His CEO told him once,
The key you are pressing on your keyboard, is that going to make any difference in your customer’s life? If not, why are you pressing that key?
This statement is quite insightful. I urge all the programmers to do a deep reflection on their own habits and work style and see how much they align with the statement above. Just doing coding confines one in a boring & dull zone of a mindset that blocks one’s further progress. I call this a code-monkey mindset. A code monkey is a person who thinks,
- He/She gets paid only for coding
- If time is spent in meetings or brainstorming or client visits, he or she would think it was a waste of time. The thinking goes further to “Oh I am wasting my time in these activities, when will I do my work”. Wait… isn’t those activities actually your work?
- The only way to make progress in career is to learn new and hot technologies (which as of 2020 are machine learning, blockchain, etc)
Hence code monkey’s life has only one color.
The opposite of a code-monkey is a superhero engineer. This person thinks,
- He/She gets paid to solve real-life problems
- Thinking about why’s. Why are we doing this software project? What problem does it solve for our customers? Do we already have a solution that can solve the pain (maybe with minor tweaks)?
- Time spent in brainstorming sessions, client visits, contributing to open source, participating in hackathons, making UI mockups all these are integral activities in software development hence they should get the same importance as coding
- The way to make progress is to solve real-life problems (for customers) by providing scalable and usable software solutions that minimize the waste
Hence, the life of a superhero engineer is full of colors, like a rainbow.
I had a friend who was assigned a project where 4 different teams were going to work on it for a year. It was a multi-million dollar project and my friend was just a software developer working in one of those 4 teams. He had a habit of asking ‘why’. He took an initial few days to brainstorm about why we are even doing this project. He figured out that there was some existing software within the company that can be tweaked by a little to solve the client’s pain. He brainstormed his ideas with a couple of stakeholders in that project and in the end, they were convinced the project should be canceled. Not only did my friend get a good hike in his salary but it saved a few million dollars for a company. This was an excellent example of mastering the art of how to write less code which is a must-have quality in a superhero engineer.
We at AtliQ try to promote the ‘superhero engineer culture’ by continuously engaging our engineers in various activities such as,
- Brainstorming sessions. Emphasis on having UI mockups built by engineers before work starts on a story
- Wow Wednesday activities that promote teamwork and engineers have fun and they switch their brains into a different/creative/relaxing zone that impacts their actual work eventually
- Code challenges. Frequent technical seminars and demos
- Open source days to give back to the software community
- Fostering a culture of innovation and ownership by trusting engineers on their capabilities and giving them opportunities to own a software component or a process
Software Engineering is not just a career or job to excel at, it is a way of living, where you strive to learn, think and solve problems. A software engineer’s duty is not just to code, but to solve problems, and to achieve that efficiently, activities like brainstorming sessions, designing architecture, building UI Mockups, using and promoting best practices, and to keep learning. If you consider all of this and have a will to learn and innovate, then no one can stop you from becoming a Superhero Engineer.