How to evaluate a software developer job from its description

Empty office by Free-Photos

Programmers, often newbie ones, apply for too many tech positions. What they are trying to achieve is self-validation. Am I good for this position? Am I competent enough? They often miss to evaluate the software developer job description they are applying for.

What you need to be looking for in a Software Developer job description?

  • Do I possess main technical skills enlisted in the job description?
  • Does it offer to try out already learned technology in mainstream way (like many others do), or does it involve trying it in a totally novel way that no one has tried before? (the answer will decide if you fit the job requirement)
  • Does it entail endless toiling of environment setups, training newer people, and / or reporting to larger hierarchies? If so, are you really looking for such an opportunity?

If you miss reading the job description, you won’t ponder on the above crucial things. After successfully beating the odds, having secured the software job, you will find yourself stuck in a very awkward situation, hunting for a job again.

A software developer job description needs to list out:

  • Candidate’s key job tasks (analysis, coding, testing, reporting etc)
  • Skills that are used by existing team that the new applicant will be required to have. (Javascript, Scala, Ruby, Python etc)
  • Experience (number of years) having worked on those skills / tasks
  • Additional (often non-technical) qualities required to effectively function within the team

Evaluating a software job from its description is not everyone’s cup of tea. It requires constant study of job postings. But how does one analyze job descriptions? They always seem to promise heaven like that famous heaven and hell joke, which is almost a cliche now.

The reality is, in 60%-80% of the cases, the job description always tells you in disguise about the drag involved. And you must learn to get it before your competition does.

When companies say they want rockstar developer, what they really need is a guy who takes pride in meeting deadlines with 24 x 7 drag – for a market-average salary.

Common Wisdom

It may not be something that you do not want. But you need to make sure you definitely want it, before you apply for it.

Here are some more red-flags visible with the naked eye – that warn you about job-horrors that await you after you get hired:

Work in an ambitious, hard-working, cut-throat environment:

Be ready to compete with fellow teammates – there is a public productivity dashboard, and your numbers are logged every single day. Every other dev is trying to outpace you by solving more (meaningless) JIRA tickets, or simply preparing a bigger wordy report on how he reinvented the wheel.

There are exceptional quality people who strive & make it BIG, in such performance-rewarding environments: Contract killers.

You must be able to work in an independent, self-guided manner: 

As a programmer, your job is to understand requirements, and code and test them enough to make a reliable software – all by yourself. It is quite liberating to work like this – and such a role is called Individual Contributor for exactly that reason. Individual contributors are somewhat senior developers – and usually paid handsomely.

However, some companies stretch this independence beyond boundaries. On days 1-7 of your new job, you may have to loiter around your boss’ cabin, or worse, plead with the IT guy – to get access to your computer, your badge, your source control login, important documentation – and sometimes even internet access.

Your lack of follow-ups mean you are not independent enough to get things done, no matter how great you code.

It would be better to play Minecraft during job hours, rather than being such a go-getter. Honestly. Minecraft has direct and positive impact on your programming abilities.

It could be that you read too much into the independence thing. It’s best to discuss such office-workflow related things in the interview, in a completely informal yet polite manner. It’s much better than regretting it later.

2+ Years experience in technology that was invented 2 years ago:

While it is chronologically possible to have a position like that, practically it is impossible to find a person fulfilling above criteria, because of slower industry adoption of technology. Such job descriptions simply mean that recruiter / manager has not done enough research to fill up the role. If you want to qualify for the interview, you need to fake your experience on your CV. A tech position that begins with a lie can take you to any heights, but eventually, you are destined to fall. Take your pick.

One way to tackle such half-cooked job descriptions is to give a call to the recruiter and discuss about the job description being unrealistic. You can convince them about the unavailability of experienced people in that area, and send your TRUE profile that reflects your real experience – instead of inflated numbers. That way, you increase your chances of getting invited for an interview.

Ability to work in a fast-paced environment with multiple projects and shifting priorities

The sentence is self-explanatory. There is nothing wrong in riding a tiger and a fox together, but you must know that you are riding them, and you must know when to get down, and the first direction you want to start running past getting down.

You must be a jubilant and cheery-faced team player:

While it is a virtue to be a team-player, an organization’s expectation of a team-player can be quite at odds with your sincerity to perform your tasks. Sometimes, all they want is a billable party animal, not a serious coder. Examples?

  • You are always ready when the team / boss decides to go for coffee at exceptional hours, even when you are neck-deep into the task at hand
  • There are birthday parties and anniversaries every other day, and your absence in any of them means you are biased towards certain coworkers. Nothing gets done in such workplaces. Ever.
  • Your team is going for a river-rafting excursion. Yay! But since Program Director wants to familiarize himself with the team, and since his calendar is not free except for Saturday, it’s set in stone – on Saturday. Everyone on the team seems to be excited (or at least they seem to hide their displeasure). But you want to spend this Saturday at home, curled up on your sofa, reading your favorite novel, watching your favorite TV show, or play with your kids. You oppose the Saturday plan, the trip gets cancelled. Everyone is happy, except the Program Director, and you – only you – get the blame for being a jerk.
Someone who strives for 99% perfection in proven methodologies – tests, coverage and performance:

Among all things, this is a tough nut to crack. Because no developer, in principle, can oppose quality assurance best practices. The questions are:

  • At which point in product life cycle such quantifiable measures are enforced?
  • Do you consider yourself someone who is suitable to perform tasks such as bringing code coverage from 90% to 97% or achieving 100% passed test cases? Do you completely lack competencies that, if better focused, can bring enormous impact on overall product effectiveness?

Conclusion:

A software developer job description must stick to its key responsibilities: express tasks required of the programmer, and skills required to perform those tasks. If you find anything above and beyond, it is time to re-evaluate the job position, and your readiness to take it. It is very easy to give into the desperation, because you want to validate yourself by getting picked by every employer in your area.

A software developer position having dubious job description does not deserve your time, and definitely not the motivation you loose when you apply, fail the interview, or worse, succeed.