I work on web development projects for over 15 years and the biggest challenge has constantly been: quality human capital. It is really a weird situation, in a domain that is so technically inclined, where people face with problems that may boggle some of the greatest minds, to be set aside instead by problems of HR and HR management.
Attached to this post is a simple image describing my experience so far. Between a coder and an innovator there appear to be four huge gaps that hinder the access of the former horde to the latter crew but that also act as a measure of level in professional development:
- the experience gap
- the intellectual gap
- the goal gap
- the opportunity gap
Because the journey is long and the gaps are deep
The experience gap is simply a matter of involvement, dedication and in the end number of hours invested in growth.
So you’re a coder, right? Here is your first gap.
Do you do code review?
Do it, its the best way to adjust your thinking patterns. This will be the best way level up in your field by constantly checking if you can explain your ideas properly enough as to convince another developer to refactor.
Do you have some personal pet projects?
You know some ideas that are far away from your day job’s endless stream of forms? Oh, come on, this is a no-brainer.
Did you ever build anything that should scale up
Well not much you can do about this directly, but if you ever get called for a side gig: do try to spot the ones that could potentially be some traffic hit. Then take them on, because that will show you first hand how live ops really is, after you get the “good news of spike” in Google Analytics.
Did you ever build something that is supposed to be used by others?
If not yet, try to do it. Even if no one will use your work, it’s worth it. There are countless libraries, plugins, themes, frameworks, etc. in the wild and its very likely you will not reinvent the wheel, nor prove you are a genius just by building some jQuery carousel.
However, in coding something that caters to an open ended use case, you will learn how to make things customizable, reusable, self contained (name spacing!) and so on. Maybe you’ll also rock!
Do you know at least one framework by heart?
Why, you say? Despite the heavy online documentation that you get nowadays, for all major frameworks, you must remember that those docs are meant to be a speed up for adoption, not an excuse to not memorize anything. If you don’t make an effort to remember by heart exactly what your framework can do, then you’ll never fully utilize it.
Also stop touting they are all the same. At least one should be your favorite, even if you build it yourself, because that creates the required mental disposition towards understanding it.
The intellectual gap is covered when a programmer turns into a developer.
This is the second phase, where fewer people get shifted trough.
Creativity is the first guardian of the passage from programmer to developer.
Weird as may sound, I’ve seen a lot of people who, while mathematically inclined, had basically zero creativity. They learn how to do things perfectly, but they’ll never, ever, ever step out of the box. There is nothing wrong with that but, in particular, it is the biggest career killer.
Computer science academia
Computer science academia usually, but not necessarily, goes hand in hand with pattern understanding.
It is very hard to keep up with the architects that devise the software on which you code, if you cannot grasp their intentions — the basis of their thinking. When you ask questions about, say, why should you make some factory object, or why do you write global functions when you know they’re evil ☺, you need to be sure that you understand what the architect who created the specification has in mind: what pattern has she chosen for the build case you work on, what is the O(n) complexity of it and so on.
You don’t need computer science academia or pattern understanding in particular, but getting promoted will be harder if you struggle with understanding what a singleton is, or what IoC is, and why is it so great that Laravel did it pretty good for PHP.
Study is something extremely rare but highly valuable. People in this industry that actually read a book are so freakin’ rare, its basically amazing we’re so awesome overall. Do you read stuff that is not found at work via Google or on Stack Overflow? Maybe, if you’d read a book on PHP you’d understand, once and for all, why some PHP functions have underscores in the name and some don’t, and in doing so you’ll save the world of your constant complaining.
Probably the hardest part, but in becoming a developer the programmer must fill in the gap of self management.
Can you control your lolcat addiction? Can you assume things, explain your assumptions, and then implement without constant supervision? Can you go on for a month without asking around for directions? Do you track your time? Are you organized enough to have a personal life too, even if it involves … cosplay all day, and yet still deliver on time and on budget?
When a developer aims at becoming an architect they’ll hit the goal gap
Developers, as they have seniority levels in most companies, can and will retire as developers. They can grow gray beards and write books on industry specific subjects and still be developers. The goal gap is the sum of what motivates a very well paid person to climb higher on the career ladder, when money is more than enough:
CRUD applications and getting tired of them
This is a gap that’s repeated from the coder days, and its recurrence is because some folks simply have had enough rut and organically feel the need to shift the gear.
Personal development is a matter of self esteem, social influence, increased financial stability and so on.
This is the biggest false positive, because every human being dreams of a better future — but personal development is not about the better future, it is the sum of all your efforts towards that future.
Entrepreneur spirit is probably the biggest part of the gap to be filled by a developer that aims for an architect career step.
This is where supervision will be so low that you need the eagerness, love of craft and pure enjoyment of doing what you do, to keep yourself motivated and on track.
Do you aim for success? Do you dream at the rush of being at the top of the game? Or do you dream of the tranquil silence of some beach in Bali? None is better than the other, but you must decide, you need a world view, and that will reflect 100% in your work as an architect and the decisions you make. This choice will probably dictate if you go for architecting the latest medical imaging device software or the next Facebook.
Last but not least, family.
This might sound weird, but shifting up from senior developer to an architecture related position is a big life changing event. Travel requirements might multiply by a big factor. Architecture is not something you can leave at work as your best ideas will come during coffee or the evening movie. You need to make sure you can shield your loved ones or, if not, then make sure that they’re also ready for the ride.
The opportunity gap is the final stage of a career path for a coder.
After reaching architect level — usually after a lot of years in the field — you’ll hit the opportunity gap, here is what it is about:
What business size have you worked for until now? For example, I have worked for years with advertising agencies, doing tens of challenging websites. I had plenty of “experience”, but the business size was as micro as you can get.
What happens when you hit the corporate bureaucracy, and the intricate decision making that’s happening in these environments? Do you know how to scale your patience? I had to learn that the hard way, and only eventually I did it.
Also, when a business is really big you get a new, overwhelming I might say, love of small numbers. A tiny bit, like a 0.1 increase, gets to become millions of dollars in revenue, 200 milliseconds become an eternity when you hyper optimize your ten-million-a-day landing page.
Financial worthiness means the opportunities you’ve had to estimate, not the cost, but the worthiness of an investment, from two major points of view: ROI and strategic expenditure. This is really important, whether you want to be the next miracle garage entrepreneur or you are about to get the CEO position for some bad ass company, you will constantly flex this muscle.
This is an opportunity gap because to do all the above, you’ve definitely networked with industry people, plus analyzed, studied and gathered data which is potentially uniquely owned by you, adding a lot of value to your innovator status.
Business influence is the opportunity to work for game changers. This adds a lot of weight to your calls. You’ll have far better success rates as an innovator, having already gone trough a first hand experience in a company that set some industry
These are the opportunities you’ve had to work as an executive: low, middle or top. It is essential because you cannot successfully be “a real artist and ship”, if you cannot understand staffing, budgets, investors, partnership and equity, board decisions and so forth. It’s not required that you’ve been the CEO of BigCorp, but it helps if you have risen something from the ground up in a company, or founded your own, or managed “larger than one room” teams etc.
You cannot have the opportunity gap filled without a drop of luck and who says otherwise is a liar.
- — -
So, there you go. Are you planning your next move? Analyze yourself to see where you are and what gaps still exist in your career path and strive to fill them, because the older you get the wider they become.
Are you building the next big thing? Go trough this when you hire folks, ask those questions to them during interviews or to yourself when screening applications.
If you think this is close of helpful recommend it, so others can reap what you sow ☺