DEV Community

Cover image for Six Things You Thought Senior Devs Did (But We Don't)

Six Things You Thought Senior Devs Did (But We Don't)

Jason C. McDonald on May 21, 2021

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 ideali...
Collapse
 
val_baca profile image
Valentin Baca • Edited

My takes and comments.

1: We Don't Avoid "If" Statements

Absolutely. Senior devs consider readability as part of maintenance and it's important.

2: We Aren't Developing Algorithms

Agreed. We may be aware of more and apply them as needed, but consider how long it took to have a bug-free implementation of sorting functions.

I've never even needed to write a sort function in my actual job (despite it being popular in interviews). I've worked with Map routing and still didn't touch Dijkstra's algorithm.

The most advanced one I've used is Lamport clocks and that was reviewed with several other engineers.

3: We Don't Customize Our Kernels

I messed around with lots of Linux distros (distro hopping!) in college but now I just use macOS plus whatever Linux the company uses. But I've never touched the kernel.

4: We Don't Have Regex Memorized Either

HAHA so true. I may have a couple like "\w*" or "[a-zA-Z0-9-]" semi-memorized because they come up a lot but you can guarantee that I go to the Pattern javadoc Every Single Time because they're so easy to get wrong.

It's like double-digit multiplication. I could do it in my head, and try to, but I'll always verify and would expect others to do the same.

Protip: use the POSIX character classes! "\p{Alnum}" They're self-documenting

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

Looking at the top 10 according to TIOBE, Here's my personal grade on how well I know them, A-B are my primary languages, C-D are ones I occasionally work with, Fs are ones I don't know.

  • C: Grade D
  • Python: C
  • Java: A+
  • C++: D
  • C#: F
  • Visual Basic: F-
  • JavaScript: B
  • Assembly language: F-
  • PHP: F-
  • SQL: D

I consider myself a polyglot as my work has me looking at a lot of languages on a weekly basis. This morning I looked at Rust and Ruby. I don't know Rust but was perusing to help suggest features.

That said, remember that languages are tools; not religions.

If you "only" know "just" one or two, that's totally fine and great! Focus on them. Don't feel the need to learn 20 languages or even 3 if the ones you know fit your needs and allow you to build what you need to.

"Dance with the one that brought you." Master and build with the language you know. I can almost promise that the programming language you know is sufficient to build what you need and there's a company needs someone who knows it.

6: We Don't Feel Like Senior Developers Either

I wish getting the title of Senior Engineer was like the Sailor Moon or Power Ranger's transformation sequence where we suddenly got awesome powers and outfits and confidence, but that doesn't happen.

We're just more aware of the gigantic world of software that we don't understand. We're more aware that there will always be someone way, way smarter. We still google "array to list java" and "javascript import syntax." But we know a little more each day than we did before. Rinse. Repeat.

Never stop exploring and learning. It's a big world but you also don't need to do it all or know it all.

Collapse
 
jmccabe profile image
John McCabe

Re #5 - primary reason is C++ regex /= Emacs Lisp regex /= grep regex /= Java regex /= Python regex. That may be a slight generalisation (i.e. some of those may be equal), but my point is that regex isn't standard and, other than some of the dead obvious ones like those you mentioned, it's worth checking :-)

Collapse
 
mastacheata profile image
Mastacheata

I'm actually kind of a RegEx-Guru in our team. I love to fiddle with RegEx, but I only really know PCRE-Regex as I worked with PHP for most of my career and private projects. Now that my current job uses JS and Python all that knowledge is useless and I have to look everything but the most basic RegEx up in order to make sure they'll actually match what I intended.

Collapse
 
val_baca profile image
Valentin Baca

You're absolutely right! It's a whole mess out there. My point was even when I'm fairly confident in a regex, I'll always have the documentation up while I'm writing and verify it.

Thread Thread
 
jmccabe profile image
John McCabe

As an aside, I noticed your comment on Rust; what did you think of it? I've looked at it a couple of times and, every time I do, I think "what on earth were they thinking!". Why is that so many people can't just contribute to existing languages, rather than re-inventing the wheel in a weird way?! I look at so many 'new' languages and see these features that I used 30+ years ago in Ada!

Thread Thread
 
val_baca profile image
Valentin Baca

Sorry, this turned into a bit of a rambling rant. I might make a post about languages in general! haha

For me, Rust falls below the line for languages I want in my toolbox. That's not to say I think it's bad, it just doesn't fit the problems I'm working on. The reason I was looking at it was because I wanted to improve a particular command-line tool that I was using and wanted to get a sense of whether it would be too difficult to do or not.

It's perfectly valid to feel overwhelmed with the # of languages floating around and feel like we'd be better off consolidating rather than repeating.

When I look at a language like C++ or Python, it's clear to see the harm that piling on features to an existing language can do.

I will say that the Rust community is one that really loves their language in a way that I don't see that often and the language does seem to excel at the promise of extreme speed with safety and efficiency.

There's a ton of factors that go into language popularity: corporate backing, ease of use, fitting a niche but not being too narrow. Then, popularity becomes a positive feedback loop because the more popular a language is the more libraries and integrations are written for it, which increases popularity etc. We saw this with how Ruby blew up with Rails and Python with numpy, TensorFlow, etc. Java was the behemoth it was/is because of Sun/Oracle, while capitalizing on the promises of the JVM (which were met IMO) and filling the corporate server niche. That led to it being the language of choice for Android, which made it even more relevant, etc. etc. etc.

But a lot of what the languages give was all discovered decades before with Lisp. So why didn't it just take over the world? Well that's a whole other post.

In summary, from what I can tell, the Rust languages is evolving fast, has a community that loves it, and is filling a niche for systems programmers who want speed and safety.

I imagine you feel towards Ada-and-Rust as I feel a bit toward Java-and-Go. I picked up Go to learn it and found it not really doing much different than Java. Go's getting Generics; Java had that a decade ago.

That said, I really did find that Go just got out of my way and let me code what I need to.

It's also totally reasonable to always have a "hype buffer." It's okay to watch if something will stick around. If it's going to stick around then it'll still be there! If not then maybe you missed being on the first hype-train, but you can't get on every one.

Collapse
 
aeiche profile image
Aaron Eiche

My current title is the lofty "Lead Software Engineer" and I can say that these items all apply to me as well, especially that last one. To me, the difference between the Junior and Senior engineers is almost exclusively non-technical in nature. There are a few practices that make a difference in terms of performance, and reducing errors, but for the most part Senior-developership is matter of leading, encouraging, and supporting. It's all the meta-work around software development.

Collapse
 
leob profile image
leob • Edited

And experience ... the ability to draw upon one's experience and thus to avoid making (major) mistakes, or going off in a wrong direction, that's huge as well, in my opinion :)

Collapse
 
maciekgrzybek profile image
Maciek Grzybek

Totally agree, soft skills play massive role in a senior role. The ability to communicate and inspire. BTW awesome article :)

