Sunday 16 June 2024

Why Mastery of Programming is a Myth

Much has been made about mastering the craft, and the constant moaning that developers these days are sloppy and don't make the grade.

Some developers feel that way about themselves. They feel that they aren't masters of their craft (spoiler: many of them aren't) and this disqualifies them from being where they are right now. That they will be found out someday. That they should be grateful to be employed. I'm no stranger to that feeling, especially during my younger years.

On some level, I get it; we all want a certain standard of professionalism in the workplace. And not adhering strictly to standards, results in bug-ridden, subpar software. I've even said before in a previous blogpost that sometimes, taking the trouble to do the simple things right, is vital.

When does this become silly?

There's a limit to how much gatekeeping can take place before it becomes ridiculous.

The saying goes like this: If something's worth doing, it's worth doing well. Now, this isn't exactly untrue. If you're going to put in the effort to do something, you may as well try to do it properly.

However, here's something to consider. Trying to do something properly isn't the same thing as actually doing it well. Ever heard people butcher your favorite song in a karaoke session? Do you think they're singing badly on purpose?

Singing badly.

Let me counter the saying with this - before you learn to do something well, you first have to learn to do it half-assed. Kind of like learning to walk before you can learn to run.

Now, do programmers write bad code? Of course they do. It's not always due to the lack of giving a shit. Sometimes they just never figured out a better way. Even with the will to continuously improve, there are a million things a programmer can learn, all in different directions, how to code better.

Are we saying that programmers who don't currently write great beautiful watertight code, shouldn't have a job? And how, pray tell, are these programmers ever going to get their feet wet if they don't get to apply their code in the real world? Not all code sends people to Mars, or handles billions of dollars in financial transactions hourly. Some code just handles penny-ante stuff like displaying blog posts on a web page, and if these programmers want to do that job, why shouldn't they? Unless you're saying that you want that job?

The insistence on "Mastery"

Sometimes, the insistence on "Mastery" in programming is just ego talking. Not mastery. Masturbation. The mental kind.

You know those job ads that want their candidates to have a "mastery" or "best-in-class" or "first-rate" of whatever discipline? They're kidding themselves. Whatever project they think is going to change the world, chances are, it's just marketing talk and that role doesn't actually need anyone that good. They just want to feel like they're getting the best, even though common sense would tell them that the best would be already happily employed somewhere else. The best wouldn't likely be applying to their stupid job applications.

We only want
the best!

I mean, can you imagine the sheer level of delusion it would take to even imagine that your fabulous earth-shattering idea (which probably has already been done to death) requires that amount of expertise?

Or even the famous phrase "go big or go home", a favorite phrase among the ambitious. Really? So if you can't be the best, or even "go big", you're just going to pack up and leave? If you can't be a master of your craft, you're just going to stop embarrassing yourself by even trying to improve? That's not being a serial winner, that's just being a baby. So go suck on a pacifier, Junior, adults are working here.

I should also mention that in just the field of programming alone, there are way too many things to learn and get good at. Just statistically, what you learn tends to be what you need, at that moment. What you get good at, tends to be what you keep doing over and over. If you needed to use Python to, for example, clean up string values before committing them to a database, you would end up learning a lot of string manipulation functions, the gotchas of character encoding, and all that jazz. You certainly would not be learning about Python's web-scraping or chart-plotting utilities. Would that mean you didn't know Python at all, just because you didn't know everything about it? That's a depressingly binary way of looking at things.

"Mastery"? This is a joke, right?

And on the other side...

...we have programmers getting Imposter Syndrome and wondering if they're good enough to deserve their current position. Newsflash: where you are right now, is the product of not just your technical abilities, but also how much you impressed during interviews and how well you networked with the right people. Something about you made up for whatever you think you lack. Ergo, you pretty much deserve to be wherever you are. This Imposter Syndrome nonsense suggests that you think working as a programmer is only about programming. And that, my friend, is one the the first and biggest mistakes a programmer can make.

If you're going to make a living at coding, the first fact that you need to reconcile with, is that your first few attempts are going to be laughable. Your first hundred websites, your first hundred web forms, your first few web apps. They will be, despite your darnedest efforts to the contrary, horribly inefficient, a nightmare to maintain and result in a mountain of technical debt. Does that mean you should listen to be would-be gatekeepers of our sacred profession and never start until you have become a master?

Absurd.

Why stop there? Let's take this nonsense even further.

Unless you can do more than boil eggs and make sandwiches, unless you can do shit that would win you the approval of Gordon Ramsay himself, you shouldn't step in the kitchen.

Can't flaunt your figure
unless it's perfect?

Unless you're in great shape and the sight of your figure in tights isn't visually offensive, you should dress modestly.

Unless you can type in full sentences and perfect English and have full mastery of the language, you should stay off Social Media. (I would actually support that one)

This is why you get software developers who are scared to death to admit when they made a mistake, or that they don't know something. This harms the industry a whole lot more than having an entire bunch of supposed "masters" of their craft out there. If you can't admit that you don't know something, if your environment is full of factors that discourage that kind of disclosure, that adds self-created roadblocks to learning. And without learning, there is no growth.

Conclusion

Everything is a work in progress. You're a work in progress. Forget that at your own peril.

Why insist on perfection in an imperfect world? Exercise some humility; you're probably not destined for greatness. And unless you're willing to start small, you almost definitely never will be.

Master of none,
T___T

No comments:

Post a Comment