I Wish I Never Learned to Code

Tyler Hawkins - Oct 26 '20 - - Dev Community

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.

Please don't use Comic Sans

Please don't use Comic Sans

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.

xkcd - Real Programmers

xkcd - Real Programmers

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."

Dilbert - Scott Adams

Dilbert - Scott Adams

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…)

Internet Explorer meme

Internet Explorer meme

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."

Developer spin-off meme of a Poorly Drawn Lines comic

Developer spin-off meme of a Poorly Drawn Lines comic

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.

Corporate BS Generator app

Corporate BS Generator app

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.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .