I have been working in the software industry for almost a decade now. As a result, I was in different teams, some large, some small, and sometimes all by myself. This post will be about my encounters with different types of engineers in the past.
In one of my jobs, I was working with a particularly opinionated web framework. This was great for my team at the time because it enforced a consistent coding standard. However, this framework also required a lot of boilerplate code.
On one rainy morning, after getting assigned a problem to solve, I immediately created the boilerplate code by moving my fingers across the keyboards with the speed and agility comparable to an Olympic 100-metre runner. Then, I noticed one of the engineers barely touched the keyboard at all.
"How lazy!" - I thought to myself - "He won't have anything to show at due date!"
When the due date came, we presented our work and, lo and behold, his work is completed with the boilerplate code, business logic, the lot.
"Impossible! Did his fingers move so fast my eyes could not see them?" - I mumbled as I desperately tried to make sense of the situation.
I later met the "lazy" engineer at the water cooler to ask about his secret technique. He happily showed me the script he wrote to generate all the boilerplate files that I was furiously typing up. My job became much easier from that day onwards.
I love to work with "lazy" engineers because they want to work smart and finds ways to do their job more efficiently.
On one of the earliest projects I worked on, we used to use FTP to connect to the server and copy files over ( I know! I'm a dinosaur! ). This was a manual and tedious process. So when I set up the CI/CD pipeline for said project, I was happy with myself. I was on cloud nine!
"I automated the process, I learned from the 'lazy' engineer!" - young me virtually patting myself on the back.
The process stayed like that for a couple of months. Then, an "impatient" engineer joined the team.
He complained. A lot.
He complained about how slow the build process was.
He complained about how long it took to completely deliver a new build.
The young me was very hurt. How dare he attacked the process that I poured my heart and soul into? How could he be so impatient? Building only took 15 minutes and delivery only took about 45 minutes! Speed is relative. My "impatient" colleague patiently explain that we could improve the process further. Within an afternoon, he worked his magic and reduced the build time to 3 minutes and delivery time to 10 minutes. As I took off my rose coloured glasses, I realised I had been foolishly patient with the existing process and stopped looking for ways to improve it.
I love to work with "impatient" engineers because they want to make things better and faster. They also do not mind getting their hands dirty and get the work done sooner than later.
I am the type of person that hates arguments. So I spent a good portion of time earlier in my career not voicing my opinions in meetings, just so I don't have to argue with others.
One day, an "opinionated" engineer gave me feedback saying he agreed with a lot of my opinions and would love to hear them verbally.
"Verbally?" - I asked - "Do I normally communicate my opinions non-verbally?"
"Yes, in your code."
Mind blown. Coding is a way for software engineers to express themselves. Code does not lie, and it's loud and clear what our intentions and opinions are. Through code, we communicate how we think problems should be solved.
The "opinionated" engineer also explained to me that certain ideas are better communicated verbally. Having an opinion is good, voicing it is better and discussing it with others is a great way to materialise ideas into practices, standards and products.
I love to work with "opinionated" engineers because they effectively communicate their opinions and help others have their voice heard.
One common trait of the engineers I worked with is that they are respectful. A respectful engineer treats all their colleagues with respect, regardless of their job title, background, sex, age, etc.
An "opinionated" engineer without respect for others' opinions does not listen to others and only wants to do things their way.
An "impatient" engineer without respect for others' processes probably looks down on them without offering ways to make things better.
A "lazy" engineer without respect for others' time probably does the minimum just to not get fired.
A respectful engineer is who I always strive to be and whom I want to work with.
I worked with "lazy", "impatient" and "opinionated" Software Engineers, and I loved working with them. Does this sound like you? Do you have your own favourites? Let me know via Twitter @eddeee888. 🤙
Want to be surrounded by amazing people you'd love to work with? Join the Duel of Doves community!
duel of doves is a curated community, created to encourage thought-provoking discussions through connecting and collaborating with like-minded people. A professional online home away from home, sans the office politics, where we can be ourselves and get sh*t done.
Get the duel of dove’s wrap-up sent directly to your inbox.
Follow us on instagram