DEV Community

Discussion on: Cognitive Bias and Software Engineering

Collapse
 
anwar_nairi profile image
Anwar • Edited

Thank you Graham for raising such an interesting and important matter. I feel this has a lot to do (in our computer science domain) with the fact that we expect people to be rapidly operational on never ending new tools and pattern. I guess people try to survive by adopting a confident posture regarding a given technology rather than admitting weakness on it. This is the kind of advice Jeff Besos gave, "fake the job, then learn how to do it". I think it is absurd, unless you need an army of medium competent people to do a very time consuming job.

We should build confident, battle tested principles and patterns, and teach people how to look on the long term rather than pursuing a chimera made of frameworks with "revolutionary ideas" but poor long term vision. In this way I very appreciate your work on EasyCoder because that is the kind of technology that will break through the need of efficient and sustainable tools to do the job.

Keep up with the great articles.

Collapse
 
gtanyware profile image
Graham Trott

These points are well made. I know I'm somewhat more senior than most (to be honest, that's pretty well 'everyone') but I'm not really conscious of having any more memory problems than in the past. However, the rate of introduction of new technologies and techniques is leaving me stranded, and I imagine a lot of others feel the same. If you aren't living and breathing the stuff you rapidly lose your edge.

The problem may be I have to do a lot of varied things these days, each one requiring its own knowledge base. So I could be writing JavaScript code for a few weeks then have to do a couple of weeks on Python. Those few weeks are enough for carefully-constructed mental maps to begin to unwind.

I lived on the French/Italian border for several years and perhaps because I'm not advanced in either language I noticed a similar effect, not finding it easy to change gear when moving from one to the other. If the daily routine means using both there's less switching overhead, but lack of use for even a month or two makes it hard to get instantly back in again.

Human languages don't take on new features as enthusiastically as computer ones, so the problem may well be even harder for us programmers. It takes me many hours to get back into my own code after I haven't seen it for a while, and the problem is much worse when it's code written by someone else (especially if - as noted in my article - they assume I can read it as easily as they can).

I've come to the conclusion that no amount of effort is ever going to bring me up to speed with all of [Angular, React, Laravel, Zend, Spring, ...] and there's no way of knowing which of them is going to be called for by the next job, so I side-step the issue by sticking with the vanilla versions of each language, using wherever possible home-grown libraries that have a similar flavor on each and thereby give me a chance of achieving results. I acknowledge this way I will never get a job at Facebook or in a big finance house, but I don't actually want to work in a software factory; I want a life.