Today we will talk about what ai means to programmers and how I think we should approach it. With non-stop hype cycles and so many opinions on the topic there is a lot of confusion for people of all levels of experience. There also seems to be a general divide in the perception of AI: some believe it will replace us all, while others dismiss its significance entirely. Let's explore both perspectives and examine a more balanced approach.
Disclaimer: The following is based on my personal experience and observations of recent news cycles. My engagement with AI began with experimenting with prompts using GPT-3 and GPT-3.5 in a casual capacity. Over the past few months, I have incorporated tools such as Microsoft Copilot, Gemini Flash, and Claude Sonnet 3.5 into my workflow more extensively. I currently use Claude within my IDE and regularly work with the other tools through browser tabs.
The Delusion
AI is often portrayed as a revolutionary force "unlocking possibilities we never dreamed of." Common claims include "You won't need to code" and "AI agents will replace humans." And it is becoming popularized by large players and small-large influencers in the game. This perspective is harmful though. While AI tools are undeniably useful, over reliance can be detrimental. Those advising against learning programming due to AI are promoting a misguided perspective. This mindset can impair learning and limit ones effectiveness, similar to how over-reliance on no-code tools and abstractions has affected the skills of modern developers. It's not a free happy path, but that doesn't mean ai tools are not amazing. Let's just be real with ourselves and quit trying to avoid doing the work.
Ai Sucks Vibe Coding Is Death
People who consider themselves real engineers often approach AI tools with skepticism, citing valid concerns:
- → "I'm faster coding manually"
- → "Generated code is buggy"
- → "You don't learn by getting instant solutions"
These points merit consideration but require context. The effectiveness of AI tools varies based on skill level, experience, domain expertise and in cases guidance or lack of. How these things apply is different on a person to person basis, so it's hard to take some people's criticism seriously when they make blanket statements.
Criticism is due though. The industry needs to do a better job setting the "Flavor" such that more realistic expectations are built which would allow for a more forward unified thinking that would actually maximize humanity's benefit of these tools. Side note I was once in the camp of resistance to ai myself, but after spending a few months incorporating ai into my workflow, I have become convinced this is not a fad and the hype is to a degree real just drastically misrepresented probably for funding idk.
A Reasonable Approach
Ai is just a new tool to add to your belt. It's no more special than your internet connection, computer/operating system, text editor, compiler, etc. How and how heavy you lean into this tool will depend on the individual and their circumstances.
With the right mindset, students, novices, and even mid-level engineers can significantly speed up their development by leveraging AI as a reliable and accessible tool for overcoming obstacles and deepening their understanding. AI tools offer a powerful means to explore new territory, facilitating a smoother and more efficient learning curve. As developers, we are often required to navigate unfamiliar problem spaces and produce solutions. AI tools make delving into these new domains more accessible, enabling individuals to expand their knowledge and successfully tackle challenges they might otherwise struggle to overcome alone.
I envision AI as a powerful tool capable of bridging gaps within the programming community and beyond. These tools have the potential to reduce disparities in both skill levels and workforce capacity. This is a positive development, as it can lead to a more competitive software industry, fostering greater diversity in solutions and driving innovation.
How to Survive Ai
Alright now that we have taken a brief look at multiple view points with my interjections included. I want to share with you how I think Ai will be optimal for most programmers and what you should do if you're just learning or only a couple of years into programming.
The best way to integrate AI into your workflow
Is to treat AI agents as collaborative pair programmers that follow your direction. These agents are able to tap into extensive knowledge and can be leveraged effectively for various tasks. While you remain in control of the design and development process, AI can help by generating arbitrary code, exploring new concepts, delving into unfamiliar domains or technologies, acting as a "rubber duck" for debugging, and providing alternative solutions. These areas represent where AI tools can be particularly effective, provided certain principles are followed.
Focus on specific areas of the codebase, ideally narrowing down tasks into manageable chunks. While AI tools are increasingly capable of handling larger scopes, a targeted approach often yields better results. As with problem-solving in general, break tasks into smaller components, and assign parts that are time-consuming or less familiar as candidates for AI assistance. It is crucial to thoroughly review and validate the AI's output: either integrate it directly, refine or enhance the provided solution, or use it as inspiration to take a different approach.
This method proves especially useful for debugging, speeding up the iteration process during research and development, reducing context switching by staying within the IDE, and ultimately increasing time spent with the code and not on the internet. Helping to maintain a more focused and productive workflow.
The best way to approach ai as a noob programmer.
As someone just getting into the vast world of programming. Ask yourself what am I trying to achieve. Now this will vary for people but if your thinking of creating value in any sense. You will need to be competitive and component. If you limit yourself to being as good as an ai then your screwed. Unless your able to build some lore around yourself and your project but that's not programming and will be limited, fragile.
Learn the fundamentals of programming, your language choice doesn't matter so much. If you know how to code changing languages becomes trivial. Do what interest you and don't be shy to experiment with new things. There is a lot to learn from seeing different ways of doing things. And this is where Ai makes its first meaningful appearance to the beginner. As you're learning new concepts, syntax, etc. Ask the LLM questions and get alternative explanations from the source material your studying. You could go deeper and ask questions about the answers and have a dialogue on the topic too which I personally find useful.
Learning to code is straightforward, learning to design and build commercially viable complex systems takes a long time. Make peace with this fact and enjoy your journey. Do the work and don't fall for hype sales pitches. Doing the work will never fail you but looking for an easy way out will eventually.
The Golden Age
With all of that out of the way, lets take a step back and look at how this effects the world of programming on a higher level. It is my belief that ai tools will accelerate development and developers rate of experience, ultimately making people better developers faster and increasing the rate at which competitive software can launch. As I mentioned at the end of the reasonable approach section. This all has to do with mindset though. If people adopt negative or naive mindsets who knows how much of this applies.
The software industry feels a little bland considering its possibility space. I don't know if that is just me, but it seems like very little innovation in terms of consumer products has taken place over the years. Not to say amazing things are not being built, but consumer software in general feels sloppy and repetitive at best. Features are often buggy, performance isn't there, or it's not really designed to maximize the value for a user by default; you got to pay to unlock useful features. I understand the need to get paid for your work, and if your work produces value for people, you deserve it. But I think it becomes a problem when it's A. the main motive and B. The environment encourages it just so people can stay afloat. Which ultimately takes away from the consumer. My experience has been the solution space feels limited despite a "plethora" of options. Personally, I find your options quickly boil down to choosing one of a few solutions which really boils down to the choice of ui preference or your operating system supports it.
I think we could be moving into a new era of innovation in consumer applications, with Ai tooling being the catalyst. From my pov, most of the innovation of recent years has been in technologies and tools, and now the stage is set for a new wave of innovation in the user space. We have more compute power then ever and I am looking forward to seeing how people will use it.
Conclusion
AI in programming represents both challenge and opportunity. Rather than viewing it as either a complete replacement for human developers or dismissing it entirely, we should embrace it as a powerful tool that can enhance our abilities. The key to thriving in this new era lies in maintaining balanced approach - leveraging AI's strengths while continuing to develop our fundamental programming skills and understanding.
For experienced developers, AI can streamline workflows and boost productivity. For newcomers, it can serve as an intelligent learning companion, providing explanations and alternative perspectives. However, success with AI tools ultimately depends on the developer's ability to understand, validate, and properly implement the solutions it suggests.
As we enter this new golden age of software development, the focus should shift from viewing AI as a threat to seeing it as a catalyst for innovation. With AI assistance, developers can spend more time on creative problem-solving and pushing the boundaries of what's possible in software development. The future belongs not to those who resist or blindly embrace AI, but to those who learn to work alongside it effectively while maintaining their core competencies as developers.
The stage is set for a renaissance in software development, where AI tools help bridge skill and budget gaps and speed up innovation. The key is to approach this transformation with wisdom, maintaining high standards of code quality while leveraging AI to enhance our abilities rather than replace them. The future of programming looks bright - not despite AI, but because of how we choose to integrate it into our craft.