DEV Community

Cover image for A Few Things I Learned.  10 Years as a Software Engineer.
Corey Schaf
Corey Schaf

Posted on

A Few Things I Learned. 10 Years as a Software Engineer.

Hello there, I am Corey. This is my first post in (checks notes) a year and a half.

I am a software engineer focusing on backend technologies and distributed systems. I have worked in a variety of fields since graduating in 2010. I entered the industry working for an e-commerce marketing firm building custom e-commerce solutions in C# and .NET. After a few years of that (which was a learning experience while also being a negative depressing environment that ruined me until I left) I took another job at a local company that builds data and engagement platforms for Higher education. This was a beautiful time that allowed me to shed the negativity of my previous position and get to work with amazing people.

In the same time span I started a few small companies to various degrees of failure, published games on the iOS app store and built a few SaaS applications in my spare time. Finally I find myself where I am today, a growing Series B startup that I joined at the seed stage.

What follows this is just a few of the things I learned along my way. I am in no way perfect, and at times quite confused on what my future in this world holds, but these are things rattling around in my head. Here goes.

Run Down:

  1. You will never get anything unless you ask for it
  2. EQ > IQ
  3. Workplace empathy
  4. Interview skills
  5. Curiosity.
  6. Handling burnout and career confusion
  7. Years Experience != Experience.

1. You will never get anything unless you ask for it.

Do not assume you will get that raise, that promotion, that team transfer or anything just by waiting your turn. You need to be explicit in your intentions. Many times we hesitate to ask for things to avoid sounding needy or that we are scared of hearing “no”. Being told “no” is the worst case scenario, and that is such a simple inconsequential thing that it really doesn't matter. What it shows is that the company sees you in a different light than you see yourself. This knowledge is powerful. At the end of the day you get what you want (granted you have to earn it) or you have the knowledge that you wont be getting it and you can use that to drive your future career moves.

2. EQ > IQ

If you have ever worked in a negative place at a hostile company, you will understand how IQ is not a means to an end. I would rather work with amazing people that are not the greatest engineers than I would want to work with geniuses who are ego driven ass hats. Great people have the ability to make the people around them better, they amplify positivity. EQ will take you farther than IQ ever will. Now with all things moderation is key, this doesn't mean people with high IQ are always negative or high EQ means they are sub-par engineers. You will know those alpha ego’s when you come across them.

3. Workplace Empathy.

We are all going through some shit these days. Some more so than others. Being able to understand others helps us develop closer relationships with those people. This can then in turn help build bonds between teammates and foster a culture of positivity and inclusiveness.

A great quick video: Empathy vs Sympathy

4. Interview Skills

Working in the real world makes you rusty. Im sure we all had interviews that we look back on and just are astonished at how ill prepared we were. Interview skills differ from those used in day-to-day work, and you never know when you will need those skills to be sharp and pristine. Verbal communication, technical communication, technical comprehension, system design. All critical skills we must posses when we try to impress prospective employers but skills that deteriorate over time in the real world (maybe not for all, if you are lucky).

Interview every ~10-12 months wether you need a job or not. The worst that can happen is you say no. The goal is to keep our interview skills honed and sharp. This part is important for the verbal and behavioral communications. Being able to engage with new people and to have conversations about yourself, your background and your goals is critical.

Don't Fear the technical interview. Yes these don't represent day to day work. Yes they suck. Yes it makes you have dreams of traversing binary trees and running sliding windows on arrays. For many years I would shy away from anything that involved live coding, hackerrank or leetcode. How many opportunities have I missed because I doubted myself and refused to prepare? These technical interviews are for showcasing skill but more so its about showing you took the time to prepare. Plus its always good to understand arrays, lists, strings, trees, tries, searches, big-o and how to piece together scalable systems. Prepare little by little, day by day, week by week. These are things that can take months to fully prepare to a point that we are confident in whatever is thrown at us. Also, don't overfit your memory on specific LC questions. Learn the theory, patterns and ideas behind the data structures and algorithms and how they can be applied to any problem. I recommend "Grokking the Coding Interview" for learning about the ideas and patterns behind the different types of questions and "Cracking the Coding Interview" as a good reference and refresher on those rusty skills.

