Am I a Software Engineer?

Introspection

Unlike other sites that are trying to sell you something, I’m not. So I can be brutally honest. And the truth is that this industry isn’t for everyone. Not everyone is cut out to be a Software Engineer. You have to be the type of person with a stubborn drive to make things work while having, almost, limitless patience to power through it. You need to lean on yourself and figure most things on your own. Every day ends in mental fatigue. But for those of us who thrive in this career, we get so much joy when it finally works!

It’s Alive!!

Yep, That’s how it feels! ☝️😂

The Challenge

If you already play with legos you can skip this challenge. 

Now, If you’re not entirely sure if this is for you, I have a little challenge that I gave my sister-in-law when she was thinking of majors in college. She saw what I did and thought maybe she could be a programmer.

Enter, the Lego 3 in 1 Go Kart Creator Set!

I don’t think I’ve run into any colleague in this line of work that didn’t or doesn’t still play with Legos. These are a lot of fun and as an adult who played with legos for hours, I have transitioned to IKEA furniture and I still enjoy building that as well!

If you’re really not sure then I challenge you to pick up the lego set above and build all 3 vehicles. This is a great exercise because it will cover the following practices.

  1. Reading Documentation
  2. Following Instructions
  3. Integration
  4. Object-Oriented Programming
  5. The Module Pattern

You don’t have to know what all that means yet but this is very much a wax-on wax-off exercise.

Wax On Wax Off

If you can get through this challenge with at least some amount of glee, then you’re ready to begin your journey. Trust me, if you don’t find any joy in the challenge this isn’t the career for you. I guarantee you will be miserable. Frustration is ok, but you should get some joy out of crossing the finish line.

When you’ve completed the challenge post photos of your build in the comments below! Hopefully, when you get your first software engineer role you can keep this car on your desk to remind yourself that you should be having fun!

Innate Qualities of an Engineer

I say innate because these are qualities that most bosses will expect you to have and will often spend very little time coaching. But you can learn to master these on your own.

Patience

This is always number one on my list. Honestly, without this, you need not read any further. My patience is tested day after day. And I’ve gotten better over the years. But you have you be able to work through a problem for hours and often times, days. Sometimes you are the only person working in your domain and you’re up against a deadline. You need to be able to take a deep breath, go for a walk if need be and think clearly through the problem without looking for blame.

Humility

I’ve read somewhere that pride is the death of any developer. You will often be working with other engineers who have been in the industry longer than you. You might want to come out of the gate confident so you stand tall like others but honestly, it doesn’t help. Listen to your elder engineers and use them as an opportunity to grow. When you don’t agree on something, ask them to explain further instead of jumping to challenge them. If they don’t have time to explain their position then google it. If you find a technical conflict in their direction, ask if they see this conflict as a problem. Assume they already know about it. If they didn’t, they will usually be grateful you brought it up.

See how I continue to stand from a student to a teacher perspective? I’ve been in this industry for 20 years and I still communicate from a position of the humble student. I have colleagues who still have 5, 10, and 15 years on me. And even if they are the same age or younger they might have started at a level of greater complexity than I. My co-worker Devin is a great example. She’s 10 years younger than me, this is her second job but she’s brilliant! I’ve learned so much from her!

People greatly appreciate this pattern of behavior and it will get you very far! You will not only learn and grow a lot faster but you will keep your job a lot longer!

Open Mind

This is the “try new things” everyday career! You MUST come to work with an open mind. Colleagues will make decisions to adopt new frameworks, coding styles, best practices or languages. If you don’t have an open mind to sudden shifts and changes you will be seen as a roadblock to the team. If you can’t get on board you will not be tolerated. I’m dead serious.

Personal Drive

You need the drive to learn things on your own and figure stuff out. Google is your friend. There’s nothing more embarrassing than to ask someone for help when the answer is clearly the first or second result in Google. I’m not saying you can’t ask for help but it looks better when you do ask and share the things you tried on your own.

Curiosity

It may have killed the cat but it is the lifeblood of an engineer. The more curious you are about how stuff works, the deeper understanding you will gain and the faster you will be at solving problems. I don’t know if this can be taught. You’re either curious about how stuff work or you don’t care.

Creativity

Creativity might be thought of as an artistic domain but it isn’t limited to the paintbrush. Creativity in software is being able to think of interesting ways to solve problems or architect software. It takes creativity to build something no one has built before. Or to build it in a tech stack that’s new. Now, in rare cases, this can bite you. You don’t want to mistake creativity for being clever. Clever can have you thinking of round-a-bout solutions when there might be a clear and effective way to build something. So watch out for that.

Communicative

Communication is your savior. You can’t build in a vacuum. The more people you involve in your decisions the better the outcome of your project will be. You will see that often times other might stop you before you go too far down a rabbit hole. And other times you will get little nudges left and right to correct your path or save you time. Many times I was excited to build something when, until I started talking to others, I was unaware that someone had already built that piece of technology.

This is my personal list of what I have come to find as good qualities of an engineer. I have found myself in bad situations when I didn’t adhere to the above. I will expand on each of these in a Soft Skills Series later on.

Feel free to ask me any questions in the comments below!