[Ed. note: While we take some time to rest up over the holidays and prepare for next year, we are re-publishing our top ten posts for the year. Please enjoy our favorite work this year and we’ll see you in 2022.]
Almost one year ago, I began my new job as an associate software developer here at Stack Overflow. Before that, I’d been running the Product Design team, first as a manager and then as director of design. It’s admittedly an unconventional career change, but for me personally, it couldn’t have made more sense.
I’ve always loved figuring things out. The first time I remember feeling the problem-solving glow was in junior high in Algebra I. That giddiness that floods your stomach when you’ve been throwing your brain at something for a while, and then it finally clicks. In my senior year of college, I took an intro to computer science class as an elective with a friend out of curiosity. My friend hated it, but I remember sitting there thinking, there’s that feeling. It clicks.
Then that sort of simmered. I did a bit of front-end dev work at my first post-undergrad job (we’re talking basic HTML only). When I went back to school for Human-Computer Interaction, I got to do a bit more coding, mostly just Java, Arduino stuff, and Adobe Flex [RIP], but never more than that. When I started working as a UX Researcher after grad school, I thought, “Well, this is your career now!”
I genuinely think that my problem, for years, has been confidence. I was just a UX person, not a coder. Surrounded by only the most freakishly good developers at Facebook (and then at Stack Overflow), I pushed whatever fantasies I had about coding professionally aside.
Instead, I kept it as a hobby. It’s important here that I credit several different entities/people for keeping my interest in coding going:
- Ludum Dare for forcing me to stop getting tangled up in my own head and instead to embrace whatever horrible code flowed from my fingertips.
- Corona SDK (now Solar2D) and Löve2D for being extremely accessible and well-documented tools for game creation.
- Project Euler and Advent of Code for giving me super challenging yet achievable coding problems to do.
- Zachtronics and Tomorrow Corporation for creating coding games that helped me understand that the gap between current-me and developer-me wasn’t intelligence, just knowledge and confidence.
- Several of my Stack Overflow developer colleagues for being the first people to whom I admitted that I wanted to be a developer myself. They’ve all been so encouraging, supportive, and kind, and I can’t imagine starting this career anywhere else.
During these few years in which I’ve been coding in earnest on the side, I also found myself regularly discouraged and confused by the sheer number of possible things that I could learn or do. I can’t count the number of quarter-finished games and barely-started projects I have in my private GitHub repos (actually, I can. It’s 15, and those are just the ones that made it there). Without much formal education in this field, I’d frequently get lost down documentation holes and find myself drowning in the 800 ways of maybe solving the problem that I had. Finally, I came to the conclusion that I needed more structure, and that I wouldn’t be able to get that structure in the hour of useful-brain-time I had after work each day. I started researching bootcamps and doing budget calculations and made plans to leave Stack Overflow.
I went to my new manager last year to let her know that I was going to have to leave. I told her that I’d wanted to be a developer for a long time and that I’d need to go pursue that dream somewhere else. Her answer? “Well… have you considered pursuing that here?” That put in motion a flurry of frank conversations with my now-manager, evaluations of my skills, and ultimately a plan to take what I’ll call my vaguely useful and large blobs of knowledge and refine them into the building blocks of a career in development.
The areas where I needed the most work were largely back-end, which makes sense. In the games and projects I’d worked on, I never had to worry about storage, accessing data, or how to scale things properly. My manager put together a series of projects designed to build my knowledge in those areas. We used Flask as the basis for my projects, as the barrier to entry is low and I already felt pretty confident with Python.
Once I finished those projects, it was time to actually start digging into .NET and Stack Overflow. The leap from making fun little Flask apps to working on the Stack Overflow codebase was … a big one. The hardest part for me has been getting used to working on code that lots of other people had worked on. With my own personal projects, I knew why each line of code was there (or at least, I did at some point), and I knew what everything did. With a codebase that’s so large that I’ll never actually ever read all of it, I had to start exercising a whole new set of skills I didn’t know I’d need.
So that’s where I am right now: working on projects on the Public Platform team and getting better at understanding enormous, complex webs of code. I won’t lie, I feel incredibly lucky to be in this position. Without a snazzy portfolio, CS degree, or expensive bootcamp under my belt, getting this opportunity with a cold apply would have been nearly impossible. The moral of the story isn’t: “Hey, just work for a really cool and understanding company for three years and then see if they’ll demote you!” That’s not very practical. If you work in tech, however, don’t underestimate how much your job wants to keep you around and don’t be afraid to ask for the things you want. As I used to tell the folks on the design team, “The worst thing that will happen if you ask someone for something is that they’ll say ‘No.’ And maybe laugh at you.”
Most importantly, I was right: I thought I’d love writing code professionally, and it turns out, I do! Sure, sometimes I submit a pull request for review and am subsequently embarrassed by the oversights I’ve made. And yeah, occasionally (but no more than a few times per day!) I am absolutely positive I’m going to be fired for my obvious incompetence any second now. But I’m so happy I made this decision. If you’re thinking about this kind of career change yourself, then listen: you’re smart enough, brave enough, everything enough to make the career decisions you want to make. Don’t look back in ten years and wish you’d made a change now.
Illustrations by Alex Francis.Tags: career advice, software development