DEV Community

Ana Ulin šŸ˜»
Ana Ulin šŸ˜»

Posted on • Updated on • Originally published at anaulin.org

Things Nobody Told Me About Being a Software Engineer

My dad started teaching me Basic when I was about 7 years old, and since about that age I knew that I wanted to build software for a living. It was obviously a fun and useful thing to do, and something that I could do well. But there is a big ā€” and I mean Grand Canyon-scale BIG ā€” difference between ā€œprogrammingā€ and working as a professional software engineer.

Here are, in no particular order, some things that nobody told me about working in tech as a software engineer:

  1. That it is normal to have more lines of tests than production code.
  2. That having no choice but to use vi early in my career would mean that I can never leave those keybindings behind.
  3. That we spend a ridiculous amount of time setting up builds, releases and general tooling. Sometimes as much or more time that you spend coding. (And donā€™t even get me started about operations, on-call and all the other pieces that turn ā€œprogrammingā€ into ā€œa product in hands of usersā€.)
  4. That my gender or my age or my ethnicity or my sexual orientation or my weight or my clothes might (will!) have an impact on the perceived quality of the software I build. (Or, in other words, that this is not really a meritocracy, and doing a good job is not nearly enough.)
  5. That writing code is only a small part of what goes into shipping production software.
  6. That so much of my work life would be subordinate to the choices of barely-clued-in VCs, and overwhelmed first-time founders with no industry experience.
  7. That everything old is continuously made new again ā€” from MySpace to Facebook, from IRC to Slack. PHP is cool again, and functional programming is trending.
  8. That having decent people skills makes my technical skills suspect, in the eyes of some.
  9. That learning to manage my own energy and mindset is the most important skill through gnarly debugging and hairy code reviews alike.
  10. That you can have more than a 100% base salary difference doing the same job, depending on if you work at a small startup or one of the large companies.
  11. That not all software engineering roles have the same cachet in the eyes of the local culture. (Alternatively: that good frontend and test automation specialists are grossly undervalued.)
  12. That the idea that working at a small startup will make you rich is outdated. Barely anyone IPOs these days, and you can save up more easily if you work for a bigger, stable company.
  13. That CSS is the most complex modern programming language.
  14. That internships should always be paid at market rate.
  15. That spunky online book vendor would become synonymous with distributed infrastructure. That the new Altavista competitor would become a less bad Microsoft Office. That the new version of My Space would help damage democracies the world over.
  16. That, 15-ish years in, my main professional contributions could be summarized as: nudging folks to write better and/or more tests, and getting people to talk to each other.
  17. That the best technology doesnā€™t necessarily win. In fact, it often doesnā€™t.
  18. That I would be this suspicious when the tests pass on first try, and have to invert my assertions to force a test failure and convince myself that things are working as intended. (Aside: Why is this not a standard feature of testing frameworks? I want some way to re-run tests flipping some of the assertions, to make sure they are testing what I think they are.)
  19. That appropriate use of emojis would become such an important communication skill.
  20. That it is all people, all the way down. They are (mostly) lovely, and not nearly as hard-shelled as turtles.

What is something that surprised you about working as a software engineer?


Originally published on https://anaulin.org/blog/.

Latest comments (75)

Collapse
 
ivannat profile image
IvannaT

Because I junior developer I'm interested in similar articles and it was realy useful to know some things, thanks;)
So, any developer needs to have a dreat CV and I want to recommend resumeyard.com/cv-writing/ where profesional cv writers can do this.

Collapse
 
megablog6 profile image
MegaBlog

That's a great Article Ana, everyone should know about these points. I found this article pretty informative so I mentioned it in my blog: megablog.site/2019/06/11/what-is-a...

Collapse
 
megablog6 profile image
MegaBlog

Nice article, I'm surprised that you have started programming at a age of 7, would like to hear more about it. I have written about my own experience in being software developer if you would like to see it here it is: megablog.site/2019/06/11/what-is-a...

Collapse
 
speedyln profile image
Speedy

For point 18 there is, google mutation testing. There's 1 or 2 mutation testing frameworks I've seen that are pretty cool.

Collapse
 
burdettelamar profile image
Burdette Lamar

Re number 18: What a great idea!

I'm the dev for Ruby gem minitest_log (code is on GitHub). I've added your idea to my list of enhancements!

Collapse
 
paulleclercq profile image
Paul Leclercq

So true

That, 15-ish years in, my main professional contributions could be summarized as: nudging folks to write better and/or more tests, and getting people to talk to each other.

Collapse
 
kaelscion profile image
kaelscion

Alternatively: that good frontend and test automation specialists are grossly undervalued.

Pretty much. And this is coming from somebody who is 100% back end, and when asked what kind of developer he is responds: I can make just about any system work well with the best of them. But I am a trainwreck at making them look any more than terrible. Front end and test folks have such a difficult job because their code needs to be written in an aesthetically pleasing way, and continue to be so when it runs. I actually wrote a post about thishere. But hats off to design, front end, and testers.

Collapse
 
jweboy profile image
Jweboy • Edited

That CSS is the most complex modern programming language

I very much agree this point . Css is easy to get started, but mastery is very difficult.As a front-end developer, I also found this to be a big problem, but fortunately I focused on javascript.

Collapse
 
rhymes profile image
rhymes

@anaulin , you made the latest issue of TLDR newsletter. I just saw it in my inbox :D - tldrnewsletter.com/archives/20181113

Collapse
 
anaulin profile image
Ana Ulin šŸ˜»

šŸ˜Š Thanks for letting me know!

Collapse
 
rhymes profile image
rhymes • Edited

You also made last's week High Scalability's "Stuff the Internet says on scalability": highscalability.com/blog/2018/11/1...

Collapse
 
squiter profile image
Brunno dos Santos

why is this not a standard feature of testing frameworks? I want some way to re-run tests flipping some of the assertions, to make sure they are testing what I think they are.)

You should take a look at Mutant in ruby world! It's awesome!

Anyway, great post!

Collapse
 
wooramy profile image
Wooram Youn

So true. Love it!

Collapse
 
emacs_gifs profile image
emacs gifs

That, 15-ish years in, my main professional contributions could be summarized as: nudging folks to write better and/or more tests, and getting people to talk to each other.

30+ years in...

Collapse
 
madelene profile image
Madelene Campos

Nailed it :)

Collapse
 
daveclarke profile image
daveclarke • Edited

PHP is cool again

Everything except this. To be fair my experience with PHP has been entirely maintaining other developersā€™ code but one of my least favourite languages.

Collapse
 
danielzucchi profile image
Daniel Zucchi

Oh yes! Letā€™s make number 18 happen for the love of everything!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.