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.
- You will never get anything unless you ask for it
- EQ > IQ
- Workplace empathy
- Interview skills
- Handling burnout and career confusion
- Years Experience != Experience.
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.
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.
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
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.
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.
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.
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?