Career Advice

Earlier today I was invited to a meetup about the state of AI, and building agents. At the meetup I realized how it entertaining it can be to have a discussion. A discussion can be very engaging. It gets your thoughts going, multiple people can bounce ideas off of each other. People are curious they want to know more about what someone is doing. Many people have insights.

One thought that I had while attending the meetup is that there is a benefit in writing. Although the discussion was enriching to me it was very localized. Whereas when something is written multiple people can reference it, comment on it, and build on it. At the end of the meetup I talked with someone who has worked as a quant for 10 years, but is trying to transition to product management and or wants to explore other career opportunities. I shared my background, and some advice on programs she could explore. I've shared this advice with a few people, to the point where I think it's valuable to put something down in writing.

My current career is software engineering, and the advice will in a way be catered to people who already have a Bachelor's degree and want to pursue software engineering . If you don't have a Bachelor's degree consider studying software engineering, or read on to learn about alternatives after you study something else.
Nonetheless, I'd like to advocate for software engineering generally, even if people aren't interested. With the advance of artificial intelligence, and particularly generative AI and large language models it's not clear how long software will be around, but for now it's very ingrained in day to day life.

Admittedly technology may have its claws on too much of our lives, but there are interesting opportunities that technology creates. We have an incredibly effective, and extensive crowd sourced encyclopedia with wikipedia. Youtube has provided opportunities for new creators to reach massive audiences. It's way easier to book travel in the past it made sense to have a travel agent, now you can take care of so many of the pieces yourself. We have sleep trackers, and other pieces of technology to more effectively monitor our health. The internet has made it easier to stay connected with each other, and to read from ordinary individuals like myself! The point is technology has transformed our lives, and in some cases in positives ways.

Software engineering is often viewed as a very analytical and mathematical practice, but it also has a creative element. In addition to the creative element it has a magical element. One classmate in college described software engineering as being able to control minions with words, and this description is perhaps more apt now that AI is more powerful. I've heard other people describe coding as using prose to create a structure. Notably you can use a prose to build words in the form of writing fiction, but with coding you can generate 3d graphics, you can create a tool that makes 3d graphics (blender), you can make games. One other astounding element to me about programming is that you remove a lot of physical limitations. With other engineering disciplines such as civil engineering, or mechanical engineering you are faced with physical limitations way more quickly. You need physical materials, gravity poses an immediate problem. It is the case that these elements are present in computing, but they are abstracted away from us!

Someone might say that telling everyone to do engineering is too prescriptive and that may be true. I will say that the engineers at my current company have very diverse backgrounds having been musicians, accountants, sales people, writers, actors, and aspiring teachers. At the very least this hopefully shows that engineering is not limited to a certain archetype.

In my case I initially wanted to study music. I failed my auditions, and studied Mathematics, and Economics. I was always interested in programming, but never took a class. My senior year my roommate started teaching me how to program. Immediately after graduating I enrolled in Oregon State's Post Bacc program, and after a year of that program I applied, and was admitted into Georgia Tech's Online Master's in Computer Science (OMSCS) program. Georgia Tech's program is a widely accessible online master's program that tries to admit as many people as possible. The tuition at the time was like 8k for the whole degree, and the program was part time.

Two semesters into my OMSCS program, and I had a new boss who was very bad. I would wake up at 5am from stress, and annoyance. I'd tried to go to the park, and work out my frustrations, but I couldn't tire myself out of it. I'd call my parents, and complain about how dismal the career situation was. My dad was very adamant that I sit tight, and value the job. Although, it was nerve wracking I started applying for internships. I applied for 40 internships, and only 2 got back to me. Somehow I managed to pass interviews at Docker and land an internship. This whole time I was fantasizing about quitting my job, but when it came time to put in my resignation I was shaking and nervous.

After giving 3 weeks notice my former boss ignored me till the day I left. I stopped by to say good bye as I was leaving, and he expressed his frustration with me quitting. He also joked that I would be sleeping on a couch due to the high rental prices in San Francisco. Interestingly enough my intern salary almost doubled the salary I was making at my first job in Miami. Of course, the cost of living in SF is higher, but at that point my dad became way more supportive of my decision, which is funny.

