With technology evolving so quickly, developers tend to rely on the internet for most or all resources. Read how you can move beyond lifting online resources and be a better software developer.
When is a developer considered a senior developer? Hays Stanford, a software engineer, answered “when you use Stack Overflow and stop caring about it.”
Developers constantly experience an acute sense of imposter syndrome even after years of coding. With technology evolving so quickly, it makes us feel completely foreign to technologies that we were once familiar with. Not to mention, code that was written just a few months ago could seem so peculiar to us.
In order to get up to speed with the ever-change technological improvements, the solution has always been to depend on online resources. Scott Hanselman received an email from a young developer asking - am I really a developer or just a good Googler?
As much as it deserves an answer, there was an ongoing joke about the IEEE changing the field of computer science to “Googling Stack Overflow”. Taking this thought to the next logical step leads us to an army of Full Stack Overflow Engineers.
According to a study, human brains are capable of storing over one quadrillion bytes of information. But we cannot seem to remember how to exit VI or recall what the “→” operator does in C++? Well simply because our brains have the added work to sort and prioritize that vast amount of information, and more of which gets accumulated every day.
This then justifies us to not feel bad about our Stack Overflow Driven Developer ways right? The real professional talent and skill from a developer would derive from our ability to turn intangible ideas into logic that solve real problems, entertain us, or provide pleasant distractions. Wasting brain cycles on obscure sorting algorithms is pointless for whiteboard coding sessions when interviewing.
Though it may be a concern that a developer’s coding skills relies on Googling, it is all in the perspective of what the end results are when we access our second brains. If we have forgotten the way of doing something but know that the syntax is somewhere, it is still justified to search. If you are looking for ideas on how to implement something, researching over approaches is a legitimate route.
The main reason to Google Stack Overflow is to directly copy code and move on. Be it on a tight deadline or that the code is just boring, you could just search on Google if someone else has already written the code you need. You finally found it by a simple search. The code has a ton of upvotes with highly supportive comments. Why not use that code instead of wasting time to rewrite what is already online?
This is where problems from our programming efforts start to arise. It is easy to go into cut and paste mode. But you do not understand the provenance of code, reasoning for the decisions made in the code, or the risks and implications of using the code that can lead to unexpected issues.
In an analysis of Android apps by IT security researchers a few years ago, the results showed:
“15.4% of the 1.3 million Android applications analyzed in the study contained security-related code snippets from Stack Overflow. Out of these 97.9% contained at least one insecure code snippet”
It is not a critical security risk at every instance when you use the code. But what if this was a mobile bank application holding personally identifiable information? Would this be an issue if the software enabled a backdoor to stealing passwords? There are so many ways that could go wrong with unfamiliar code.
One might argue that open source is also used without any major concerns. The key difference is that open source is publicly maintained and monitored. Comparatively, code on crowd sourced developer sites and forums is not. The other difference is that open source has started licensing terms, governing its use and distribution.
That is the issue of code on sites like Stack Overflow. The site may govern the code under Creative Commons, but you do not know where the code was originally pulled from. Another group of researchers looked into licensing of code snippets in 399 Android apps, finding 1,279 cases of potential license violations.
A startup founder or bank CTO would be right to be worried about the security, reputational, and operational hazards of copied code. When Mark Birch was reviewing apps by startups, he found all sorts of careless engineering work, including code snippets that were copied directly from coding books. This happens regularly even in large enterprises. Like the case of a developer at Nissan that was caught using code from Stack Overflow verbatim.
As technology gets more advanced, there will be more detrimental outcomes when lifting code. For example, the impact of learning and developing skills for aspiring developers will be greatly affected. Therefore understanding the context behind code will be vital when one progresses to a senior developer.
So the partial answer to the question of “when does someone become a senior developer”, is the ability to read and understand code. This only comes when you explore and ask the questions of code you work with. Can you see the implications, dependencies, and risks, or at least figure out steps to answer those unknowns? That will clearly differentiate between good and average developers.
Developers now have the advantage of learning to be good developers quickly as there are better tools to help bolster those skills. Tools that map dependencies, read code, draw inferences and get insight from code. More importantly, automatic code documentation is starting to become readily available to all. This is the next step to slowly nudge the industry from legions of copy paste coders to confident engineers.