Proactive Lazy Developers

The best software developers are lazy developers.  Let me clarify.

There are different types of developers out there.  In my experience though, there are two basic types: “Hard Worker” and “Proactively Lazy” developers.

Hard Worker Developer

One type of developer is the “hard worker” developer.  They are the type that spends 60 plus hours coding each week.  Maybe they’ll code through the weekend to get their project done.  They will be constantly heads down at their desk, hardly ever taking a break. 

Proactively Lazy Developer

The other type of developers are what I call the “proactively lazy” developers.  They might put in their 40 hours. They might work the weekends.  But, if they have to go above and beyond, they will be incredibly upset.

By these definitions, one would think that the “Hard Worker” developer type would be the better of the two. 

You would be wrong. 

The Problem With Hard Worker Developers

Most people would agree that common sense dictates that if a developer puts in long hours, he is therefore a good developer.  Well, as a developer I would have to ask: “Why is the developer putting in those long hours?” 

There could be many answers to this question, but it usually boils down to these:

1. The business/management is giving them too much work.

2. The developer doesn’t know what they are doing.

This article isn’t about handling the issues with number 1 other than suggesting to hire a great Scrum Master.

Let me talk about number 2.

Software Developer Is More Art Than Science.

It used to be that software development was a very “left brain” activity.  It included a lot of math, and resembled putting together a puzzle. It was very logical and task oriented.  Code was very linear and procedural.  A developer could simply read the code as a paper, from top to bottom.

Coding today is very different.  There’s very little math and developers are faced with highly complex abstractions.

Abstraction In Coding

Since coding is so abstract, this requires the developer to use both right and left hemispheres of their brain.  They need to be able to understand the entire system at a high level before they can write a single unit of code.

Here is a list of patterns and principles I need to be aware of while coding a simple web app:

  • Object Oriented Principles
  • SOLID Principles
  • Repository Pattern
  • Model View Controller Pattern
  • Model View View Model Pattern
  • Client Server Pattern

These are just patterns and principles on how to code.  On top of that, there are the frameworks.  Once a developer fits in the frameworks needed, then there’s are the third party system integrations.  And on top of that, providing a great user experience with the GUI.  Not to mention the endless list of different technologies that are used to make a single web app: HTML, CSS, JavaScript, servers (ASP.NET, Java, PHP, NodeJS, etc…), databases (SQL Server, MongoDB, MySQL, etc…).

Putting all this together to create a product/system that is usable, efficient and highly maintainable will take more than just a left brain mentality with the developer.  It’s a wholistic endeavor that requires both logical and creative thinking to be able to compare and contrast form (how code/systems fit together) and function (what each unit of code does) to create a work of art.

Here is where I point out why musicians/artists make better software developers than scientists.

Hard Worker Developer And Abstraction

The “Hard Worker” developer is usually the one that has a difficult time with abstractions.  They code in a linear/procedural way, thus writing code that is not extensible.  When they have to add more features, they have to add the features in a way that will compromise the older fully functioning features, making both brittle.  After a year or two of adding features, one will find themselves in a position where there are more bugs that feature requests.  And when a bug is fixed, more bugs appear.  With all these issues, it’s not hard to see why these types of developers have to put in the long hours.  This is the result of a lack of wholistic thinking in the development of the application. 

Proactive Lazy Developer

The “proactive lazy” developer is a developer who will put in the extra time up front (proactive) to build a highly abstract and efficient system so that they can be lazy in the future.  They thrive on seeing they’re productivity soar as they add features to their system.  They love seeing their bug list empty, or that they can fix bugs in minutes, not in days. 

Laziness As A Virtue

When I say lazy, I don’t mean that they don’t do anything.  A “proactive lazy” developer isn’t totally lazy.  They love to code and probably loose themselves while they do.  What I mean is that they don’t like to have to continually put in the hours to achieve a goal.

One reason is doing this type of coding is exhausting.  A “proactive lazy” developer is going to do anything they can to reduce their overall energy expenditure over time.  They will even write and provide documentation to those with questions so that they won’t have to be bothered.

The laziness will also be reflected in their work.  Software should make life easier, and a lazy developer is all about making life easier.  You will see that a “proactive lazy” developer will focus on making the system as easy as possible to use.  They might even put in some easter eggs (hidden features) just to allow them to more easily use or test the system.

Final Thoughts

So when you’re hiring a developer, ask them if they are lazy or hard worker.  If they say lazy, HIRE THEM!

Leave a comment