I managed to extend my internship to a second internship, and then was able to ask to become a full time employee. There was a moment when I landed the job where I was like now what. I had worked so hard to become a software engineer that when I finally achieved it the accomplishment felt anti climatic. At the same time I felt pretty inept. It would take me a really long time to read the code, and try to understand what was even happening. Everything was a mystery to me. When someone was asked to implement a feature I had no idea how they would manage to bridge the gap from idea, to execution. I would try to review their code to understand what they were doing, but it was very cryptic. Everyone seemed excessively smart at the company they seemed way more capable.

In hindsight I now realize that there's a steep learning curve. Reading code is way harder than writing code. When you read someone's code you are looking at the final product, but you don't see how much more time they spent to get there. When you read code you have to try to figure out why each change was made, but when the code is written you make the change because something broke, and that was pointed out to you. Reading code is a theoretical exercise you aren't interacting with the code. You are building a model of it solely in your brain. The act of reviewing code is much harder particularly if you haven't worked on any of the related work.

It's definitely true that I had to learn, but I was maybe also generous in my interpretation. I thought people were smart because they understood the code, and I didn't. However, it's probably true that their code could've been more readable. There's a reason why people have a tendency to want to rewrite things. It's much easier to write code than to read old code, and understand what it does.

Anyway, I hope to pick more targeted topics based on work to write about in the future. At this point I am straying into the false advertising territory by not offering concrete career advice. That being said I think there is some utility to these thoughts. When you are in the midst of your career you might have a similar perception to what I did. I think the timing relative to the existence of the overall team is meaningful. For instance, what I've experienced right now is that it's harder for me to contribute at work relative to my teammates because they have 3 advantages over me:

1. Code experience - they wrote the code, and understand it because of this

  1. Business context - when they wrote the code they had to solve for the business problem so they have a deeper understanding of this
  2. Language familiarity - I'm newer to javascript, typescript, and the frameworks so that's added an additional barrier to entry.

Without further ado if someone is living in NYC I would recommend these 3 options in no particular order

1. Georgia tech OMSCS

  1. Fractal Tech Bootcamp
  2. Recurse Center

These options can be complimentary and competing, and depending on what you want to accomplish each option will suit a different need. I've only attended OMSCS, but I have previously applied, and wasn't admitted to Recurse Center.

Georgia tech OMSCC is appealing because of the price point, and the accreditation. This program will offer you a Master's degree from a top university, but the down side is the program is 10 classes, and if you take 1 class a semester that will take you 3+ years. As of 8/7/2025 the discourse is that new developers aren't being hired at companies, however this seems to be changing. This program won't really give you the hands on experience needed to succeed at a company, but perhaps it can be helpful if you are interested in going the research direction. A helpful way to frame attending this program is that you don't have to think about a commitment of 3+ years. Since the program is part time and remote it's worthwhile to enroll and take one class as the measure of how beneficial you find the program. There will be variability per class, and so that can impact your outlook. When I attended I found the peer quality very good. A lot of my classmates were already in industry and were studying for the joy of learning to explore machine learning.

Another existing trend is that bootcamps have fallen out of favor. This is related to companies being more reluctant to hire new grads / new people in general. However, Fractal Tech bootcamp boasts a 100% placement rate (employment), and they have people start working on real projects within the 3rd day of the program. I think one of the factors of the program's success is that they take people into their program that already have some experience so the program can focus more on leveling people up. Different to other bootcamps they also have you attend 6 days a week, and for maybe even longer hours. This program does have a cost associated with it. I believe they may have income sharing agreements so you can defer paying up front. I don't know the exact cost, but I would guess this program is more expensive than the Master's degree. It is in person though, and there is hands on instruction. Also this program is accelerated so if you wanted to try and change careers faster this could be more advantageous in addition to its applied nature.

The last option is the recurse center. This used to be called the hacker school and it is a 6 or 12 week programming retreat. They are open to programmers of different levels and the idea of attending is that you do a lot of self directed work. However, collaborating is highly encouraged. I think two appealing elements of the recurse center are you get to dedicate most of your time to doing what you want which seems very freeing. What's also appealing is that you are surrounded by people who are exploring their own interests and are willing to help collaborate on exploring your work.

All these options have their tradeoffs. Regardless it can be daunting to make a change from the current place that you are in to something else. Also programming is not without its frustrations. These days I suspect that frustrations can be minimized with the help of LLMs but perhaps this workflow can pose new frustrations, because in some capacity we do learn from failure. Finding the balance of how much to rely on an LLM and how much to do on your own isn't obvious either. If you have any questions or thoughts feel free to comment here or reach out!

Subscribe to thoughts

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe