Here I shared advice for graduates touching on AI, automated testing, legacy code, and the importance of understanding practical implementations of theory and concepts.
opportunities for enhancing learning and information access, their potential impact on cognitive development, critical thinking, and intellectual independence demands a very careful consideration and continued research” Paper: Your Brain on ChatGPT: Accumulation of Cognitive Debt when Using an AI Assistant for Essay Writing Task MIT Media Lab https://arxiv.org/pdf/2506.08872v1
Formation Judy Hanwen Shen/Judy Hanwen Shen https://arxiv.org/pdf/2601.20245 ”Figure 6 shows that while using AI to complete our coding task did not significantly improve task completion time, the level of skill formation gained by completing the task, measured by our quiz, is significantly reduced”
Formation Judy Hanwen Shen/Judy Hanwen Shen https://arxiv.org/pdf/2601.20245 ”Figure 6 shows that while using AI to complete our coding task did not significantly improve task completion time, the level of skill formation gained by completing the task, measured by our quiz, is significantly reduced”
Early- 2025 AI on Experienced Open-Source Developer Productivity Model Evaluation & Threat Research https://arxiv.org/abs/2507.09089 “We find that when developers use AI tools, they implement issues in 19% more time on average and nearly all quantiles of observed implementation time see AI-allowed issues taking longer. That is, developers are slower when using AI is allowed”
critical thinking and learning in a negative way • AI use has a negative impact on code quality • AI has a negative impact on reliability • AI doesn’t make you meaningfully faster… if it makes you faster at all
hires 1.Juniors who heavily use AI perform worse in technical interviews. 2.Juniors who heavily use AI quickly stagnate. 3.Juniors who heavily use AI take less ownership and responsibility for the code/solution.
job when the AI can’t solve the problem? 2. How do we ensure that changes actually work? What about regressions? 3. How do we ensure that the AI doesn’t introduce unintended behaviours? 4. What about security? 5. How do we ensure people have insight into the product's inner workings? Who has insight into the nuances?
driving seat To drive the AI, you need to be a better developer than the AI You cannot become better than the AI if you’re dependent on the AI When learning, you should refrain from using AI
in your editor, if you have to use AI, only use it in the browser • Never allow it to generate relevant code. Let it explain concepts, or generate example code, but never something that you can copy • Double check everything with non-AI sources
thing Join an existing project 1. Easy to work with relevant technologies. 2. Easy to work on something with users. 1. Shows that you can work independently. 2. Shows that you can take ownership. 3. More impressive if you also get users.
maintains and evolves a technical solution to remain relevant Fixing bugs, improving performance, security fixes, adding new functionality, etc The ability to continue to evolve and maintain the product at a competitive pace.
Professional Programmers • The Pragmatic Programmer: From Journeyman to Master • The Software Craftsman: Professionalism, Pragmatism, Pride Advice #2: "Working" is the bare minimum
is a programming paradigm based on the concept of objects.[1] Objects can contain data (called fields,attributes or properties) and have actions they can perform (called procedures or methods and implemented in code)” Source: https://en.wikipedia.org/wiki/Object-oriented_programming
is a programming paradigm based on the concept of objects.[1] Objects can contain data (called fields,attributes or properties) and have actions they can perform (called procedures or methods and implemented in code)” Source: https://en.wikipedia.org/wiki/Object-oriented_programming
is a programming paradigm based on the concept of objects.[1] Objects can contain data (called fields,attributes or properties) and have actions they can perform (called procedures or methods and implemented in code)” Source: https://en.wikipedia.org/wiki/Object-oriented_programming Function Named map/Struct
It doesn't matter how well written it is; it doesn't matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behaviour of our code quickly and verifiably. Without them, we really don't know if our code is getting better or worse.” - Michael Feathers, working effectively with legacy code “Why do most developers fear to make continuous changes to their code? They are afraid they’ll break it! Why are they afraid they’ll break it? Because they don’t have tests.” - Robert C. Martin “Testing is not the point. The point is about responsibility.” - Kent Beck