We always associate the world of software engineering business with creating magic — by bridging the business needs with technology, by continuously staying at forefront of innovation and by nourishing a culture that put impetus on continuous learning to deliver cutting edge solutions. These aspects create an aura around this industry and make it an attractive destination for many of the smartest brains. They thrive in a knowledge driven business where it is imperative to constantly learn, up-skill and innovate.
But we need to be clear that in doing so – we are stressing on just one dimension of the industry. What is concerning is that many engineers are becoming uni-dimensional. Quest to constantly learn new technologies and try something new consumes them. They are ignoring many skills that are equally important and necessary to succeed. Often, I hear colleagues agonize — “I want to do something new” or “my work is not creative enough” or “I have been doing the same thing and there is no opportunity to be innovative”.
I have seen quite a few talented engineers cringe when the conversation veers towards writing clean code, exhaustively testing the features they have coded, understanding and resolving issues reported by customers, looking at key metrics and dashboards, transparently tracking/communicating progress etc. Many engineers find these activities exhausting, useless time consuming and plain “boring”.
The ultimate reality for any business is “Execution Excellence”. Well executed businesses succeed. Software Engineering business is no different. Executing well requires building discipline around a set of tasks that many qualify as “Boring”, “Mundane” and “Uninteresting”. There is no way you can sustain and run a good business without investing time and effort around these. Having said that, I also believe that every engineer should excel around these so called boring tasks out of their own self interest. Devoting time and developing the discipline to master these tasks is essential to succeed on a long run.
First of all, it helps to “manage time better”. It frees up cycles to learn and to concentrate on making innovations happen. How? It is evident that no creativity is possible in an atmosphere of chaos. The human brain can rarely think well when there is a disturbance. Some quietude is essential. Let us take an example. Can an engineer do any creative work if he/she is consistently bogged down with unresolved escalations and issues? Instead, if he/she factors in time to deal with or prevent the escalations, then the mind is free to work on more interesting things.
Second, it lays the foundation for ‘innovation’ and ‘creative work’ which is what everyone wants. Throughout history, the seed of innovation is sown when people start pondering about ways to make their life easy and liberate themselves from mundane repeatable tasks. The questions I have for people who claim that their job is boring is – “Why don’t you do something about these boring tasks? If you are really passionate about innovating – why don’t you innovate around these activities and automate it? Why don’t you figure out ways to make the time spent on these activities minimal?” Smart people figure out that these tasks are essential for the business and innovate to find smart solutions to manage these.
Lastly and most importantly, It helps build credibility. One builds credibility by committing to do something, owning up that, and delivering the commitments with quality. Credibility is an expanding spiral. The so called “boring stuff” helps to build, nourish and expand one’s credibility. Think about it. Who will trust a critical project with an engineer who is always interested to try new things but never completes on his committed initiatives?
Successful software engineers not only have the required mastery of technology but can also execute well. They strike a good balance between developing knowledge and cultivating the discipline to focus on “the so called boring tasks”. Developing this balance is crucial.