Software systems are a collection of bits recorded on a storage device. It might seem that once a software application works, as long as the hardware it runs on is functional, it should just keep working for eternity. So, why is "software maintenance" even a thing? There is no physical wear and tear, and there are no materials that can rot or rust away. Software systems are not affected by the atmosphere, pollution, the weather, and there isn't anything that can physically break. However, this … [Read more...] about Software Maintenance, Understanding the 4 Types
The tech industry thrives on innovation. Building innovative software products requires constant design and architecture of creative solutions. In that context, I am not a fan of design by committee; in fact, I believe that it is more of a disease than a strategy. It afflicts teams with no leadership or unclear leadership; the process is painful, and the results are abysmal.
Usability issues plague software products designed by committee. Such products look like collections of features stuck … [Read more...] about Avoid Design by Committee: Generate Apart, Evaluate Together
Being able to build high-performing engineering teams is a non-negotiable skill for engineering leaders. It is the difference between successful and failing technology companies.
I have been thinking about this topic for many years, studying and decoding what exceptional leaders do to create great teams. During this time, I refined a list of what I believe are 11 must-have elements. I kept it in one the many thousands of Evernote notes that organize my life, and I finally decided to share … [Read more...] about 11 Essential Elements to Build High-Performing Engineering Teams
Like most industries, tech doesn't have a standard for roles and titles, even in the area of engineering leadership. However, some patterns can be found replicated in most software companies. I've discussed the technical side of this equation in Software Engineering Job Titles Explained and 19 Types of Developers Explained.
In this post, I am focusing on engineering leadership roles and what they are accepted to mean. Depending on the company, some of these roles are also job titles; others … [Read more...] about 8 Engineering Leadership Roles Explained
When I was programming 100% of my time, it was my job to write robust and maintainable code. My work needed to be well documented, designed with the proper level of abstraction and as bug-free and efficient as possible. I also had to come up with good ideas for how to resolve problems and create viable products.
As a developer, I had to be right a lot of the time. Being wrong when writing code resulted in bugs and other issues. Regardless of code reviews and testing, dumb ideas in software code … [Read more...] about 5 Reason Why I Love Being Wrong