Knowledge is the most important tool that any developer can possess. With the explosion of platforms like CodeSchool, PluralSight, and many others, the cost of education is plummeting.
Over the last several years, personally, I've referred more than a handful of students to these platforms. Often, these friends or colleagues return to me for help, but the platform was still able to teach foundational principals. However, with the influx of Junior Developers created by the relatively new crop of coding schools, I can't help but wonder if this industry has filled one need and ignored another.
The Next Question
When I'm on the road, I see old friends, make new ones, and come into contact with developers of all skill levels. One of the recurring questions, which I do my best to answer candidly each time, is this: what divides senior talent from others in an organization?
Because we, as a community, are knowledge workers of the purest definition, this question is always sincere. The fact is, within our industry, truth is relative. We'd like to believe that our applications are free of bugs, but our daily schedule tells a different story. Many of us are blessed with the freedom to work remotely, and yet, we savor time in our home office. For every tool you can't live without, there's a team halfway around the world, working on a similar app, who made very different choices and still succeeded. We sell ourselves as the creators of a product that doesn't exist yet, and yet, doubt our abilities in private.
Truth doesn't willingly declare it's identity. To find ourselves in this jumbled mess, we must read between the lines.
What we need most isn't knowledge itself, but the experience to wield it. While we must acknowledge that the world of software development isn't purely a meritocracy, we often believe that's what separates the developer who progresses from the one who doesn't.
I believe that if knowledge conveys power or importance in our industry, it cannot be sacred. In that spirit, I want to share what I consider the most important qualities of a senior engineering candidate.
They don't always have to be right.
After hours of complex mental work, it's hard to have your ideas criticized. Despite how grumpy it may make you, senior developers must be able to calmly evaluate the validity of other opinions, and submit to the evidence of a friend or colleague. If my career has taught me anything, it's to be comfortable with certain unanswered questions.
They chose the right tool.
A senior developer often has several languages or frameworks in their toolbox. Mastery of only one of them is required — the others serve as guards against stale thinking. They understand that focusing exclusively on one ecosystem can be hazardous.
They share knowledge.
In order to grow, one must teach. While it's widely recognized that this technique is a successful way to learn (perhaps the most successful), many erect a wall between presenters and their audiences — pushing themselves away from the podium. A senior developer is humble, but also realizes that their perspective could help somebody else.
They know when to walk away.
There is a time to buckle down and do work. It's also equally important to walk away from a problem — even an unsolved one — and relax. Family and friends must come first. Let your mind wander: the real work can be completed before you return.
Programming isn't their only passion.
It's fine if programming is their main passion, but it cannot be their only one. Pounding out complex logic for hours can take a toll on the brain. A senior developer will take steps to avoid Decision Fatigue, which can have negative effects on them and their team.
Peace is always their preferred option.
A successful leader, regardless of industry, must learn to diffuse pointless arguments; especially those fueled by questionless adherence to industry dogma. This outside perspective can, among other things, help facilitate productive discussions around otherwise contentious topics.
These steps aren't easy, and they stand against most everything that we've seen in recent years; principally, the rise of “brogrammer” culture. Software can be a lucrative career, but that requires commitment. Commitment to an ever changing industry, and to yourself.
Becoming a software developer means taking a pledge to yourself, which asks to you remain intellectually curious, never stop asking why, to push for cultural change where our industry needs it, and always save time for the people who matter most.
These are the traits of a leader. They're also traits that everyone, regardless of skill level can adopt.
Consider this: you're a seasoned engineer who is struggling to find their way in an industry that continues to evolve at a dizzying pace. There are others like you. Perhaps you're a new developer who is excited about many different languages and frameworks, but lacks the wisdom needed to choose an initial focus. You are not alone.
Every person has a message. Every person can build their audience. And I can't think of a better time to start than now.
Shameless Self-Promotion: My consultancy, Until Now is ready to help implement these principals at your organization. I do so though creative training, speaking, and hands-on software development. If you're ready to level up, get in touch.