Dear new developer,
Story time. Many years ago, I was a contractor doing web development. I focused on web/database apps in unix-like environments. I wrote primarily php, java and perl. (Like I said, it was many years ago.)
A friend and former colleague reached out and said they had a client seeking development help. It was a crusty old ASP application which needed updates. (Like I said, it was many years ago.) It was hosted on a windows machine.
I was looking for work, thought I could do it, and the rate was acceptable, so I said yes, “I can do this”. I started talking with the client, asking details about the changes they needed.
Now, whenever I started a new contract, it took about two weeks to be fully up to speed with the domain, technology, team and context. That’s just par for the course, and part of the fun of contracting. But in most situations, I was able to offer value in the first couple of days, whether with good questions, sharing best practices I’d seen elsewhere, or something else.
I don’t recall doing any of that for this client.
Instead, what I remember is floundering.
I was unsure how to do anything in that environment, whether it was editing, testing, or deploying. I didn’t know how to do anything.
I didn’t have great resources, either: Google didn’t help, Stack Overflow didn’t exist. (Like I said, it was many years ago.)
After a few days of this, I apologized to the client. I said they’d need to find someone else to help them. In an effort to do so, I reached out to a few folks but wasn’t able to connect them with anyone.
I certainly didn’t charge them for my time.
All in all, a failure.
What did I do wrong? Many things, but the biggest one was that I tried to be something I wasn’t: an ASP developer.
I contorted myself into taking this contract while ignoring the warning signs:
- I had no prior relationship with the client
- I had no clue about the technology or the tech environment
- I even had zero experience with related technologies
- it was a contract where I was expected to be competent, not an employment relationship where I’d be trained
From my current vantage point, if any one of these factors had been different, I might have been successful. At the time, I ignored them. I talked myself into thinking I could succeed when it was clear that it wasn’t a fit and the only reason to take it was that I needed the money.
This experience has stuck with me.
What does this mean for you, new developer?
I think you should take chances on new technologies and opportunities, but only if they stretch you, rather than contort you. Stretching, for Dan at the time of the ASP contract fiasco, would have been working on a project with other web technologies built on unix/linux. Or a full time job doing ASP. Or working with someone who I’d worked with before. Basically, stretching is pushing further on one or two dimensions of difficulty, not many.
If you have to force yourself into a bizarro situation, it is not going to end well for anyone.
“But Dan,” you say, “I need a job, any job.” I sympathize with this. I do.
But even if you truly deeply need employment or to break into the developer job market, you still have desires, strengths and predilections. You are not a blank slate.
Listen to those feelings, and use them to filter opportunities. Not only will you be happier, you’ll also have a better chance of being hired.
Imagine being a engineering manager hiring for a front end position and talking to two different candidates.
One has spent time reading and writing about front end development, went through a bootcamp where they focused on front end dev, and has a portfolio with a front end projects in it.
The other is a generalist with the same level of experience and activity, but with devops, backend, and front end projects and skills.
The former candidate is simply going to have an easier time getting hired by that manager.
“But Dan, I don’t want to be overly focused. I just want a job.” Paradoxically, focusing will help you find a job. Such focus means that you’ll know quickly if a job is a fit for you. And it’ll help an employer know quickly too, which they like.
If you feel like you are hemmed in (I know, I have this worry!), you can switch niches. No decision is permanent.
Of course, a switch is harder the more experienced you are, but when you are new, you switch niches more easily. You are hired for potential. And, after all, if people can change their career after 50, you can switch your focus as a dev.
So, stretch when presented with new opportunities, but don’t contort yourself.