A discussion on Twitter stirred up my neurons, and I felt this is a good time to put in writing things I've been discussing with people in corridors for a long while.
Say hello to technological inflation
Whether we like it or not, it is in my opinion we are in an age of technological inflation.
We can't recruit easily
Having a fresh memory of trying to recruit just 4 years ago and that of today, the experience is so different that it's really hard to grasp. And if you understand what I'm talking about, you probably agree.
The amount of shallow experience and skillset out there is astonishing, and worse - it is acceptable; companies are rushing out to try and blitz-recruit just to strengthen the lines.
In big companies, HR presses hard to get that rare and painfully needed check-mark. Eventually, a close to 100% rejection rate from engineering is hard to explain to higher management, and engineering are pressed to lower the bar, and are left to sort out the pieces later.
In small companies and startups, new recruits are being swapped out in an unpleasant frequency (to both sides), after those companies realize they didn't do a good job clearing out the minefield of hype and buzzwords and awesomeness from those candidates' CVs.
We can't make our case properly
As engineers and architects, we feel that every choice should be reasoned about and proven to be the right one; or the smart one. And for a lot of cases, if not all, this is justified.
As the saying goes, "we are the choices we make" - I believe this is true for every product we build, and specifically for the sum of technical choices we make.
Due to that, we must understand that the Paradox of choice overwhelms engineers as well. Granted, the amplitude changes:
For example, within the Ruby community (or any such stable community, and defining what is a stable community is a subject for another post entirely) you pretty much are safe with most of the choices you make.
However, in a typical front-end community, you are so completely lost; and after you made your (by all means correct) choice, chances are it will be the wrong one after six months. If you are just picking up a front-end stack, do you start out with Angular? but Angular 2.0 is killing 1.x..., how about React? would that be a smarter move? but Angular has plenty of talent out there already...; and that never ends.
The most painful part is, that in our micro universe - hype fuels the paradox of choice.
That is destructive. It becomes a vicious feedback cycle. Not only you don't know what to choose, you also may end up choosing something that is half-baked, bad quality, or unreliable in the long run.
But it gets worse. Even when you know what's right, you are peer pressured into that moment's hype; and everyone keeps parroting the same agenda. Sounds familiar?
Behavioral economics applied to tech
I suspect even the tech community exhibits some of the behavioral economics patterns like any other community.
Here's one to think about: Open source is 'free', and 'free' makes people do irrational things.
I love open source, and I am personally fueled by doing open source (for reasons mentioned below). But let's ask this for a moment:
- Do we make the same judgement when adopting an open-source product as we do a product which we paid a license for?
- Do we judge it under the same constraints?
The answer is - probably not. But now that we know how we behave, we can counter it (seriously, that book is great). And we can judge open-source products with the same pair of glasses as any other product, with a healthy engineering approach (more on that in the end).
Funny thing is, that I wouldn't even think about that back in 98' when I built my first open source project; as a person who comes from a modest home with limited resources, my motivation was that I wanted to be able to help out others like me.
But 17 years of doing open source later, open source becomes almost an industry, it's a whole different beast where the concepts of altruism and freedom are no longer the sole substance that structure it. As any rich ecosystem it is exploding with options, some of them are completely awesome, and some of them are not.
Sadly, the practice of decision making and making rational choices, didn't get that kind of love. In such a vibrant environment, sometimes, we are overwhelmed, pressured, and pushed into a direction which doesn't match our intuition.
There is hope
Technological inflation, is where our sense of value and the act of judging value becomes useless. Everything is awesome.
Luckily we're engineers (some say artists?), and all we need to do to resolve that mental overhead is go back to basics:
- Measure twice cut once. Every tool, and every product, should prove itself to your problem domain.
- Time proven over just released. All products need time to mature; no matter what they say. If people are counting on your product, give a serious thought before adopting edge.
- Some things are just the same but in different packaging. Learn to identify those and stick to patterns and techniques, not tools and frameworks.
- Test all the f__king time (or really, make a best effort). Prefer platforms that let you do that more easily. Once you have that in place, switching always costs less.
- Listen to your gut, and test your gut every so often. If you have solid and good experience with a product or a tool, that must amount to something.
In some point in time, you get to a stage where you start seeing history repeating itself (in this case, React IS awesome, as was doing WndProc back in win32 days ;).
You see it everywhere. You just don't bother mentioning it anymore or writing about it. You conserve energy, smile in acknowledgement, point people gently at the right direction, and keep on going. And naturally these are the voices that don't get heard as much, sans the occasional blogpost - remember that.
If you smiled and acknowledged this, welcome to being old. And wise. And sometimes grumpy. Embrace it :)