The Myth of the Full Stack Developer

I don’t need to rehash what Andy Shora had already posted in his blog.

What I am about to discuss here is that, a full-stack developer is a unicorn. Instead, we must accept the reality that in IT, it is either you are a developer or in operations.

Further down the line, a developer can be one of the following:

  • front-end developer — HTML, CSS, JavaScript, Node.js, etc
  • back-end developer — develop apps written in Go, Python, PHP, message queue, NoSQL, Big Data, etc
  • system developer — OS kernel, hypervisor, container, cluster scheduler, infrastructure stuff
  • language developer — these are the cream-of-the-crops. They are the core developers of Go, Rust, JavaScript and others

ICEBERG

Meanwhile, the operations people are those who keep the system and network up and running 24×7 behind the scenes.

In this age where automation is a buzz word, there is a lot to be desired on how we do things in IT. So consider this complexity as my rant in this IT industry.

How can we make it better?

First, we need to realize that the IT industry is still young.

Why?

Let me illustrate.

The operating system and hypervisor can be considered commodities. They are already solved problems. Docker runtime is still evolving but eventually, it will mature as well as the ecosystem of tools around it. And so is Kubernetes, Mesos, Nomad Project, Scala, Apache Spark and the like.

Go (or Golang) is a software engineering feat. And so is JavaScript. They are not perfect but if you know their design goals, they are elegant.

I call this stage, the “functionality stage”.

Software, whether it is infrastructure or a programming language, gets past the functionality stage once they have worked out the minimum viable product (so to speak). That is, it is software that has been pounded and tested by the community, and has passed with flying colors.

In short, it is working.

However, there are caveats.

Software in the functionality stage need some polishing to do in terms of operation and some optimization in terms of performance.

This is where the early adopters get their adrenaline rush. The early enthusiasts want bleeding edge. They know what to expect and they are ready for it. The early adopters are no newbies. They are experts in their respective field or sphere of influence.

I have so much respect for these experts. After all, they have operations bruises as badges of their expertise. They have gone beyond proof of concept and have shown to the world that their software is truly functional.

Which is not to say that this is bad. Otherwise, you run the risk of earning Linus Torvalds’ ire if you say that Git is complex.

There lies the rub.

As Chip and Dan Heath said,

Abstraction is the luxury of experts.

In their quest for ironing out all the bugs and be minimally functional, the experts have lost their way in the grand maze called usability.

Just look at Kubernetes and Mesos. They are too complex to begin with. Do the Hashicorp guys need to teach them the lesson of usability with their Nomad project? This is not about trolling.

This is about understanding usability because once you get past the functionality stage, the usability game kicks in. However, usability must be kept in mind in the first place during the design process.

So what do these experts vs novices and functionality vs usability have to do with a full-stack developer?

It all boils down to usability.

The key takeaway: experts need to consider usability when designing their software. This is not just about developing wrapper around engines.

Usability encompasses

  • simple and minimal interface around engines
  • simple and minimal workflow around processes
  • simple and minimal user interface around user experience

As Brendan Eich have said,

Syntax is user interface.

It all redounds to familiar user interface. When you have simplicity and minimalism around a complex mechanism, it paves the way for a healthy supply-and-demand market for IT professionals.

As the IT industry is getting more complex, it does not mean you have to script your way to automation. It means experts to do what they do best (build engines) but remember, not all people are mechanics.

The challenge in the IT industry is not to blame the experts for their spectacular failure with usability. It means they are getting their way around the functionality stage. The IT industry profession is broad and complex. It has its own specialization just like those in medical industry has their own respective specialties.

Either way, you have to wear the usability hat because everyone in this IT industry is in the game called usability.

Advertisements

Subjectivity aside, leave a reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s