I never had any intention on becoming a software engineer of any kind. For 10 years my full intention was to be an actively-researching and teaching astrophysicist. Programming was a side effect of that effort, as I needed to be able to write code to process the data that I would use for my research. Joke's on me: I found I had a lot more fun (and made a lot more money) building things that people use than researching how stars evolve and how our galaxy is structured.
Now I work full-time as a software engineer at a fully-remote startup called Verica. We're still fairly small, so I don't just work on one thing. I've worked on building a command-line interface, our REST API, our testing suite, and everything in between. It's interesting and appropriately frustrating being on the ground floor of building up a company's codebase.
I first started learning to write Python for data analysis while I was in graduate school at the University of Washington's department of Astronomy. Python wasn't my first language, but it was the first one where writing it felt good and reading it didn't bend my mind. For about 5 years I used Python to write scripts to process large data sets (100,000 - 10's of millions of rows) to help build up a picture of how the Milky Way galaxy is structured.
I never intended to make a full career switch, it was just nice to have a second stream of income as well as an opportunity to flex my creative side. However, as time went on I found myself longing for the money and creativity that came with web development work.
When I finally decided to leave graduate school, I had intended to go into a career in data science, as many astrophysicists before and after me have done. To build my domain knowledge and have some projects under my belt I enrolled in the Udacity Data Science nanodegree program. It was great and educational, and I actually managed to use some of the projects I built as show pieces when I went on interviews.
While I was interviewing for data science jobs, I happened to meet the person that would become my future boss at a local fund raiser for a Seattle-area tech-focused high school named the TAF (Technology Access Foundation) Academy. It was an immediate meeting of needs, where they needed a Python instructor and I needed a job. We connected and they called me in for an interview, where I demonstrated that I knew enough about web development to talk to other people about it and I could actually teach a thing to people that were unacquainted.
I got acceptances to both the data science job and the web dev teaching job in the same week and chose the latter because the former was, at the time, a very very very early-stage startup and I needed more stability than that. The shift of focus has since defined my career path, going ever deeper into the world of web dev and software engineering.
The ability to communicate with other people, both technical and not, Python, PostgreSQL, CSS, HTML, JS, and the ability to learn quickly. I largely learned to communicate with humans through my astronomy career, where in addition to teaching most academic quarters I also gave planetarium shows where I would boil down complex astrophysical ideas into a form that the general public can get on board with and be excited about. That skill was further refined when I taught programming for 2 years at Code Fellows, where I would regularly have to help adults understand how to make their computer do things that their minds knew were possible.
Python I addressed above. Postgres I learned through having to teach it. I inherited the course I taught from the illustrious Cris Ewing, and he had included Postgres as the database of choice. So, I kept that going when I took over the course. It was extremely familiar to MySQL, which I learned first, so it wasn't too big a leap for me.
HTML, CSS, and JS I learned when I first dove into web development. That was largely through several books on web development, as well as many many many hours spent on FreeCodeCamp.com.
Learning quickly came from graduate school. Astrophysics PhD programs are a gauntlet, especially the first two years where there's still active coursework alongside teaching responsibilities. Time is finite but the things you need to do and learn grow and grow. You want to do well (or else why even go?), and the new information comes through like a firehose, so you learn how to learn and do so quickly to keep from drowning.
Mostly freecodecamp.com and udacity.com. sqlzoo.net is (or was; the site is showing a 502 error as of this writing) good resource for learning SQL. Along with that, countless blogposts, YouTube videos, and books that I've long since forgotten the names of. And of course liberal use of Google and Stack Overflow.
Interviewing is my biggest difficulty, as it is always an awful, harrowing experience. The fatigue from anxiety in anticipating what's going to be asked, and how your answers will be received, is real, as is the battery of questions over hours of time. I've gone on many interviews and have been met with many, many rejections. I've largely overcome that difficulty through knowing the right people in the right places, and a healthy dosage of luck.
That I shouldn't be afraid of my computer and what I can do with it. I spent years avoiding learning programming because I was afraid that I couldn't do it. That because I wasn't the "Computer Science Type" that it'd be too complex.
That regardless of my race, careers like the one I have now are absolutely achievable through a combination of skill building and intentional, relentless networking. My father and both my brothers have been in the world of tech for decades longer than I, however they were the only ones I'd ever known to do it. Most other folks in tech I had met before, and even now, were either white, east asian, or south asian. It's harder to visualize yourself in positions such as these when you don't see folks that look like you.
That spending money on professional training, outside of the standard college path, is an investment and not an expense. Until recently I never had disposable income to speak of; my money went to debt and necessities. Professional training often costs thousands of dollars, either immediately or over time, and the payoff is uncertain. When you don't have a lot to spare, putting money toward a personal investment can seem foolish. I've since learned that when you're in that position, one of the best things you can do with what little money you have is invest it in training that can level you up.
That the idea of "I've come this far, spent X years, and Y money so I shouldn't stop now just because I'm miserable", a.k.a. the Sunk Cost Fallacy, is a vicious lie. Significant investment of time, energy, money, or anything else will never guarantee that a thing will "just work out" if you "just stick with it". Trust your gut; if you feel like you want to make a change you should start acting on it now and not later "when the time is right". That last one would've saved me a good 1.5 years.
Hand-in-hand with the last one is to not commit yourself to doing a thing (or continue doing a thing) just because you feel like you're "supposed" to. For better or worse, at least in the United States, your life is yours to live as you see fit. Of course there are consequences to every action, however a life of obligation can feel like a never-ending cycle of suffering. Even if it's unpopular, or seemingly "out there", do what you feel is right for you and sort out the consequences as they come.
Mentorship can give you insight into your career path that you may have never encountered otherwise. Surprise: other people know things that you don't know! You can have more than one mentor at a time, they don't always need to be someone obviously superior to you, and a mentor relationship doesn't have to last years at a time. Anyone that knows something you don't know can be your mentor.
Whether you consider yourself extroverted or introverted, get to know some of your professional peers. You don't have to be the life of the party, just one other person that you know pretty well is fine. Your experiences can help them and vice versa, and it always feels good to have a community of people that can understand what you're going through.
I've never been better in my entire life, and the stuff I'm working on now has nothing to do with tech. Test your code, because untested code is just a failure waiting to happen. Stress test your infrastructure before the world does it for you. Finally, you'll rarely go wrong hiring Black women into any and every role.
Made with ❤️ by Veni Kunche.