15 Years of Software Engineering Advice in 1 Hour
Timestamps
- - Intro
- - Disruption is fast – Adaptation is slow
- - Use AI enhanced development and learning
- - Find a mentor
- - Approach to learning
- - The Correct Approach to Learning
- - Learning is Painful
- - Use AI to enhance learning
- - Start building stuff as soon as possible
- - Challenges of Building Software
- - Short Circuit Skill Development
- - The Most Valuable Skill
- - Strategy to get results
- - Stop Worrying about Titles
- - Grow your Circle
- - Rejection
- - The Truth about Networking
I've been building software and running my own business for about 15 years. These notes go with the video and cover everything I'd do differently if I was starting from zero today, basically letting you learn from my mistakes. Most of it applies whether you're a software developer, an app builder, or running a small online business, and a chunk of it is just how to get more out of your life in general.
Disruption Is Fast, Adaptation Is Slow
If you take one thing from this whole video, take this one, because it frames everything else. Disruption moves very fast, and adaptation is slow. When you're early on you might be on track, but if you're not keeping up with new capabilities and new approaches to work, you slowly diverge from the proper path.
This is a super common problem for people deeper in their career. You say "I have 15 years of experience", but you don't have the experience that actually matters today. That's how a senior engineer can get laid off and struggle to compete with entry-level engineers, if those entry-level engineers focused on the correct stuff. Someone brand new who put most of their effort in to whatever is disrupting the industry can beat someone with way more total skill, because they have the right skill.
So there's two ways to use this. If you're experienced, spend the extra time to keep up with what's new. If you're brand new, treat it as an advantage and aim your effort at what's in demand right now.
Use AI Enhanced Development and Learning
Here's the thing I cannot wrap my mind around. Almost daily I get an email from somebody new asking "what can I do to learn as fast as I possibly can?" I answer: use AI agents to enhance your progress. And the response is "whoa, I don't want to use AI because that's going to slow down my learning."
So let me get this straight. You asked what I would do in your situation, my answer is fundamentals plus AI enhanced development and learning, and you're refusing it because you've adopted the belief that AI will destroy your foundation. That's an issue with how you use it, not whether you use it. Refusing to touch AI until you're a senior developer just forces you in to the structure of people 20 years in who are failing to adapt.
Should you know how to code? Yes. Should you understand the fundamentals? Absolutely, it's what I recommend people start with. But pair that with AI. I've been using agents pretty much every day for the last 6 months, and the amount I've learned in that time is comparable to a couple years of studying on my own. There are times you write everything by hand, times you let agents write code, and times you use agents purely to check your understanding, your architecture, bugs, security. It doesn't make your software worse, it makes it better.
If you want to speedrun this part, that's what my Agentic AI course is: AI enhanced software engineering, applied from building my own apps, without ending up a vibe coder who has no idea what they're doing.
Find a Mentor
When I started I was completely on my own, wasting time on YouTube trying to figure stuff out. No AI back then either (I feel like a boomer saying that). Today I use AI to guide my learning, but for any important architectural decision I still check with people more experienced than me, because there's something neither AI nor solo practice can replace: experience that took years to develop.
Find that person as early as possible. If you can't find them, first off, you probably haven't tried very hard, go network on LinkedIn. Person-to-person is still the biggest value there is for growing your skill, your network, and your opportunities. Something as simple as messaging a book author "hey, I read your book, good stuff" gets responses more often than you'd think.
If you truly don't have that person yet, the substitute is content about applied experience instead of tutorials: engineering blogs and podcasts. When I was getting in to cryptography I found the Zero Knowledge podcast and learned from how actual practitioners thought through problems, what they found valuable, what issues they were hitting. When I was learning NoSQL, Discord's article on how they store messages showed me why they actually needed that database, and the why is exactly the part that's hard to learn as a beginner.
Think of it this way. Tutorial hopping picks up little coins of knowledge, and stacking coins takes forever. One person with real experience is a treasure chest sitting right in front of you, and most people are too busy collecting coins to open it. At my first job I pair programmed with a guy way better than me, and he irritated me constantly, "no, rewrite it from scratch, do it this way." Looking back, that was the most helpful time in my whole journey, because I finally learned why we do certain things.
And notice this pairs with the first point instead of contradicting it. Adapt fast AND learn from experience. Two sides of the same coin: take in what's new, and take in what's already been learned, from whoever has it.
The Correct Approach to Learning
Build a broad general foundation, then specialize. If you spread yourself thin trying to be good at everything, you end up average at a bunch of stuff and great at nothing. The foundation part means scratching the surface of a lot of non-overlapping areas, networking, databases, backend, desktop apps, low-level programming, you get 80% of the benefit from a little time in each.
The two failure modes are not knowing what to specialize in, and topic hopping. When I started I was all over the place, jQuery one day, Angular the next, then Google Apps Script, whatever I felt like that day. The efficiency of this was trash. I never went deep enough in anything to discover new things, I always stopped right where my existing knowledge ended.
That's why I recommend end-to-end flows, point A to point B without wandering off the path. It's why I'm a fan of courses. When I had to learn React I watched a roughly 4 hour course in a single sitting. Did I know how to build everything in React after? No. But I could stack deeper knowledge on what I'd just learned, and I had the video to anchor back to.
For programming languages: pick one, I don't really care which, and go as deep as you can. Learning loops in Python and then learning loops again in TypeScript feels productive, but you didn't learn anything new, you learned a translation, and translation is a low value skill you can pick up on demand. Instead of learning the same thing twice, learn the differences between the languages, that's the actual skill. In my Java class in college I had never used Java, but I had used C, so I literally wrote my code in C and Javaified it with minor translations.
The same trap exists with AI tools today. A little ChatGPT, a little Codex, some Claude, some Cursor, and you call yourself an AI power user while never having written a skill or created a subagent. I picked Claude Code and got really good at that one thing, and it translates to the other tools easily because the patterns are similar, you just need the diff.
Learning Is Painful
If you're learning something and thinking "this is hard, I don't really understand", that's a good thing (unless it's way too difficult). If it felt super easy and you walk away with nothing concrete, it felt like learning, but you were just exercising your brain on stuff you already know.
Deep learning for me has always taken a lot of focus, cross-referencing, and note taking. I do have a passive mode too, podcasts and entertainment type content, but the deep kind is more painful than fun.
Quick message to companies and recruiters while I'm here: if a developer is really good but hasn't used your very specific software that nobody cares about, that doesn't matter, they can pick it up, since they're already deeply experienced in other stuff.
Use AI to Enhance Learning
At one point I caught myself thinking "I don't really need these AI tools, everything I use works fine." I forced a full mindset shift instead: build an app, and everything I can do with AI, figure out how to do it well, not sloppy. Here's what came out of that for learning specifically.
Create a knowledge vault. A folder of markdown files about whatever you're studying or building, as reference for you AND the AI. Have the AI structure your thoughts and correct anything wrong in your notes.
Write your own skills. A skill is basically a reusable prompt you can invoke like a function. Some I'd write as a learner: research, code translation (how would this look in other languages, and specifically how are they different), and design alternatives. Alternatives is the most valuable one, because the biggest challenge with modern learning is siloed concepts. If you're studying object-oriented programming, a good alternatives skill would surface that some languages organize around functions instead, some are trait or interface based with no formal classes, some have multiple inheritance and some don't, and maybe you don't need OOP for your problem at all. You stop thinking "this is the way it's always done" when other people are doing it a completely different way.
Generate runnable examples for things documentation glosses over. Docs say "here's what happens on overflow" and you just trust it and move on. Now you can have AI produce a small example you actually run, and it goes deeper in your mind. Concurrency is a great case: three tasks run serially, or in parallel where you wait for all of them before printing done, or fired off while the code continues and they finish after. Ask AI for code that produces each behavior, real world examples of when you'd choose each one, and the pros and cons, instead of one isolated solution.
It can also quiz you, write tests you have to make pass, and review your notes for flaws in your understanding. I use the same trick in app development, fanning out multiple agents to show me different frontend approaches, introducing randomness to get ideas outside what I'm currently looking at.
Start Building Stuff as Soon as Possible
Not just through work, your own projects. And don't let them stay basic. A calculator or todo list to meet the language is fine, but then build something that actually takes time, effort, and thought, and keep working on the SAME app over time. My biggest downfall early on was tinkering with something for a day, getting bored, and moving on.
Eventually I decided to build a cryptocurrency from scratch in Rust. How does a wallet work, how does the encryption work, how do transactions move, how do I build out the CLI. Nobody was going to buy Currycoin, but it was exciting, and within about a week of starting, a company reached out looking for a Rust developer. Nothing to do with crypto, but I could show I'd built something more complex than what you finish in an afternoon. That became my last senior software engineering role before I left to build my own business.
Challenges of Building Software
Building your own real software gets you a product mindset, and I'd say that's one of the biggest values you can bring anywhere: what features do we actually want, what do they actually need, what do they cost to implement, what will people actually pay for. AI can crank out CRUD apps and more, but piecing everything together in to a valuable product with real users takes higher level thinking, and that's the part companies care about.
If you're in to mobile, build an app, put it on the app store, get reviews, get users, figure out monetization, advertising, marketing, sales. You'll work with real data, real customers, support, security, and most importantly you'll be challenged and hopefully motivated. It helps a lot to be in groups or forums with people doing the same thing, doing all of it alone is a lot.
Short Circuit Skill Development
Some skills are almost impossible to have as a brand new developer, and running a real deployed app short circuits them. If everything you've built runs on your local computer, hiring you is a risk, not because you can't code, but because you can't code in the context of what the company is doing, which is production software.
Real data means thinking about where the data lives (GDPR, privacy concerns, medical data), latency to your users, and live migrations. Say you need to change your data structure but real accounts already exist on the old shape. How do you migrate without corrupting anything, while users never notice, while you keep shipping updates? No tutorial gives you that, and knowing it is 100 times more valuable than local prototypes. If I started again I'd immediately pick a project to push live and treat like a real thing: a domain, branding, actual customers, everything a real company does.
The Most Valuable Skill
Resourcefulness. Being able to figure anything out, whether on your own, with AI, or by working with other people. Certain mindset beliefs cap your potential before skill ever enters in to it, if you assume you can't do certain things, that alone becomes the box you have to live in.
Now, my little university rant. I ended up getting a traditional CS bachelor's myself, so I'm not purely trashing it, but the mindset coming out of these programs is rough: "I have the degree, jobs will be handed to me." If you came to me for a developer job and led with your bachelor's, I'd assume the only thing you're really good at is drinking beer, because so many people come out of university unable to code that odds are you're not the exception.
So when people say AI is destroying the junior market, there's probably some truth to it, but the deeper problem is the degree pipeline not preparing people for real work. What's taught in university right now lags what you need right now, the same disruption-versus-adaptation gap from the beginning. And I suspect the "don't use AI, it'll hurt your learning" belief gets drilled in there too, possibly because AI is a real threat to universities in general.
Back in one of my classes, the guy next to me watched Twitch streams during lectures. Paying money to be there, watching people play video games. That approach would hurt him just as much today, except now he'd get to blame AI for it instead of his own discipline. Whether you get the degree is your call to weigh, but either way, imagine spending those same 4 years also building your own real stuff. You'd come out with more real world skill than most people around you.
Stop Worrying about Titles
Around 6 years ago it felt like if you weren't getting in to Google, Amazon, or Apple, you were a failure who didn't deserve to be in software engineering at all. There are literally thousands, if not millions, of companies you can apply your skills to, and way more roles than just "software engineer".
I was so tied up in that title, but my personal strengths kept leading me to other kinds of roles: developer relations, leading technical workshops, helping with marketing around technical products, and pure engineering at times. The last offer I got was $240K, with $180K base, to make technical videos from my basement. Opportunities like that are equally as good, if not better, than a lot of the engineering roles out there. And pure implementation roles are becoming less common anyway, with AI engineering variants showing up. Open your mind a little about the company and the job title.
Grow Your Circle
Break out of your network as quickly as you can, toward people beyond where you are and where you want to be. The principle is you don't know what you don't know.
First time I felt this: I was a cofounder alongside engineers who'd all come out of very high paying roles, and when salary came up I was like holy crap, I did not know those numbers were possible. Unheard of in rural Ohio, where my neighbor is a corn field and the best job around is the factory. Seeing it in real people is what let me push for higher pay later, because what's preventing me from doing the same?
Pricing is where this shows up clearest. I had a service I charged $500 for and decided to try $1,500. Three times the price, felt insane, gave me real anxiety to submit it. They said yeah, that's fine, no biggie, didn't even blink. I undersold myself even at 3x. I did that multiple times and it added up to around $28,000 over a month or two, right out of high school. Today I wouldn't even consider doing that work at $1,500, because my network and mindset expanded to where that number looks irrationally low.
So the common advice is to push through discomfort and charge more. The real breakthrough is expanding your comfort zone until the number isn't wild anymore, and you do that by being around people who quote it without thinking.
Rejection
Early in my career I worried about everything, to the point it affected my performance. I noticed the less I cared about something, the better I would perform, because caring meant overanalyzing, anxiety, and self-sabotage. Not the actual problems, the worrying about them.
The fix, as far as I've found one, is practice. Sales, negotiating, pushing back on demands, all the stuff I used to avoid. I've built up a tolerance to discomfort by doing uncomfortable things on purpose, and here's the secret, I'm still always uncomfortable. I just do it anyways. These turned out to be some of the greatest unlocks for getting more out of life, which is why I'd start collecting those reps in year one instead of year ten.
The Truth about Networking
I saved this for last on purpose. As AI takes over more of everything, a lot of people conclude everything should become AI. For human-to-human interaction, I'd argue the exact opposite: go MORE human.
Applying to jobs with AI-written cover letters, sifted by AI screeners, has made the whole thing feel inhuman, which means walking up to somebody and saying "I'd love the opportunity to work on your team" or pitching a product face to face stands out more than it ever did. Automate the routine stuff, sure. But for high value opportunities, bring your actual human self and go the extra mile. In my own business, the one-on-one work and the services I provide are things I will not hand to AI, going above and beyond there is exactly what differentiates me going forward.
So networking 2x, human touch 2x, WHEN appropriate, and automation everywhere else.
That's pretty much it, advice to my earlier self, framed as if I was starting today. If something resonated, leave a comment on the video and let me know.