Using AI as a Solo Developer and an Open Source Enthusiast
Using AI for software development has been increasingly controversial among the open source community. It is seen as encouraging corporate control over personal data, software, and the open source software model and as such is treated as a threat from within the community, and mostly rightfully so. Using AI as an engineer, on the other hand, is getting increasingly difficult to keep up with as a solo developer. The mental energy required to keep up with all the model updates, news, threat discoveries, reviewing AI code, and maintaining a healthy well-being mindset has been increasingly devastating as someone who is not currently surrounded by company culture that satisfies some of these aspects out of habit or outcome-driven development requirements and expectations.
Blob of Thought
This post is a little different from my ususal posting - it’s a thought stream that is not orgenized or orchestrated to drive a certain point, but rather lay out my thoughts and feelings about AI-driven development and it’s challenges, which ultimately break it when it comes to me using it in my daily workflows. I can think of a few major areas of life as a software-engineer that are greatly impacted by AI-driven development, so let’s dive into it.
Legal
The question of who controls user data, privacy settings, policy control, and the code itself is a crucial question when it comes to open source software. Free open source software has always raised on its flag data privacy, transparency, and sovereignty, as well as user-owned software and self-hosting capabilities. A lot of AI-driven development trends make that impossible. The mere action of involving a corporate tool in your workflow as a developer may expose you to legal risks that are not present otherwise. As an example we have the recent dispute over the Navier-Stokes equations math problem that was actively being explored by two researchers and which, after using OpenAI tools to explore ideas for research, was practically hijacked by the corporate who then continued the research without their consent and advanced it to a point of solving the Navier-Stokes problem without any further human intervention and by that undoing years of effort done by the two researchers who initiated this exploration (more on that).
Creativity
The creative process of software-engineering in particular but of many other domains too, can be thought of as kind of a diamond-shaped process where you start out by expanding to as many directions as possible, ideating new directions, exploring the thought field and research field of a domain. And on the second part of the diamond, you converge - bringing ideas down to reality, making them grounded and exploring actual application and development. Then, once you have a small set of ideas that you want to proceed with, you expand again, research usage, user feedback, potential applications, potential complexities, competition, and then converge again and repeat. Using AI as a tool for ideation, exploration or convergence eliminates part of the process that make a product humane. The creative process is the defining core of human-made products and human-made products are what makes life interesting and thriving. The connection we feel to daily life is dependent on us having all sorts of kinds of relationships with the objects around us and the people around us - with the things that define our daily life. If everything we interact with loses its creative core and human touch, we are very easily starting to lose the spark of life. As someone who has dealt with depression before, this is the biggest red flag I have ever seen in my life.
Burnout and Well-Being
This is one of the points I see repeated more than most of other things regarding AI involvement in the development process. The sheer amount of code AI can produce in an unprecedented velocity creates a mental load that humans are not equipped to handle. Open source maintainers are spammed with AI slop and PRs containing no human effort, software developers are moving from being crafters into editors of AI output, and AI has only increased burnout levels instead of making life easier for software developers (more details).
Craftsmanship and the Junior Trap
I got into software development because I was interested in the thrilling process of thinking about something and then making it happen with words. This process is what drove my interest, personal development and career over the years. It’s the thing that has pushed me to explore, learn, improve and climb the mountaion of software development. Eliminating this process by handing parts of it to a machine, removes the joy from creating software, at least for me. Another important issue is that it creates a learning gap that is impossible to fill for junior new developers - when a new developer joins the software developing world, it used to be that they could be mentored by the process of writing code and reviewing code. They could learn principles of software engineering by learning from their elders and this ecosystem of education was self-sustaining, as people grew and learned to fit into the role of code reviewers from code writers. The two of course can coexist and this is what makes a good software developer. But if we give away parts of that process, either the review or the code writing to AI, then we break this chain and then we are left without new engineers to review new code and educate the next generation of developers.
Now What
It’s easy to fall into the doomerism trap. Say that AI is going to kill us all and reject the whole thing as a complex. This is not what I want to do. No boilerplate put it out very clearly. I do not hate AI, I love humans. And being pro-human means I want to drive human development and human self-fulfillment, which cannot be achieved if AI replaces parts of the creative process, even within the field of engineering. So for me, AI stays out of the way. At least for my solo-prenuer endevours.