How I became a software developer from a city planning student and marketing professional

I finally landed my first role where writing code is a job requirement last year, which was a long 5-6 year journey for a few reasons, including: my university major being city planning; my first job being as a marketing graphic designer, and being self-taught.

I want to publish my evolving understanding of that journey in case you happened upon this and want to get into software development. If you do and my story resonates with you, please reach out I'd love to hear from you!


  • May 2017 - graduate with Bachelors of City & Regional Planning from The Ohio State University
    • Catch a little coding bug trying to make interactive maps for my research thesis using D3.js
  • Jul 2017– Jul 2019 - join Iridium as a Marketing Associate
    • I wear a ton of hats, doing graphic design for infographics and marketing collateral, product photography and editing, website content management, copywriting, web design, documentation categorization. It's all pretty fun and engaging.
    • Miserable and lonely in Arlington, VA. Cope by learning pretty much nonstop.
    • Start using constantly to sketch out little web development ideas. I find I really love the CSS cascade.
    • Learn from a lot of "indie web" and "JAMstack" types which gives me my progressive enhancement bias.
    • Start dabbling with Wordpress at work, but we used an agency so I couldn't do much, and PHP gave me the ick being not part of the holy trinity of web languages and server-side.
    • Ask if I can develop web platforms and work remotely at different times, get politely told no.
    • Decide I need to get out of DC and jump jobs if I'm ever gonna get closer to writing code for a living.
  • Aug 2019–Nov 2021 - join a small web agency
    • Moved to NYC and in with my girlfriend without a job, applied to 100+ jobs and got 2 interviews. One was a pyramid scheme and the other an agency.
    • Got hired as an SEO Analyst which was just the default entry job title
    • Still learning a lot of development stuff in my free time outside of work
    • Immediately get pivoted over to design-related stuff because of my Figma skill
    • I show a knack for strategy so I start contributing to strategy presentations and eventually add that to my job title.
    • Jan 2020 – I build as my first React project and first full production site
    • All dev work is outsourced to an agency here too. I become the translator between our non-technical teammates/clients and our developers because I'm learning from my dev explorations what's easy and what's hard.
    • 2021
    • March - I reach out to the maintainer of CadHub to see if there's anything I can do to help, he gets back to me and I make some little CSS fixes. My first open-source contribution! Also the connection that would eventually get me a shot at joining Zoo.
    • A novel little project with a quick turnaround comes into our agency—a personality quiz app for a jewelry company that they want embedded into their Shopify store—and our developer doesn't have a good plan for it. I take a few all-nighters building a prototype in Svelte and a plan to make it final and configurable. I get to finish the project, and we end up winning a Webby honorable mention for my first professional app.
    • I ask to become a full-time designer/developer, and I'm told it's not a valuable use of my time since I'm already a designer and strategist.
    • I start to feel a real need for mentorship and like if I don't get a developer role soon I'm gonna be stuck as a marketing/consultant forever. This workplace, for all the opportunities to demonstrate my abilities, doesn't have any technical mentorship.
    • The toxicity of the office culture is also getting to me, and I start looking for more technical, dev-focused agencies to work for. I didn't think working for a tech company was going to be possible yet, but I applied to them too just in case.
  • Dec 2021 – Mar 2023 - Product Manager at Shift Lab
    • I apply to Shift to be a developer, but Jeremy sees my strategy slides and design work and says they need product design way more than development.
    • I prove to be a pretty good all-around contributor to design and client management, I'm having fun even if I don't get to code.
    • I contribute to CadHub and do some pretty wild frontend stuff with Kurt until he gets picked up by a tiny startup called KittyCAD in early 2022 as founding engineer and starts to get too busy for CadHub to be a priority.
    • I get the chance to watch the workflows and output of all my developer colleagues. This really demystifies the developer career for me. There are a lot of little things that I was never aware of (like config files or how to think about tests), but I'm more convinced than ever that I could be good at writing code as my full-time job.
    • Over the course of working with my developer colleagues, my developer knowledge and understanding of their problems helps me work very well with them. Some even start asking me for code reviews!
    • I continue to maintain Ring of Keys, and even rewrite it into NextJS in 2022.
    • I ask to be a developer on one or a couple projects, but I'm told the politics of that are weird because then my role becomes blurry. Fair point.
    • I find a niche to do some coding. I have a lot of experience with headless CMSes from my work on Ring of Keys, so I start becoming one of the go-to team members for CMS architecture and configuration. I fall in love with Sanity and start advocating for it all over the place. In retrospect this was at least partially, unconsciously because Sanity let me code in a domain that wouldn't risk stepping on the "real developers" toes.
    • In the fall of 2022 I get through to final rounds for a Designer Advocate at Figma but don't get it. I'm really disappointed, I feel like I've given it my all and it turns out I'm not fit for the big leagues.
  • March 2023 – Present - Design Engineer at ~~KittyCAD~~ Zoo
    • Kurt hits me up and says his startup is looking for a designer! A real tech startup!
    • In my interview presentation I emphasize that I think of myself as a developer as much of a designer, and this team actually thinks that's an unambiguously good thing. I get an offer and only ask that my title say something like Developer or Engineer, just for my peace of mind.
    • I'm writing code day one, building features in a few weeks, and helping layout software architecture roadmaps in a matter of months.
    • This team trusts me enough to hear me out on my big bet on command + K bars, let me architect them in my opinionated state machine way, design them, and implement hem. But has a bunch of incredible engineers available to give me feedback or advice while I go. I feel like I'm living a dream.
    • We rebrand to Zoo in December 2023, and I re-implement the website, release an open-source AI app I wrote the frontend for, and publish my first NPM package in the same day.

Advantages I had

  • I had a ton of free time for a few years outside of work.
  • I didn't have much of a personal life
  • I had some fun problems to try to build things for

Some things that I didn't have that I would recommend you get if you can

  • Access to a mentor willing to give feedback
  • Formal training in a classroom setting

Some things I didn't have that I don't think you'll need

  • A CS degree
  • A bootcamp certificate

Other thoughts

It's always hard to tell when to make a leap into a new career and when to slowly ease your way from your current role. I think I've hit an imperfect balance on my way to my dream career. I opted to convert my role wherever I was to be more closely aligned to the one I wanted (naively defined as "writing code" early on) by taking on more work in those areas wherever possible. This was successful every time. I would then usually bump up against a point where I could go no further in morphing my role into more dev, and this is when I would jump to a new role. This requires you knowing exactly what kind of career you want, but it proved a good balance for me.