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:
- That it is normal to have more lines of tests than production code.
- That having no choice but to use
vi
early in my career would mean that I can never leave those keybindings behind. - 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ā.)
- 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.)
- That writing code is only a small part of what goes into shipping production software.
- 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.
- 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.
- That having decent people skills makes my technical skills suspect, in the eyes of some.
- That learning to manage my own energy and mindset is the most important skill through gnarly debugging and hairy code reviews alike.
- 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.
- 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.)
- 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.
- That CSS is the most complex modern programming language.
- That internships should always be paid at market rate.
- 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.
- 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.
- That the best technology doesnāt necessarily win. In fact, it often doesnāt.
- 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.)
- That appropriate use of emojis would become such an important communication skill.
- 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)
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.
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...
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...
For point 18 there is, google mutation testing. There's 1 or 2 mutation testing frameworks I've seen that are pretty cool.
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!
So true
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 this. But hats off to design, front end, and testers.
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.
@anaulin , you made the latest issue of TLDR newsletter. I just saw it in my inbox :D - tldrnewsletter.com/archives/20181113
š Thanks for letting me know!
You also made last's week High Scalability's "Stuff the Internet says on scalability": highscalability.com/blog/2018/11/1...
You should take a look at Mutant in ruby world! It's awesome!
Anyway, great post!
So true. Love it!
30+ years in...
Nailed it :)
Everything except this. To be fair my experience with PHP has been entirely maintaining other developersā code but one of my least favourite languages.
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.