The Beginner's Fallacy
Helping onboard beginners is a hot topic right now in software development. It is very good that this is important to people as we need new software developers. However, I have noticed that many of these developers are finding it difficult advancing beyond beginner. This is especially evident when they are taken out of their current development environment.
Beginners require guidance and a set of rules to follow. This has been shown time over time to be an effective strategy for learning. The rules/principles/laws, whatever you want to call them, are based upon the experience of more advanced developers that essentially boil down to “here is what you want to do most of the time”. They are a great substitute for experience. They also fit in very nicely with the notion of Convention Over Configuration. But unless you are stepping outside of your framework the advantage of COC may turn into a career hindering disadvantage.
I am a big fan of Convention Over Configuration. I was first exposed to it with Ruby on Rails and I like that Ember.js has been following this path as well. However, I also believe that it can become a crutch for beginners. The rules that they are following coupled with the low friction environment of COC leads to a developer experience that does not present too many obstacles to be overcome. Learning requires challenge. You meet a challenge, you learn how to overcome that challenge, you move on and now that experience is a tool you can wield in the future.
The market being flooded with beginners along with COC frameworks should produce an environment that is heavily favored towards employers. (buyer’s market) In most cases these developers will be able to accomplish most of what a very experienced developer can accomplish. This is great for the company’s bottom line but not so good for the individual developer’s own career growth.
Instead, if you are interested in advancing beyond being a beginner, you must get out of your comfort zone. This is going to require you to put more time into your craft than your job necessarily allows. Try new software languages, try old software languages. Go read SICP. Attend meetups, read papers, contribute to open source. Contribute to open source even if you think your PR won’t be accepted. All of these things will take you out of the comfort zone that your daily work gives you, but you’ll grow and become a better (and more in demand) developer for it.