I’m seeing some hot takes that AI assisted coding means that you don’t have to be technical anymore. That’s only gonna last you until the first database migration, or the first security issue, or the first cloud migration, or the first scale out, or the first major regression, or the first refactor that ends in slop. I am finding that I’m learning more and I have to be as technical or more technical than ever before to get the kinds of high-quality output that I expect of any code, regardless of whether it comes from my fingertips or someone else’s - including an AI.
Whether your source comes from open source libraries, your own hands, or an AI via your clever prompt, there is exactly one responsible person for the output. That is you.
I never want to be accused of gatekeeping AI assisted programming, as non-technical people can get a lot of interesting work done. Until they hit a wall, and it’s gonna surprise them how quickly they either need to get technical, or get a technical person to help untangle the mess they’ve made.
The art and science of programming is taking intent and turning it into shipping products. I will never blame an AI - nor should you - for bad output. Own the code that you ship.
One of the biggest problems Android engineers face is over engineering.
I've worked in many fields and Android has the most over engineered apps I've run across.
Most of the time you don't need all the cruft. The basics work just fine. It's rare that they don't scale.
Microsoft has launched a FREE course on AI for beginners 🔥
It is a 12-week, 24-lesson curriculum that covers:
- Different approaches to AI
- Neural Networks and Deep Learning
- Neural Architectures
- Genetic Algorithms & Multi-Agent Systems
- And more
There's one thing that has probably taught me more than anything else during my career as a software engineer 🤔
It's something we normally don't notice during our initial years as developers, but it was an absolute game changer to me 👇
When you build something with a brand new technology, you’ll likely need to rewrite the whole thing a second time, with enough experience gained.
Observed this many times. Turns out it’s not just me. Here’s The Mythical Man Month observing the same thing, written ~50 years ago.
One mistake I have seen people make is to try and aim for 100% reliability.
The reality is - things do break, like it or not. One can spend weeks trying to fix every little problem and still be surprised by an untimely bug.
Alternative? Aim for making your system resilient 🧵
If I can offer an observation, 20+ years into my software career:
Long term, your kindness and helpfulness are vastly more impactful than your technical skills.
People will remember how you made them feel. They're much less likely to remember that awesome function you wrote.
Looking back at my five years at university, the class that prepared me most for the industry was a semester-long team project where the four of us went from planning, through coding, to shipping a small app.
CS education should have more of this, and less solo work/study.
My yoga teacher always starts class with this line:
"Congrats. The hardest part is over. You showed up."
I feel like that mindset applies to most other things.
Worrying about a task often is far worse than the task itself. Starting is the hardest part.