I write code for a living. You might say I'm a professional software engineer, but really software engineering is much more than just a profession – it's a lifestyle. The hoodies, the ping pong, the endless snacks and soda… it's all true. And yet, as rewarding as this field can be, I have a confession to make: Sometimes I wish I never learned to code.
Quirks
Ever since I started learning to code, browsing the web has never been the same. No longer can I simply accept the errors I encounter on other sites as I use them. Whenever something strange happens, curiosity gets the best of me, and I have to open up the browser's developer tools and start debugging.
Cryptic error message when trying to submit a form? You'll find me delving into the JavaScript console looking for error messages, digging through the source code, and observing the network requests as they come and go. UI looks a little bit outdated, or has a really good-looking page layout? Either way I'll be resizing my browser window just to see how well it handles screen size responsiveness. Comic Sans as your font of choice? I'll probably never trust you or your company ever again.
Professional Life
If you think those browsing habits are bad, just wait until you hear about the kinds of conversations I have with other software engineers. As a whole, engineers tend to be fairly opinionated. Pedantry runs in our blood. Do you indent your code using spaces or tabs? Are you more of a Vim or an Emacs fan? Chrome or Firefox?
In wiser circles these conversations will ultimately lead to someone asking "Does it really matter?". Bikeshedding is a real phenomenon and needs to be carefully kept in check.
As more and more companies adopt agile methodologies, from time to time we have to weigh the comparative trade-offs between using Waterfall, Scrum, or Kanban development lifecycles. We all enjoy bashing on Waterfall as an artifact of the past used by old-fashioned and inefficient corporations. However, the Scrum versus Kanban war rages on.
"You're a believer in Scrum, you say? I'll bet you love your artificial time boxes that cause hurried code to be imprudently shipped in order to meet an imaginary deadline before the sprint ends."
Speaking of agile, what is a story point, anyway? A measure of time? Effort? Complexity? Risk? All of the above? You and I could likely spend hours debating the merits of each definition without coming to a mutual understanding.
At some point this may devolve into more bikeshedding, but being able to understand one another and communicate effectively is critical, and that includes having a shared understanding of the terms we use throughout the day.
Frontend development opens up a whole other world of talking points, most notably: "When are we finally going to drop support for Internet Explorer?" I have to walk the fine line between hating on Internet Explorer and wanting to drop it and simultaneously understanding the need to support it for those of our customers that are stuck using it. (Those poor unfortunate souls…)
Continuous Learning
Continuous learning is a big part of software engineering, as the technological landscape frequently changes. With practically hundreds of new libraries and frameworks being released every month, JavaScript burnout is real.
The outside observer probably thinks I'm making stuff up when I tell them I spent my day configuring Webpack, Rollup, and Babel in order to use the latest ES6+ syntax. Or that Angular and AngularJS are two vastly different things. Or that LitElement, Svelte, and Stencil seem like promising web component solutions. Or that Deno could be the new Node.
When someone asks me what I do for work, it's hard to respond without spewing acronyms at them: "I usually work with frontend technologies, so things like HTML, CSS, and JS. Occasionally I have to use PHP or SQL, but I'm more of a MEAN/MERN stack developer. Sometimes I use PaaS technologies like Heroku, but other times I'm using IaaS providers like AWS or GCP."
Personal Life
In my free time, I read books with really dry titles like Clean Code, Refactoring, and Domain-Driven Design. When I'm not reading a textbook, I'm reading articles online that often contain questionable hit-and-miss advice or watching someone's coding tutorial. Podcasts about programming are even more enjoyable, because what could be better than listening to someone talk about code on my commute to work where I then get to spend the day also talking about code?
In addition to consuming content online, software engineers also spend a good portion of their personal life creating content online. My personal hobby is building simple apps and games no one will ever see, like Crossy Block, this Flappy Bird knock-off, or this corporate BS generator. Is this a waste of time? Maybe. But does it bring people joy for about two minutes when they see these apps? Absolutely.
The Truth Is…
And yet, the truth is, coding gives me an opportunity to create and to be creative. It helps me bring ideas to life, almost quite literally building something out of nothing. Software engineering allows me to solve interesting and difficult challenges, ideally to make people's lives easier in some small way. My profession helps me stretch and grow intellectually. I have the opportunity to be continuously learning, and I even get paid to do so!
The truth is, I love to code.
Top comments (27)
Tyler, you've managed to sum up all the feelings that I have on a daily basis. It's funny how we go from "I hate this thing" to "that's fantastic" in a matter of minutes.
But, in the end, we end up enjoying the process... even with something like a decade dealing with the software area.
This. 👏👏
Although I'm curious to know who are those people who are stuck using IE?
In my experience, it's often been large corporations that have been around for a long time. At my current company, IE users make up about 10% of our customer user base, which is way higher than the global averages of 2-4%, which is really interesting.
We currently use a Preventive Maintenance program at work to track work orders and PM's. It is a Four Rivers product called TMS. It only runs on Internet Explorer because it is a Java Web App and TMS won't update it.
Usually larger corporations that are running (older versions of) SAP or other outdated backend systems that only work properly (or: 'as expected') in IE.
Most likely because they have no need to upgrade to latest version and the insanely high invoice that comes with that.
All companies still in 2020 use it all over Europe, very sad but true.
Thanks to everyone who replied for the insights! I really did not think IE still holds a share this big.
While at work today, I ragequit while writing some styles (not really good at it) and told myself I'll never write a single line of CSS again, then after about 5 minutes it clicked and I was just happy to continue. Developers go through this cycle often, and some frequently than others :) Happens to the best of us
Thanks for the post!
I got fed up with the new ES6 syntax, callbacks vs promises vs async, choices in compilers like Babel, JSX, and things like
fn.bind
andfn.call
... I gave up reading JS articles and writing new JS code.I'm still upset with how much one has to know about JS. Which is a barrier for learning and using it.
I'm trying to use JS more as a tool to solve problems rather than something to get frustrated at in an attempt to master.
Nice article, well balanced and pleasant read, I’d say your not just a writer of code.
Thank you Mark! That’s a high compliment. :)
I have to say that you probably mean 'you are' ! I liked the main post but lots of errors creep into code when our in built compiler aka brain does not spot these errors. I love coding too...
Yep - thanks for the typo correction Mike
I like the internet meme
To answer the important question!
tabs, vim, firefox
A lot of developers can relate to each point you shared. Thanks for sharing! As a junior developer, it helps a lot to read that from experienced ones :)
My thoughts exactly! Particularly on the merits of different agile methodologies 😂
Splendid read.
Thank you!
You had me at "Sometimes I wish I never learned to code."