The (Digital) Prospecting
Per definition by Wikipedia “Prospecting is the first stage of the geological analysis of a territory. It is the search for minerals, fossils, precious metals, or mineral specimens. It is also known as fossicking. Traditionally prospecting relied on direct observation of mineralization in rock outcrops or in sediments.”
So the saying “during a gold rush, sell shovels” is a metaphor that suggests that when you recognize a gold rush is happening, don’t try to be the 1,000,001st person to mine for gold, because you will probably fail. Instead sell something that all the millions of gold miners need, like shovels and get rich from selling prospectors shovels.
The Digital Prospecting is just the newest “gold rush”, whereas “the shovels” are the various “industries” that sprung around it - frameworks that overpromise and underdeliver, courses with various tech stacks, interview preparation kits, etc. In a word - developers became consumers in this space.
One can’t help but notice that the real purpose here isn’t to create something that aids developers - although, some of these are quite useful, but rather to create hype and to motivate the flock (developers) to adopt the newest/greatest/latest framework/library out there. Once the hype/fad passes - as it inevitably does - the projects developed using such tools will inevitably get stuck to whatever version they were developed with: or, if one is willing to invest as much time/effort to keep up, then eventually they can strut along.
If and of themselves, each and every one of these tools is not intrinsically bad - to the contrary, each serves a particular purpose, with more or less success. The problem here is the sheer number of them. If one doesn’t pay close attention, they can get stuck, quickly and easily.
How to not get burned
- Be cognizant of the problem you’re trying to solve. Not every problem requires a hammer (i.e. full-blown library/framework)
- Pay special attention to the community around some of these. If the community is lively, and the thing that they’re describing is not in its infancy, then you may eventually trust them. That still doesn’t mean that they can’t suddenly make an unanticipated U-turn, that will make your project hang high and dry.
- Have a contingency plan: be prepared that something may go wrong with an upgrade, and you’d have to either wait for fixes, or fix it yourself.
A brief history of Web Development
As someone who’s been involved in web development almost from its beginnings, I’ve seen all of its developmental phases:
- Monolithic phase - the mid to late ‘90s: a single developer could build an entire site, from db tables to css styles, and everything in between, simply and almost effortlessly. Dev’s best friend in those days were ftp clients (FileZilla, anyone?).
- Compiled code - late ‘90s-early ‘00s: with advents of Java and .Net, code compilation came into fashion. Everything had to be precompiled, in order to be deployed.
- Libraries - mid-'00s: (jQuery, Firebug, httpRequest, etc.). Right around that time, web development entered its diverging phase.
- Frameworks/libraries /micro-services - ‘10s: HTML5, CSS3, Responsive Web Design, Backbone.js, AngularJS, ReactJS, Vue.js, etc.
With the advent of Node.js (2009), the web development space started converging again. Node.js promised that JS could be run on both server and client, thus eliminating the need for server-side languages.
Here’s a short history of web development, listed chronologically. For the most part, it reads like tombstones in the graveyard:
Instead of a conclusion, here’s an example of what could be done by just using core programming language features (JS, in this case):