I still remember as boy hearing that sharks never fully sleep like humans, if they stopped swimming they could drown. They need water constantly flowing through their gills to breath. The idea of a shark never sleeping and drowning sounded ridiculous. How could a living thing never stop moving?
Unfortunately the same fate awaits developers who stopping moving forward and progressing. In many careers you can hit a plateau and decide to stay there (see public employee). Developers, at least the ones who want to stay employed, do not have that option. Technology changes too fast. Stand still for more than a little while and you become obsolete, dead to the technology sector. It takes a little progress just to stay in the same place, it takes dedication, effort and hard work to stay alive for a prolonged period. Having spent the better part of 15 years in the technology/internet industry I know this is a fact.
So how does a developer keep up, stay relevant and not suffer the fate that so many others have? It’s simple, keep moving forward. If technology is constantly moving forward and you stop moving, it’s not long before you are left behind. So how does a developer move forward? Again it’s simple. Keep learning.
Blogs, documentation, how to’s, wikis, it doesn’t matter. You most likely won’t remember a lot of what you read, but nuggets will stay lodged in your brain and you will be exposed to ideas and concepts you might not otherwise have come across. Reading is much better than watching a video or listening to someone explain something, it takes more effort and work on your part and that effort results in better memory retention (not water retention).
The inverse of reading is writing. Write about what you read, what you work on, how you solved a problem, how you stumbled across something ground breaking (that ten other people already discovered). Writing makes you think through things and consider how other people will digest what you write. It makes you, or at least it should, double and triple check that something works the way you write it should, especially if it’s your own code. Writing about something helps you to gain a better grasp on the topic, and a better understanding of how much effort other writers put into their work.
Know enough not everything
You’ve probably heard the phrase, “jack of all trades, master of none”. In many walks of life this a bad thing, for internet developers it’s a necessary evil. You can’t be a one trick pony. Most development work involves a technology stack, not “a” technology. Even within a team environment where there are specialists for certain streams of development, most members have/need some knowledge of the other streams.
Have a core set of technologies you master and then surround those with a complementary set of skills and technologies that you’re good at. For most work, “good” is good enough. As technology changes and evolves some of the core stuff may fade away and some of complementary skills may need to become core skills. The key is being able to identify when it needs to happen. For Flash developers it was early 2010 when HTML5 jumped into the spotlight. The one trick ponies freaked out, cried the sky is falling and prepared for the worst. The savvy developers read up, experimented, honed their skills and now have more to offer their clients and employers.
Take on projects you can’t do today
What? It sounds like a recipe for disaster but it is actually a recipe for success and growth. If you know you can learn quickly, challenge yourself by committing to projects that will force you to learn. Having a fire under you is a great motivator to figure something out and make sure it works. It also promotes ulcers if you can’t handle stress. Doing sample projects is great to get your feet wet but a real live project with deadlines and deliverables is where the real learning will happen. Why do you think militaries have live ammo training?
Failure is not an option
Actually it is but who wants to be a failure? No one. Don’t let failure scare you, learn from it. Go into a project planning to hit it out of the park, but don’t cry when you strike out, make adjustments for the next time you are up to bat. Own up to your failures. You broke the build, screwed up the server, accidentally deleted the backup. Stuff happens, own it, learn from it and move on. If everyone succeeded at everything they did the first time life would suck. Accepting failure and expecting failure are two very different things. Understand the difference and steer clear of the latter. Part of the learning process involves failure so get used to it.
So there you have it, one key to not becoming a dead shark and four keys to not becoming an obsolete developer: keep moving, read, write, stretch and fail.
Apologies for the heavy reliance on cliches and metaphors.