Bare Metal Beginner: A Note

In the programming world, “bare metal” is a term engineers sometimes use to refer to a piece of hardware with no software installed yet. It’s a machine that is unconfigured, unprogrammed, and spotless in its naive potential as a computer.

At least I think that’s what it means. It’s my best guess based on some context clues and a few overheard snippets of conversation. But I haven’t really had time to look it up. I’ve been busy.

I’m living the life of a student right now, with all the ups and downs that come with along with that. Deadlines, late nights, confusion, break-throughs, learning, and the constant feeling that I may never actually figure out what’s going on. I’m two months into a software engineering program. I’d never seriously studied technology before I got into this program so most days it feels like I have only the most general idea of how this all works. There’s not a lot of time for extras like reading up on cool slang like “bare metal.”

There are some hints, though, that things may be about to change. Every now and then I’ll write some code that I know instinctively will work. Every once in a while I’ll see a problem and have some basic intuition about how to sketch out a solution. I’ve found the Go language and I seem to have some resonance with it. I’m getting a handle on things little by little. And that’s a good feeling. So now it’s time for a note to self:

Never forget what it’s like to be a bare metal beginner.

Never forget what it feels like to have no idea where to start a project. Never forget what it feels like to troubleshoot a function for an hour only to realize it was a single missing semicolon that was screwing things up. Never forget what it feels like to look at a block of code and have absolutely no clue where to even start trying to read it.

Why do I think is this important? Why not be happy about all the new understanding and just move on to the next thing?

Because every engineer is a teacher. Whether or not you plan to, you’ll end up educating other people about what you do and how technology works. The business of software engineering only happens inside the ecosystem of the larger business world. You’ll be the one explaining things to bare metal beginners, whether they’re new hires working for you, clients who need to understand what you can offer, or non-technical supervisors who wants to make your life easier if only they can figure out what exactly it is that you do.

So this is my note to myself: remember how it feels to know absolutely nothing about programming. Use that memory to communicate with non-engineers. Hold on to that humility and use it to become a better communicator about how the job is done. Be humble. Because we all started from bare metal.