5. Curiosity

As engineers we must always be curious about many things. Exploring new languages, frameworks, ideas or exploring parallel fields. It's important to not be complacent with what you know and that it's a critical skill to continue to compound your knowledge and skill day by day. There is an overwhelming amount of technology out there these days and it can become cumbersome to try and wrap your head around any of it. They goal here is not to become a 10x'er super engineer, but to just be curious and find things that interest you and keep you excited. Its easy to loose the passion in engineering, especially working in the real world. Never stop exploring, learning and pushing yourself forward.

6. Handling burnout and career confusion

When I first jotted down a list of items I wanted to talk about, this was one of the first ones I noted. Truthfully though, I don't have an answer for this one. It's something I fight through everyday hoping to better understand everything. Point 5 above does help, finding the excitement again in the engineering field keeps the hope alive. If anyone has any ideas or helpful methods, that would be fantastic.

Career confusion is something I define as: Do I want to keep doing what I am doing? Why am I not happy? Do I have any applicable skills outside of programming? Did I waste the past decade? What can I do that I would be happy doing? Every day is just going through the motions, not solving problems that push your creative brain forward, not being taken seriously and just a complete disjoint confusion around your place in this world, professionally speaking.

7. Years Experience != Experience.

We exist as the sum of our experiences. The more we experience and push ourselves outside of our comfort zone the more we grow both personally and professionally. It is easy to fall into the trap of accepting mediocrity and being complacent. I have had done this in the past. Staying at a job too long, not learning new skills, not earning much salary, just being complacent. Think to yourself if I had to define success what does it look like to me? Can you achieve that where you are? Are you getting better day by day? Or are you stuck? Fear not, we all experience this. The key is to invest in yourself, don't give up even when things seem hopeless and acknowledge failures. For failures are the building blocks of success.

p.s. I was going to use more picture, but I didnt. Are pictures good? Distracting? Pallet cleansing?

Top comments (5)

Collapse
 
pazyp profile image
Andrew Pazikas

I've been a database engineer for 10 years and everything written here rings true.

Burnout vs. Career Confusion I still am terrible at, I look at my current role and feel its easy, I can do everything with little challenge bar some occasional tight deadlines due to higher priorities but technically my role is easy to me, now I look at what I want to do next really struggle as my current pay is excellent plus great benefits, but can I see myself doing this for another 30-35 years, no way hence the confusion :)

Collapse
 
mslupski profile image
Michał Słupski

Naah you don't need pictures. Great article, thank you!

Collapse
 
souksyp profile image
Souk Syp.

“I would rather work with amazing people that are not the greatest engineers than I would want to work with geniuses who are ego driven ass hats.”

Same here. Good good

Collapse
 
ncomet profile image
Nicolas Comet • Edited

Thanks ! Awesome article to which I can relate to. I keep doing interviews even if I don't want to quit my job, quite often and it is very enriching.

However I don't agree with the technical interview part. I've worked with very skilled people that don't know what a binary tree is. I've been working since 10ish years, and never have I re-coded a problem found in "Cracking the Coding Interview".

I think it is our duty as engineers to tell recruiters that real life problems can be close to those problems, but that systematically turning down a candidate because "he cannot solve this problem recursively" is wrong. Very wrong. Proof is, you know how to do it, cool (and I bet most interviewers mostly know it because you comfortably have the book's solution, or are used to showing the problem) and if really you do know, you can teach him, and he probably can teach you other cool things you don't know.

I personally rely on pair programming sessions for recruiting people, and never "binarily" refuse a candidate because he could not solve one problem. If he cannot solve all of them, then yes, probably. It is as stupid as denying someone because he or she does not know the shortcut to extract a function, or format code on the IDE.

We have the power to change ways we recruit people, so let's do it.

Collapse
 
yuensl profile image
yuensl

Interview skills is important, but how to get an interview is also a difficult part for me.