Over the past four months or so, I have been in the job market after being laid off from my last gig. I have been proudly sporting the #OPENTOWORK hashtag on LinkedIn and, of course, applying for every possible position for which I am a reasonable fit. It has been a process of “kissing a lot of frogs” (see Quote Investigator for what this means) and I have become increasingly frustrated by the process.
Apart from the familiar frustrations of ghosting, job postings that turn out to be more fiction than fact, and so on, I have discovered that everyone wants to hire “Senior” Software Engineers. Yet, has this now become just another buzzword in the industry? Do prospective employers who need coders or junior-level developers just automatically jump to referring to the open position as a need for a Senior Software Engineer?
There are a few reasons that I look sideways at many of these positions. The first and most obvious indicator is the pay scale. There is a range for Senior Software Engineers that makes sense and which can be discovered within minutes of researching and yet I have seen entry-level ranges applied to some of these offerings! So, let’s scrap any of these and continue looking through the requirements. So many of them read like entry-level positions. For example, in one I recently saw, there was a requirement that the candidate “must know about version control such as Git or SVN.” Really? That is like asking for a professional Lead Guitarist from a well-known group and then in the interview, asking them to play a G chord for you!
While we are on the subject of requirements, so many of these harp on skills that should be easy for a true Senior Software Engineer to pick up quickly. It makes me wonder if the desire of the employer is to quickly backfill a position after someone moved on. In other words, they are looking more for a replaceable puzzle piece than for a solid contributor who can move their project(s) forward. How many of them require a specific language, for example? Again, how many Senior Software Engineers can only function in one language? Most of us, if not all, are polyglots in terms of development languages and scripting dialects! Heck, in my arsenal is Java, C#, Typescript, Kotlin, Javascript, Python, 80×86 assembly, C++, C and those are certainly not the only ones by a long shot. How about the ones we dabble with “just enough to make us dangerous?” In my case, Rust, Go, and so on. (Oh, and did I mention Pascal? That really makes me a Senior…) I certainly resonate with Dave Farley who states that “our job is to solve problems for people, largely using software” (see, for example, this Dave Farley short) and not to just write code.
Finally, assuming that a candidate makes it through the hurdles and gets through to a battery of interviews, how many of these interviews for a Senior Software Engineer include creating a “Hello World” type of application? Now, don’t get me wrong…I love doing katas and belong to CodeWars and Exercism. These exercises are great to help a developer to think clearly, hone approaches over time, and sometimes how to reason out-of-the-box solutions. But in the stress of a 30-60 minute interview, under scrutiny by a stranger, and using tools which are unfamiliar, what exactly does this prove other than you can figure out how to deal with a variation of FizzBuzz, Game of Life, or Gilded Rose? If the need is to know how a candidate codes and/or how they think while coding, would it make more sense to spend some quality time looking through some of their GitHub projects? Heck, how about interactively going through some of the candidate’s projects in their own codebase during one of the interview sessions? Shouldn’t these interviews be in-depth back-and-forth discussions about solving problems instead? After all, this IS the reason one should be seeking a Senior level engineer.
The key is to determine what actually makes a software engineer a “Senior.” Throughout the history of mankind’s professional endeavors, there has always existed a gradient in expertise. We begin a career as raw material which is forged and built up through experience until more and more expertise is accumulated. To become a “Senior” at anything, time is involved, of course, but it is more than a matter of time. It is a matter of application of acquired knowledge and, in many cases, avoidance of “youthful” exuberance such as reacting to situations or accepting the first idea that seems to be right. Personally, I really resonate with the work of the Dreyfus brothers at UC as they examined the nursing profession (see The Dreyfus Model of Skill Acquisition). Everyone’s experience exists in a continuum between Novice and Expert in every aspect of their pursuits and this includes software engineering for us engineers, of course.
So, the question of recruiting should be what does a Senior Software Developer bring to the table? I believe that there are 6-“R”s that define the envelope surrounding this position as outlined below.
Recognition – Senior level engineers have experienced a lot of things, both personally and through the lore of others, through their many years on the job. Because of this, they can recognize pitfalls, problems, and even positive decisions quicker than most. It is this recognition ability that helps them steer a project towards patterns or away from anti-patterns in the realms of coding, architecture, infrastructure, and project execution.
Reading – Senior level engineers who are good practitioners of their art constantly strive to keep their skillset sharp. They read voraciously, train, attend conferences, pick up pet projects that challenge them to learn new tricks and approaches to problem solving. This serves a company kind of like the luggage in the cargo compartment of an airplane. It is there when it is needed and even those things that seemed to have been silly to pack in the first place sometimes end up saving the day!
Reflection – Senior Software Engineer is more than a title. It is a way of life for those who have really earned that title. They are engineers, thinkers who delight in being tasked with difficult problems to solve. The journey towards seniority has taught many lessons in choosing wisely while solving problems and solid senior engineers take this seriously. Reflection permits them to sidestep decisions which have led to disaster in the past and, instead, leads to providing solutions that are adequate (not overengineered) and maintainable.
Research – Another benefit to years and decades of experience that many Senior level engineers exhibit is that they don’t just blindly accept the quick answers. Many have cut their teeth through the failures of frameworks (those that promised the world but only delivered a small island) and vendor-hype. They will take their time to determine if a solution truly can be the right one by doing their homework. They will also spend time on determining how solutions can be combined in powerful and effective ways to accomplish the goals of the project without compromising its viability and maintainability.
Reason or Rationalization – Excitability is an important trait because it empowers the dreamers and forward-thinking innovators to make new things come about. Yet, solid and maintainable software cannot be developed simply by hair-trigger excitement alone. Senior level software engineers have learned how to use reason to balance the dream with the execution. For every Steve Jobs with their incredible vision, there needs to be a Steve Wozniak who can anchor that vision in reality. Together, both sides of the equation come together and produce something much greater than the sum of its parts. Senior level engineers’ experience drive the stakes of practicality into the ground to form the foundation for the vision to thrive.
Reciprocality – Finally, most Senior level software engineers have learned that there is a tremendous amount of power in collaborative thinking. The sum of two honed minds is much larger than two, and their experience has led them to understand that taking the “lone wolf” approach to software engineering is not often the best way. They seek to bounce ideas back and forth among the team and, because they are aware of the relentless march of time in their own lives, they also work to train up the junior developers and engineers to one day take the reins.
So, to return to the premise of this article, the question is “are you looking for a SENIOR software engineer?” If so, then hopefully you are willing to have the right type of conversations to determine if the candidate is indeed qualified. That person is more than a resume, more than a coder, more than someone who can spout (mostly meaningless, in a day-to-day sense) information that can be found in less than a second’s internet search. Are many or any of the 6-“R”s part of your actual job need and, if so, are they in your requirements and do they play an important part of your interview process? After all, you are looking to hire brain-trust to guide your project and, maybe even, the hopes of your company into the future!

While I may be alone in my pursuits, I know that I am not alone in my state of anguish. Surely, of all of the billions of people in this world, there must be others out there who struggle with my same angst, namely on forging forward in practicing the activities of our professional lives devoid of a supporting community of others. This blog post is different from my usual ones because it is, admittedly, more personal. Please bear with me as I peel back just a bit of my outside shell and share something deeper. It is really, in the end, not about me but about the myriad of other “me’s” out there in the world who suffer in roughly the same way.











You must be logged in to post a comment.