In the beginning The Programmer created the Code and the Documentation.
The Documentation was brief and inaccessible, ambiguously explained functions were deeply hidden, and a misguided cloud of ignorance was hovering over the flocking Juniors.
And The Programmer said, let there be more code, and there was more code.
The Programmer saw that the code was good, and called it Framework. And there was Code, and there was Framework the first day.
And that ladies and gents, boys and girls, aliens and superheroes, is basically modern software’s Genesis. Like a kid being born. Barebones and no other instruction manual than your parental instincts. If your instincts happen to be bad, may the Gods of Kobol help you… oh, wait! We have StackOverflow, we’ll just do whatever it says there and we will all be fine. Look behind me. All ten fingers crossed. A feat in itself.
Unfortunately, we may joke all we want, the struggle is real. From junior to senior developer, programmer, coder, call it whatever feels more hip to you, a StackOverflow dependency has been created and embedded deeply into the software development industry. Yes, industry. It’s not a societal thing, it’s not what software engineers do as a trend. No, it is a lot more than that. For some odd reason an active StackOverflow profile is now required to apply for certain software development jobs — even junior roles. Excusez-moi?
The Mentor Aura
Apparently, there is a spreading impression among recruiters — particularly on LinkedIn — that a good developer can only be a good mentor if she or he contributes with code to people’s questions on StackOverflow, and/or moderates other people’s answers. Being a top x% contributor is a badge of honour and should be worn with just as much pride as an MIT or Harvard degree. Also your biography as the Mother Theresa of all coders is expected to be published anytime now.
The Experience Wand
It’s commonly concluded that answering for the umpteenth time the question “How to write a loop that reads my jayson.” is a clear and indubitable indication of one’s experience in software development. It’s also considered by my mum and dad to be downright wizardry, and by all means worthy of a pointy hat and a star-shaped lollipop on an unusually long stick. Nevermind that JSON was spelled wrong, and the other 5000 questions and their 10–100 answers differ only by the data in the JSON, one must make sure the 5001st “variant” of the question gets a “unique” take on a “seemingly trivial” problem.
The Sociophile Crown
“I am a top x% contributor said he” while “humbly” accepting the flowing bits of ovation coming to greet him from the furthest corners of the World. And thus the developer was validated in the eyes of the crowds until the end of … electricity and internet connection. And then the emperor was naked. And everyone laughed.
Except that none of the above is actually funny. It’s not even sad. It’s alarming. It spells disaster that we live in a world and we work in an industry where assumptions are made based on extremely fluid realities. The downright ridiculous assumption is made that StackOverflow is going to be there tomorrow and the foreseeable (say 20 years) future. Has technology not taught us already that expectations like that should under no circumstances be made? Have we not learned by now that even software giants like Amazon can fail or that a website or social platform can become irrelevant almost from one day to another? Remember AltaVista or Yahoo? Remember any of these 10 failed social platforms? Exactly.
There is another saying “The road to hell is paved with good intentions.” The reality is, that beyond the many mean and infamous S.O.Bs, many StackOverflow users are genuinely great people, and donate their time to help, the same way as I do on Quora, and are excellent professionals who not only have many years of experience, but also a nice collection of programming intelligence collected and bound into dead-tree format books. Unfortunately there is a very good reason why they are there, and keep being there: poor documentation. I am going to make a brave assertion here …
StackOverflow and other programming Q&A sites exist for no other reason, than teachers failing to teach, and programmers failing to write educated documentation.
There. I’ve said it. Not excluding myself. I have eight fingers pointing to everyone else, two thumbs to myself. Writing bad documentation, or no documentation at all, poorly commenting code is a struggle for every developer, myself included. We have all dug ourselves collectively in only eight years, into the StackOverflow grave.
As software engineers we tend to forget that the truly valuable part of software, is the intelligence and the thought-process behind it, not the code itself, and we let ourselves and everyone else down by not being as meticulous about documenting, as we are about the programming.
We have a trillion + 1 frameworks out there, hundreds of living programming languages, an ever increasing number of libraries and plugins, be that for development, testing or production, yet when it comes to documentation, all you hear is wind-chimes.
It’s probably the unpopular way of putting it, but StackOverflow does not solve anything, and it certainly should not be part of the software industry. It’s a symptom of a disease that gets increasingly neglected. It produces spoon-fed developers who stumble and fall over relatively simple issues — because let’s face it, StackOverflow is no place to discuss your large 200.000 lines project — end up being unproductive and lost in an offline environment, and half the time won’t know how to explain their own code, not to mention the thought-process behind the application they’re working on. All of this, because language, framework, API and library creators tend to write lacking documentations that result in confused developers looking for help elsewhere; tens and hundreds of versions of books about the same topic, whereas if the documentation would have been written the way for instance jQuery’s was/is, the software industry would be in less trouble and the first result in Google would be a link to the docs and not to StackOverflow.
It’s been proven over and over that our brains retain information when there is some considerable effort spent in acquiring it, otherwise it’s dust in the wind.
Software development needs people who think, who put two and two together based on previously acquired information and make connections that are otherwise not obvious.
But documentation is the crux of it, the flowerbed if you may, of an evolving engineer. Without it we end up being paraplegic programmers who spend more time fiddling with our crutches such as StackOverflow than actually writing solutions for problems. Educated and verbose documentation should be, and must become just as important as quality software. In fact it has to be seen as one and the same entity.