Wednesday, December 30, 2020

How to become a Software Engineer, part 2 (or where have you been, Jack?)

Where have I been? Good question as clearly it hasn't been maintaining my blog or telling you the part 2 of becoming a software engineer. So, what have I been doing? 

Let's review

Almost 4.5 years ago I wrote that article which told my story of getting to Microsoft as a Software Engineer. That was at the bequest of a friend who kept prodding me to put it to digital ink. I hoped it would inspire folks who, like me, didn't have the good fortune to afford a degree, in computer science or otherwise, that they, too, could become software engineers. Honestly, I doubt it got enough traffic for anyone to be inspired but it's the thought that counts, right? Hello? Is this thing on? 

Ok, but where have you been?

The short answer, honing my craft. Since I wrote that post, I've held 4 roles, 2 at Microsoft, in between them I took one role at a company which closed their offices 3 months after I joined them, and now at a company writing Java micro-services from scratch, design to deployment, for the first time. I've had a lot of technologies to learn in the process, both internal tooling at the various companies and cloud services from Azure to AWS. For this guy with a bit of ADHD, between that and family my plate was full and I lost touch with the outside world a bit. That includes you, dear reader. 

That's all well and good, Jack...

So, why now am I suddenly posting? I have to admit to something I bet almost everyone has experienced, imposter syndrome. I had it pretty bad working with a bunch of young folk (I'm almost 53 now) with CS degrees, some of them advanced. I had my associates degree but no one really sees any value in it. 

Instead, the interviews are all about those CS fundamentals that most unschooled developers never have to think about. Do you know what a hashtable really is (dictionary in C#)? Most developers making a good living for their families, not software engineers, just know that it's a way to store values with a key and understand that it's efficient to do so. We don't know that it's useful in solving a bunch of problems in computer science that's mostly esoteric in real world, business logic development. Yet, we use hashtables all the time to great effect. But that doesn't matter when you are being interviewed. You need to know that esoteric stuff. And that sets the stage for imposter syndrome, something I now know too many, possibly most, software engineers suffer from. 

The industry literally interviews in a way to make us question our ability, our very right, to hold the roles we just obtained. Oh, and then we don't use any of that CS fundamentals stuff again in the role unless we happen to write some poorly performing code and have to later figure out where we goofed up (or someone else did; same difference). 

Are you getting to a point?

The point is that I still struggle with imposter syndrome when confronted with a technology I've never worked with before, but the monster is much tinier now and I can squash it with a little effort. I've been at this software engineering stuff, in 2 languages now, for long enough that I trust myself to be able to figure it out. And that's the key. Get that under your belt sooner. Trust yourself. You got this far because you are capable of figuring things out. By luck of biology, you got the brains for this so stop doubting yourself just because the stage was set for you to do so. Ignore that demon. Like me, you may not have time (or attention span) to do much else but you've got this. 

And then?

Now that I'm finally being able to clear up a bit of mental clutter having put that demon behind me, I am working to getting back to my true passion, helping others hone their craft. I'm no expert in anything and will never claim to be but I do have knowledge. The thing about knowledge, its best use isn't in hoarding it. It's in sharing it. And that's what I aim to do now. I'll be looking for ways to share what I know, through mentoring using this medium and individually and out in the community, however that presents itself during and post COVID-19. Be well and be seeing you soon.

Mocking GCP APIs containing iterator structs

New company & language, who dis? The astute amongst my readers may have noticed that I left Lightbend to go work with some friends who ...