Collapse
 
ldrscke profile image
Christian Ledermann

WE DO google and use StackOverflow ;-)

Collapse
 
jmccabe profile image
John McCabe

Partly because we have such broad experience (and have seen so many new languages with bits that look like old languages, especially C) that we can rarely be sure the syntax we're using is what we really mean :-)

E.g. "if (x && y)" in C++/C means something different to the same syntax in Java, as does "if (x & y)" etc!

Collapse
 
klvenky profile image
Venkatesh KL • Edited

If there's a post that truly defines a senior guy this is it. I'd like to add another point though.
if a junior thinks that seniors are ridiculously fast at a problem then the simple reasoning behind it is that they've done it/something very similar before & did it facing lot of challenges which the junior will face if they go the same path. So the senior just tried to stop them from going all that way.
I've found it to be true many times on my way to be a senior(probably) & I ensure to say that to my team always. I'll say "I'm not super-fast not highly intellectual. It's just that I've thought of/solved this problem before"

Collapse
 
codemouse92 profile image
Jason C. McDonald

Absolutely! Good addition.

Or as I like to say, "Speed is a side effect of proficiency, nothing more."

Collapse
 
anshsaini profile image
Ansh Saini

So true

Collapse
 
ullissippo profile image
Ullissippo

I'm a 37-year-veteran, and all 6 apply to me :). Started with COBOL (yes, that) and now that I'm approaching my retirement, PYTHON is my love.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Man, I would love to chat over virtual coffee sometimes.

