Six Things You Thought Senior Devs Did (But We Don't)
Published: 2021-05-21 00:19:52

If you're a junior or mid-level developer, you may have certain ideas about what constitutes a Senior Developer. There's almost certainly an idealized picture in your mind, and if so, I can safely bet you keep comparing yourself to that fictional ideal.

But what *is* a Senior Developer, really?

It doesn't help matters that practically every company has its own definition. In general, a Senior Developer is simply someone who has enough experience with software development to:

1. Independently understand a given problem that needs to be solved in their particular knowledge domain,
2. Enumerate one or more viable solutions and their merits, and then
3. Implement one of the better solutions, likely as a member of a team, using the idiomatic patterns of the language and framework being employed.

Seriously. That's it.

So what about all those other things you've always imagined were true of Senior Developers?

# 1: We Don't Avoid "If" Statements

A lot of junior developers seem to be under the impression that conditional statements are only for wimps and n00bs. Nothing could be further from the truth!

Often the best solution to a problem is also the simplest. While there are times and situations wherein there's a better solution that a conditional statement or a loop, senior developers still default to the classics. As Donald Knuth famously said...

> Premature optimization is the root of all evil.

**The basics are the basics because they work. Don't go looking for a clever alternative solution to an already well-solved problem.**

# 2: We Aren't Developing Algorithms

For the most part, it's the propeller heads at the universities who are coming up with better sorting and pathfinding algorithms, and more power to 'em!

A senior developer knows when to rely on the preexisting work of others who have come before. In other words...

> Good programmers know what to write. Great ones know what to rewrite (and reuse).

**Don't be afraid to use existing libraries, algorithms, and abstractions.**

# 3: We Don't Customize Our Kernels

Seriously, we don't have time to be mucking about in the internals of our day-to-day operating system. A senior developer prefers to do the minimum necessary work to get a working environment that meets her needs...and then she leaves it alone!

Most of the time, the only reason a senior developer will be recompiling their kernel is to solve a hardware issue, and even then, it's compiled from an unmodified source. The only real exception is the folks for whom kernel hacking is a hobby...and that has nothing to do with seniority.

**Beware yak shaving! If it ain't broke, don't fix it.**

# 4: We Don't Have Regex Memorized Either

Your average senior developer is going to have one of her ten thousand browser tabs open to regex101.com too. Regex is infamously esoteric, and we have more important things to remember.

On a related note, if a typical senior developer is able to get the syntax for the `tar` command on Unix right on the first try without checking the docs, he probably has it tattooed on his arm.

**Don't be ashamed to read the documentation, even if it's something you've looked up before.**

# 5: We Don't Know All Top 10 Hottest Languages

Pick any random senior developer, and chances are that they know one or two languages very well, and have working proficiency in two or three others. They almost certainly won't have mastered a dozen different languages!

This is on purpose. A good senior developer is mostly interested in gaining further mastery of their primary languages, frameworks, and knowledge domains. It's impossible to know everything there is to know for any one language!

**You don't need to learn everything. When you find a language you love, dig deeper.**

# 6: We Don't Feel Like Senior Developers Either

No, really. We don't. As soon as you crest one mountain, you discover a dozen higher peaks on the horizon. We *also* have imposter syndrome. I've talked to 30-year-veteran software developers who still felt like they were faking it.

**Software development is a life-long adventure. The destination is always changing; the *journey* is the interesting part.**