Why Experience Matters in Coding

Published by

on

There is always that new computer science graduate who begins their first job armed with the knowledge… no belief that what we do is based on science. There is the “right” way to write code or solve a problem.

I’ve often found myself counseling them about the true nature of our field. We aren’t engineers, we are craftspeople. Why do we choose to use one approach over another in this specific case? Why are we using this framework instead of the other one that solves a similar issue? Why don’t we use several frameworks to solve the same feature across our codebase, or why do we?

Software engineering isn’t about the correct answer, it’s about the right answer for the circumstances. It’s a judgement call, based on our experience, based on reading between the lines of a requirements doc.

I’ve had engineers who had the impression that, since they already had a degree from a prestigious school, they knew all there was to know about our craft. The paper hanging on the wall meant they didn’t need to keep honing their craft. But, just like the sculptor or painter, each project we work on, each module or method we write, elevates our skill in the craft of software wrangling. Banging our heads because we can’t seem to get the code to work & we are unsure why it’s not working as intended. Each code review, where senior developers share feedback on why something could be a problem or won’t work as expected, is an apprenticeship, where our real learning begins. We learn not from our triumphs, but from our failures and our blind spots that burn us later.

There isn’t instant gratification of that skill. We don’t press a button and earn the ability to see all these patterns and make decisions based on what we see. It takes practice, with hundreds and thousands of “at-bats”, that guide our comprehension. Where you can get to the point that you can scan through code, and just from the indents forming a shape, you can identify where there may be issues in the code.

Today, everyone is enamored with using AI to help us code. It feels like that “easy button” where it takes over the grunt work of typing. We act more on autopilot, handing the reins off to the machine to understand what we want. But, the AI doesn’t have the same hard-earned craftsmanship that teaches us why we approach the problem in a certain way. AI is very good at examining thousands, or even millions, of examples of working code to produce a reasonable facsimile for your needs. It can produce the what, but since it never learned about the failures, it never learned through all the late nights of no progress, and it has no knowledge of the why.

Don’t give up on the real learning opportunites that coding can provide to you. AI is but a tool and it can even undermine your skills as a software developer. Remember that craft is untouchable.

Discover more from Niels Meersschaert

Subscribe now to keep reading and get access to the full archive.

Continue reading