Collapse
 
ullissippo profile image
Ullissippo

:D Whenever you want, outside European Central Time working hours. Oh, and weekends also, I have to keep a healthful family life :)

Collapse
 
antonfrattaroli profile image
Anton Frattaroli

1: We Don't Avoid "If" Statements
No, but I avoid else statements. They add needless cyclomatic complexity.

2: We Aren't Developing Algorithms
I mean technically all the custom code you write is an algorithm. But hopefully you're never writing from scratch a well known algorithm that certainly has a battle tested package available for it.

3: We Don't Customize Our Kernels
I've used windows since switching from amiga in 1990. It gets the job done.

4: We Don't Have Regex Memorized Either
I know a lot of regex, but I'm not going to write an email regex from scratch for the same reason I'm not implementing a sorting algorithm.

5: We Don't Know All Top 10 Hottest Languages
I'd argue against using more than is necessary to keep the skillset required to run your company lean. Or else you're stuck with needing to hire a Java+Go or a C#+Rust developer.

6: We Don't Feel Like Senior Developers Either
I'm not sure how you can't. You sit through interviews, and when you're done you need to be able to say "this person is a [junior/midlevel/senior]". You can still be "on the junior side of a senior developer", I don't understand how it'd be unclear.

Collapse
 
thephydaux profile image
Chris Kent

You can't really "avoid" else statements though, if they are not explicitly there then it is still an implicit else.

Collapse
 
antonfrattaroli profile image
Anton Frattaroli

However it's worded, it works. This article gives a good example: axelerant.com/resources/team-blog/...

//Cyclomatic Complexity = 3. Npath Complexity = 4.
public int function (a, b) {
  If (a>b) {
    $return_value = a;
  } else {
    $return_value =b;
  }
  return $return_value;
}

// Above code can be rewritten as below.

//Cyclomatic Complexity = 2. Npath Complexity = 2.
public in function (a,b) {
  if(a >b) {
    return a;
  }
  return b;
}
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
codemouse92 profile image
Jason C. McDonald

Precisely.

The only time you might need an explicit else in my experience is when one or more conditions do not contain logic to leave the context (e.g. a return, break, or continue), and you have a block of code which should only be executed if none of the conditions were met.

Collapse
 
codemouse92 profile image
Jason C. McDonald

I think he means explicit else. I mostly agree it adds unnecessary complexity, although there are exceptions.

Collapse
 
renanlazarotto profile image
Renan "Firehawk" Lazarotto • Edited

1, 2 and 4 are so true even if I'm not a senior yet (I'm in a position that sits in between junior and senior, which I believe its called 'mid level' in english).

I usually spend some time on 1, but a lot of time on 2... I love to go 'libhunting' :D

Collapse
 
pinotattari profile image
Riccardo Bernardini • Edited

About regexp: I see that I am among the few that actually like them. 😄

I learned them quite early, even before university. I was born, in a CS sense, in the 80's with Sinclair, Commodore, and stuff. I always had a fascination for compilers, so I bought Compiler construction for digital computers by D. Gries and I learned about grammars, parsers and, yes, regular languages.

I find regexp a very powerful tool, although I agree that the most complex ones look some transmission error... In my free time every now and then I tried to come out with a different way to write regexp.

The GNAT implementation of Ada provides the SPITBOL alternative to regexp; I am still unsure if it can be easier than regexp

About tar: xkcd.com/1168/ 😆

Collapse
 
raissamartinsmenezes profile image
Raissa Martins

great points :) i was explaining this to a junior dev yesterday. it doesn’t matter your seniority we are always learning and sharing with each other every day <o/ can i translate you article to portuguese to reach our community in brazil?

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Absolutely! Just as long as you link back to the original and credit me as the original author. :)

Collapse
 
martygo profile image
Martins Gouveia

