DEV Community

Discussion on: What does it take to be a senior developer?

craser profile image
Chris Raser

Unfortunately, I'm not as awake and pithy as I'd like to be this morning. So instead of a short paragraph directly talking about what "Senior" means, I'll tell two stories about plumbing.

Before I was born, my parents lived in a small rental house in Massachusetts. (East coast of the U.S.) One day, they found that the upstairs bath tub wouldn't drain. So they called a plumber.

The plumber looked around, tried to unclog the pipe, failed, but was able to figure out exactly where the clog was. Unfortunately, the blockage was inside a wall. The plumber said he'd have to break open the wall and replace that section of pipe. Once he was done, my parents would have to call a plasterer to repair the wall, and a painter to paint it.

My parents decided their landlord wouldn't like them breaking holes in the wall, so they called the landlord and asked what he wanted them to do.

The landlord laughed and told them to send the other plumber home, and that a new plumber would be there shortly.

The second plumber arrived, and agreed with the first plumber's assessment of where the clog was, but said there was no reason to break open the wall.

Instead, he went up on the roof, blocked the air vents, and ran water down the downstairs drains. Then he went back up on the roof, unblocked one of the air vents, and there was a tremendous POP! as the resulting pressure differential sucked the clog out of the pipe and out the main drain.

A mid-level engineer (the first plumber in this story) has a clear understanding of the problem and knows a way to fix it directly. The senior engineer (the second plumber) understood how to use the architecture of the whole system to resolve the issue.

The second story:

My wife and I wanted to replace the fixtures in our bathroom, and we hired a plumber to do the work. He removed the spout over the tub, and discovered that the pipe it was connected to was too short to attach the new spout. And when he tried to put the old spout back on, it stripped the threads on the pipe so that it couldn't be re-attached. Attempts to remove the pipe only further damaged it, compounding the problem.

The plumber told me he would have to remove the tile around the pipe so he could get a proper grip on it and remove & replace it.

I asked the plumber to work on other things around the house for an hour while I considered my options.

I called several local plumbing stores, asking them for solutions. They had none. I searched online for tools that would let me grip the pipe from the inside. I discovered internal pipe wrenches. A few more calls located a store that had a set. I bought the tools, returned to my bathroom and extracted the pipe with no trouble.

I behaved as a senior engineer in this case: when the proposed solution wasn't good enough, I took it upon myself to find new tools and techniques that could solve the problem properly. It's easy to look at a problem and think that the solution you know, however bad it might be, is the only option. As a senior engineer, that's not the end of the decision-making process, it's the beginning of the research & learning process.

I'm not sure if that brings any light to the question, but I hope so. Solid technical skills are certainly a requirement for a senior dev, but if all you have are technical skills, then you're still mid-level. A senior dev brings a more mature approach to problem solving, and has solid social skills for working with the team, especially in stressful situations. You're a mid-level dev when your boss is happy you're on the team. You're a senior dev when your team is happy you're on the team.