How I Became a Successful Software Engineer
Preface
An important part of Outco’s program is being able to learn from other people’s experiences in the community.
Whatever circumstances or background you come from, our experiences are rarely completely unique. A lot of folks who are entering the tech industry, or looking to pivot within it, probably have something in common with you. Whether it’s a passion for a particular sector, similar majors, shared hometowns or universities, usually you’ll be able to find something in common with your peers.
To me, this has two potential major impacts. The first is that it can help provide practical advice for navigating the job search. People who’ve had to walk a mile in your shoes can give you tips for how to travel the road ahead. And while some of the value comes from being able to answer questions you have, the real value comes from them being able to answer questions you haven’t even thought of yet.
The second impact of listening to others’ stories is that it helps humanize the industry and the process of finding a job. These are your peers. They are potential co-workers, managers, interviewers, competitors, mentors and friends. But most importantly, they are people like you and me. They have their individual hopes and struggles like anyone else, and the sum of their experiences is what shapes the community and culture of tech. How you personally fit into this fast-paced and ever-changing ecosystem is up to you to figure out.
But if I had one piece of advice to pass on for how to think about that question it’d be this:
“People are the ends, not a means”
The rest of this post is organized as a recap/summary of a panel of Outco alumni that highlights some of the main questions and advice they had to share. Enjoy!
Succeed in Tech through Curiosity
This section applies both to the job search but also throughout your whole career. Folks on the panel gave a wide range of answers to how they got interested in working in tech and what motivated them personally, but there were a few recurring themes throughout the talk.
A lot of folks started out in some kind of tech-adjacent field and ended up gravitating towards software engineering over time. Usually they were pursuing some kind of math, engineering or science degree and found that they needed some kind of foundation in computer science or programming to continue moving forward.
From there, the combination of career opportunities and their natural affinity for software engineering work is generally why folks moved into the tech industry.
It’s hard to overstate the importance of that second part as it pertains to being successful in this industry. Technology changes very quickly, and the systems you’ll be working with are complex and require the ability to learn rapidly. You have to become familiar with the unknown very quickly, and solve problems today that you didn’t know existed yesterday, and don’t fully understand today. Oftentimes under tight deadlines or market conditions that you exist outside of your control.
What most panelists seemed to agree on was that thriving under those conditions comes down to having a natural curiosity about the world. Being able to step outside of your comfort zone and perform requires a certain level of focus and immersion into the task at hand. You need to be able to go down the rabbit hole and play with the problem in question until it makes sense. You’ll need to go through the list of possible solutions and systematically start ruling options out by considering the tradeoffs of each one.
The way to do all this without it becoming overworked or exhausted is to find a rhythm you are able to enjoy. Solving problems doesn’t need to be stressful. People solve jigsaw puzzles, crossword puzzles, and sudokus all the time to relax.
Something that I remember distinctly early on when I had just started solving algorithm problems was the feeling of everything clicking when I understood how to convert numbers from base 10 into binary. It gave me this profound realization about the world and how the number system we use is somewhat arbitrary, and there are other, potentially more useful ways of thinking about them. There’s a certain sense of accomplishment when you solve, discover and create. Like you’ve had a real impact on things and that your work had a purpose.
Curiosity and focus is a powerful mindset that can give your job search, and later on your career, greater longevity and meaning. Understanding why you’re doing something is key to being able to lose yourself in your work and not need to constantly question what it’s all for. There’s actually a great book about this called Deep Work:
https://www.amazon.com/Deep-Work-Focused-Success-Distracted/dp/1455586692
Coding is important work that will continue to be needed in the next five years and into the foreseeable future. Schools these days are starting to teach children as early as 6 years old in certain countries to give them a head start. Politicians are pushing people towards this field all over the world with incentives and programs to help underrepresented groups in the industry. And while certain things have gotten easier and been automated or commodified in the last few years like web or app design, we’ve barely scratched the surface on what we can do with more advanced technologies like machine learning.
Keep in mind that not everyone who is reading this and just getting into programming as a career will actually still be doing it in 5 years. People’s interests change. 10 years ago I thought I’d be doing biotech research. 5 years ago I thought I’d be doing some type of finance. 5 years from now I might be a full-time content creator. Who knows? There are a lot of ways to contribute to and profit from this technology boom we are all living through.
Succeeding in this environment is both easy and challenging at the same time because we’re in a rising tide that’s lifting all boats at the same time. And yet, things can be disrupted very suddenly and we can be left scrambling to catch up on the latest tools, languages, companies and industries.
But if you go in with the right mindset and long term plan, you can carve out a fairly large piece of this growing pie for yourself.
Finding a Supporting Community
Having a good mindset is key, but it alone isn’t enough. Who you actually surround yourself with to support you and your goals is equally if not more important. Here’s why.
When I was working at Outco, most of the time things ran smoothly, but I also learned that given the sheer volume of people we were serving and classes we were teaching that the unexpected was expected.
There were times I had to deal with people crying, people being disruptive in class, or just straight up leaving because of something they carried within themselves and then something that happened while there that set them off.
Any time you mix a group of N people together, there are 2^N possible subsets, each with their own unique dynamics. People with different backgrounds, cultures, or personality types that didn’t necessarily mix well with one another. Sometimes someone might just be having a bad day, or got laid off or dealt with a painful rejection that they hadn’t told anyone about yet.
It was a controlled kind of chaos that all made sense. After all there were tens of thousands of dollars on the line and people needed to be learning abstract concepts in a compressed timeframe while solving problems under pressure. It can feel like a very chaotic and stressful environment to operate in at times. Which is why it’s important to have systems in place.
I highlighted some of the chaos and challenges of accelerated learning environments, but the pros definitely outweigh the cons.
Having a community to go through similar struggles with is key to succeeding. As the line in Game of Thrones goes:
“When the snows fall and the white winds blow, the lone wolf dies, but the pack survives”
Everyone on the panel agreed on the value of community. We’re social creatures by nature. We learn from watching each other and seeing things from each other’s perspectives. You can bounce ideas off one another, share notes, provide guidance, or consolation or motivation. All of which are important when dealing with rejection, frustration and failure.
Specifically in this job search, a lot of folks are interviewing at the same companies and can provide insights into their hiring processes, and sometimes even the exact questions that will have been asked in the past and will be reused in the future. When watching someone else solve a problem you might find a completely novel approach to thinking or visualizing it. Even if they don’t get the right answer, or it’s a dead end, there’s still value in seeing what not to do. My advice there is to always approach those practice sessions with a dose of humility because your time in the hot-seat is never too far off.
Most of us suffer from some degree of Impostor Syndrome and/or Dunning-Kruger Effect, so having people around us who can help us see things more clearly than we’re able to on our own.
We all need role models, but I mean that in a slightly different way than I think it’s commonly used. I’ve never met someone who I wanted to be EXACTLY like. But I’ve met a lot of people who I admired some aspect of and that I hoped to emulate to some degree.
The thing that can be tricky though is knowing what it is that you want to emulate. Sometimes it’s one of those “you’ll know it when you see it” kind of thing. But that’s one of the benefits of the chaos of community: You end up surrounded by like-minded and not-so-like-minded people.
And sometimes the not-so-like-minded people are even more valuable to be around because none of us are perfect.
Practical Advice for Optimizing Interview Prep
This section is organized more into a set of shorter points with practical advice people on the panel had about what helped them throughout their job search journeys.
The Power of Reflection
https://www.kevincsnyder.com/what-success-really-looks-like/
It’s important to always keep yourself moving forward, even in the face of setbacks. You gotta find ways of getting up in the morning and staying motivated. This isn’t a smooth process most of the time, and that’s okay. You’ll have hyper-productive days, and then days where you don’t get much done. But regardless, you need to keep going. And one thing I’ve learned is that if you can see the trajectory, it will help you keep going.
A key to being able to do this is create a practice of reflecting on what you’ve learned, how you’re feeling and what’s on your mind. I do this personally through a daily meditation, some people do it through journaling, others do it through positive affirmations.
So experiment with ways of drowning out the noise of modern life and focusing in on what’s important and letting go of what isn’t. It’s really about finding what works for you.
The key is comparing yourself to who you were yesterday, not who someone else is today. Not just because appearances can be deceiving; everyone has a lot going on under the surface. But because the present will always be your point of origin.
And remember, sometimes you just need to sleep on stuff.
Don’t focus too much on Titles
Unlike being a doctor, or lawyer, being a software engineer isn’t really a “legal” title. It’s more about a mindset or lifestyle. This may be changing, but for now, things are still the wild west out in tech.
There isn’t a point where you learn a certain language, or tool where you get a certificate that says you are an engineer. It’s the process of you building things and improving your understanding of the field over time. It’s designing, trying new things, failing, rebuilding and repeating.
And then one day you wake up, and you’re just there.
Learning how to Learn
Being able to learn new skills is a meta-skill that I’ve talked about previously. These are just some tips on how to become more efficient at it.
You gotta know when to take breaks and when to power through. Usually the 30 minute rule is plenty for most problems. If you are completely stuck for more than 30 minutes look for the solution or find a coach to help you through the problem.
You’ll also learn a lot more about a problem by then teaching the solution to others. The key lies in the process of figuring out how to deliver the material in a digestible and communicable way. Others will thank you for doing this, and you’ll really solidify your own understanding.
This is also where soft skills come in handy. Being able to articulate exactly what you’re thinking was up to the point where you got stuck can help you solve the problem and help others be more efficient with the help they are offering.
You should also try different ways of solving the same problem, and occasionally revisit problems you’ve solved in the past. You’ll find more efficient ways of solving it, ways of solving it in fewer lines of code and even find clearer ways of naming variables.
Always track your progress, whether that’s in a spreadsheet of jobs you’ve applied for, or a github repo storing all the problems you’ve solved. It’ll help you build self-awareness and confidence of how much work you’ve put into things.
And recognize that the skill you’re trying to build is the ability to solve a general category of problem rather than memorizing specific instances of problems.
Interview Advice
Always remember you are talking to other human beings. You are trying to see things from other people’s perspectives and those aren’t always clear. That’s why there’s value in reverse recruiting. Reach out to people on linkedin and other social media sites. Pick their brains, learn about their stories, see what resonates.
Then when deciding on whether to accept an offer or when deciding between two companies you should always evaluate the people on your team, since you’ll be spending a lot of time with them. You should also see if the company’s values align with your personal values and goals. And of course you should evaluate the financial aspect of the salary and the stock they are offering you.
Remember your worth, and that the ultimate bargaining tool is being able to walk away from an offer. Interviewing is a marathon and a momentum game. So be persistent, and try to get as many as possible.
Conclusion
Hopefully you found some value in this article, I know I had a lot of fun writing it and participating in the panel.
There will be plenty of other events and talks in the future, so feel free to sign up for them at Outco.io if you’re interested in learning more about the program and accelerating your career in tech