To Innovate or Not to Innovate?

What is the current state of the IT Industry regarding developers?

The demand for programmers worldwide is huge and I don’t anticipate changing soon. When the demand for developers in a market is higher than the supply, the wages go up. This is the normal cycle in a market economy. What is disturbing although is that the education units (academies and other facilities) are producing more and more programmers in shorter periods of time. I don’t have a problem with this but think over it again. Do you expect a doctor to get his qualification in 6 months or a year?

I’m interviewing programmers for 10 years now and see their preparation cycles get shorter and shorter. Even university education tends to lower the standards for the sake of producing more programmers. I feel with the new programmers today because for 20 years we were growing with the technology and it didn’t feel so overwhelming to us.

What are the implications for young programmers and IT companies?

Young programmers entering the market:

  1. The newly educated programmers are not familiar with simple but foundationally important standards (e.g. web programmer is not familiar with the HTTP protocol, doesn’t know how to send AJAX request without using a third-party library) because their education is on a very tight schedule.
  2. These programmers think that a library can solve problems and if they learn one or two libraries the market will see their potential and will hire them.

What does it mean to learn a library (by speaking of a library I mean here Javascript/Typescript library)? You are learning to call methods or organize your code in a very particular way, dictated by the library creators. Yes, you can achieve some results, but do you know for sure if this is the optimal way of solving your problem?

  1. Often these programmers work for their CV. Without an understanding of the pros and cons of these libraries, they tend to hype whatever is more popular now. There is unconscious fear in them that if you don’t follow the hypes you are sooner than later out of business.

IT companies hiring these programmers:

  1. They have to offer projects done with library A or B in order to attract the attention of the above-mentioned programmers.
  2. They start justifying their choice of library A or B and by doing so, increase the hype in the crowds.
  3. Few developers agree to work on a brand-new idea because it is not hyped yet.

Did I mention above anything about innovation? Or it is more like fast food chewed up for you from somebody else?

You are right, I don’t necessarily associate innovation with using library A or B. Don’t get me wrong, the teams which created library A or B introduced the innovation, anybody else using these is only a follower.

Reasons for the current state in the IT industry

I think there are multiple reasons for playing a role in this. I can’t say which has a bigger impact and if this list is complete. Let’s start with:

Social media

Everybody has the world in her/his pocket and wants to stay on top of everything. Your phone squeaks and peeps every other minute and you have to lookup who liked what or commented on monkey eating a banana but soooo sweet…

Reduced focus span

As a direct result of the increased usage of social media, the ability to concentrate on a complex problem reduced significantly. Even the best monk will quit his meditation if her/his pocket vibrates constantly. I have had smart developers who didn’t raise up to their potential because of constantly looking into their phone screens. One who had admin privileges in our Active Directory installed a script that will pop up every 50 minutes to remind you of having a break. Do you see the irony in this? Occasionally (when nobody of your friends changed their statuses for only so long) you are focused on a task and just then the reminder will pop up and end your state of concentration. We like to be seen as artists working on complex mathematical problems but behave like we are doing repetitive tasks like washing the dishes in the kitchen.

Reduced entry-level requirements

When I started my business in 2010 the CVs’ average for a position was 80. It was difficult but not impossible to find candidates with potential. Nowadays it is significantly more difficult for us to recruit the right candidate.

Focus on visual results and not underlying concepts

The experience comes often with patience. A good software design requires a lot of patience. This aspect is not addressed very well in the agile processes of today. I personally don’t think they are mutually exclusive but often the visual results for the Product Owners (PO) are more important than a sincere fact evaluation and what-if analysis. And here comes again the thorough understanding of the technology in use. How you as a developer will have the stamina to challenge the PO and the team with a request for a design change? Are you willing to confront the management with delivery delays for months because you see a potential design flaw? This design flows ALWAYS bite you in one way or another. Usually uncovering them at the beginning is less expensive than later to say nothing if they are avoided altogether. But somebody must recognize the code smells and be able to articulate potential fixes.

I believe in the fail-fast principle. But let’s compare apples with apples:

We are building a big apartment building with tons of apartments in it. In real life, the civil and structural engineering phases will happen before we start building. There is more involved here than the columns, trusses, beams, and footers that get installed in the building to ensure its stability. It’s also about providing pathways through the building to route all the various systems and to plan for future expansion of the building. Do you believe that the fail-fast approach will work here and why the state imposes high standards in this area? But there are human lives involved, you will say, and we are building software only. Really? Do you recall Boing 737 Max?

Following this chain of arguments, I think we can safely say that every big software project can be divided in at least two stages (to stay in the above terminology): Infrastructure and apartments. We can use agile principles like fail fast, swarm on a problem, sprint with multiple teams BUT for the apartments. Every bath can have different tiles, you name it.

Conclusions

Let’s come back to our thesis to innovate or not in the context of available developers. I personally don’t believe that a company consciously dislikes innovations. I’m making the point that innovation is much more than using existing tools and frameworks.

The only constant in IT is changing. I have seen so many libraries come and go that I’m certain to say that in 10 years we will deal with different libraries than today.

In the last 15 years, I have changed my mindset so far to question almost everything in the existing IT landscape. Imagine Tesla following the hype at the time, which kind of vehicle would have been manufactured? You are right, a combustion engine car.

In my opinion, not every hype today is worth following. Create one framework from scratch and you will understand all the others fast. Your thinking and understanding will change but it will pay off a thousand times during your career. Your financial returns will be much bigger because you are one of the few designed and created something new.

We are hiring young or experienced programmers who are willing to go the extra mile and create new technologies. Sometimes you are dealing with abstract concepts, other times you investigate and implement standards. All this is often frustrating but there are also glories times when you feel like the master of the universe.

If you feel like it is something for you, then we want you! Please provide your CV at office@cleancodefactory.de!