Article to be beside the bed for consultation.

Collapse
 
dattvidc profile image
David Christoffersen

Disclaimer- not a sr Dev.
But No: 3 is so much more then just “don’t have time” - our sr devs usually understand that customization carries hidden costs- and plain implementations are cheaper. Nothing is worse then superOptimized systems. They are heavy on support, upgrading, ramping up new members. Sr devs usually understands this. It’s the same with adding extra modules - it carries a cost-

Collapse
 
leob profile image
leob

Brilliant :) good to put some of these myths to rest

Collapse
 
phongduong profile image
Phong Duong

No matter what seniority you have, you will always have to keep learning. Thank you for sharing

Collapse
 
sarahcodes_dev profile image
Sarah 🦄

“Software development is a life-long adventure. The destination is always changing; the journey is the interesting part.”
This ☝🏻💯

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Thank you for this.
Number six is especially spot on!

Collapse
 
gmeben profile image
Grant Eben

Yeah, number six hits hard.

Collapse
 
rbseaver profile image
Rob Seaver

I don't know what twenty years counts for, but I feel all six of these very, very deeply. Thank you for sharing and letting some of us know we're not alone!

Collapse
 
shubhambattoo profile image
Shubham Battoo

Very relatable for a person trying to transition slowly into a senior dev.

Collapse
 
cristiancastrodc profile image
cristiancastrodc

Great list!
I have 6 years of experience and point 6 is really true.
I don't feel like a senior dev and I don't know if I will ever feel like that with so many things to learn every day!

Collapse
 
oneguycoding profile image
Steeve McCauley

Can we use goto yet?

Collapse
 
codemouse92 profile image
Jason C. McDonald

If you know why you shouldn't use goto, you may use goto.

Collapse
 
felixdotgo profile image
Felix

I'm a senior fresher, for sure :D

Collapse
 
rodrigovallades profile image
Rodrigo Vallades • Edited

Remotely comparing that something negative is for "sissies", in this day and age, is very unfortunate. I lost interest in reading the rest of the article after reading this nonsense.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

It seems you skimmed a bit too quick and missed what was actually written. Allow me to help you by adding emphasis to the quote:

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

As a rule, it's wise to slow down and carefully re-read statements before reacting to them.

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

I mean... the way it's phrased you're still using a negative term for effeminate men (i.e. sissy) and making it seem like a bad thing. I know that's not how you meant it to come out, but that's how it reads.

In over explained terms:

Saying "X is for sissies" when one means "X is bad" means that one means sissies are bad. Saying "junior devs think X is for sissies" does not remove the negative connotation. Also, since you can't know what junior devs think (unless you have some kind of super power), you're saying you think sissies are bad. Adding "Nothing could be further from the truth" only reinforces the negative connotation, because you're denying that X is bad, not denying that sissies are bad.

Thread Thread
 
codemouse92 profile image
Jason C. McDonald • Edited

I literally do know what junior developers think. I mentor them 1 on 1 on practically a daily basis. This stuff comes up. But that's not where the term usage here comes from.

First, being a "n00b" isn't bad either. There is an implied "only" there, and retrospectively, the message would be clearer with it there. Syntactic error.

Second, I did not know the new connotation of "sissies". I've never applied it anything myself, although I grew up HEARING it used. Thus, the usage here was a deliberate reference to how lots of boys will irrationally claim that perfectly normal things are "only for girls" and "only for sissies" because they think, wrongly, that common sense detracts from their "tough" image. Think "The Sandlot". It was meant to imply that sort of misperception.

But, since it's clearly a point of contention, I've revised.

EDIT: I know why I'm baffled now! I never even implied that ANYTHING was "bad" in that paragraph. The misperception I describe explicitly reads as "if statements are not for rugged, experienced developers." The "bad" part had to be read in, which puts the perception question back on YOU, the reader.

Collapse
 
makeavoy profile image
Nick McAvoy

This is pretty hopeful, It's just too bad all the jobs out there are for senior devs

Collapse
 
codemouse92 profile image
Jason C. McDonald

Not at all. I've come across more mid-level jobs than senior ones.