Created: 2022-09-26 09:40

I was always a denialist of “No code” and AI tools meaning the end of software engineer as a career. I still believe it will not mean the end but it will have a huge impact in the way we write code and the way we do software engineering.

This is the tweet that changed my perspective:

https://twitter.com/finereli/status/1573547244611305472?s=20&t=4GWCL_4DO09yIUWuTyGtjQ

https://twitter.com/amasad/status/1573375453565681665?s=20&t=TMDq-xDdbWSPcpgYo65NJA

I think it has to do in a sense with something that happens very often. Humans tend to worry so much about a certain thing that they don’t realize when that thing they worry about already became a reality, just it did so in a way they didn’t realize it’s the same thing. Eg. people worry about some future Cyberpunk dystopia where the rich and powerful will be in control. Which is kinda the reality today, minus the cyberpunk aspect of it.

Notes

What came before

We haven’t had any AI revolution before, but we can still learn from history. The industrial revolution is a good example, tools and machinery were introduced that totally changed the way humans produce goods. From manually assembled to machine assembled. The role of the human went from being the tool to controlling a machine. Since the Industrial Revolution the trend of having machines do more of the heavy work continues and keeps being refined. Machines change the things we do not only how we do them

#question how much does a machine operator need to know about the process in order to operate the machine? If developer becomes the machine operators do they still need to understand all the code the machine spits out?

The Technological Revolution (ie. the introduction of computers) brought similar changes, the possibility for humans to achieve tasks that are not humanly possible. Computers enable micromanagement

One interesting thing that happened, specially with manufactured good, is the rise of demand for human and home made goods. For craftsman goods. Sites like Etsy all are about hand made goods. Specially when manufactured goods are of low quality, lack originality and creativity. Will this happen as well with AI generated content vs. 100% human produced content? Will we have “100% human produced” seals in our digital products? What does that even mean? For a chair or a belt it is easy to define, but what about a piece of code or an article?

Higher level code

Dijkstra states that natural language programming will never replace formal language programming because it natural language cannot be formalized. I agree with that.

However, what happens when the productivity of a developer aided by Copilot becomes impossible to process with our normal processes? Will we still have pull requests?

The way we write code today, is very imperative. Some languages like Haskell get closer to a more declarative style. In general, variables are defined and mutated, arrays are traversed.

#question how does a programming language looks like in the age of Copilot?

Something that is still formal enough to be checked for correctness but higher level than today that the inner workings of it can be left to the AI to generate? Maybe we’ll have some AI Script type of language that is the result of the prompts we give to the AI, which will also have a lower level representation in actual JavaScript/TypeScript/Go, also readable and editable by the developer to further improve the feedback cycle.

Now this takes us back to the previous question, how much of the inner workings does the machine operator need to know?

Or maybe coding will look more like an scene from Iron Man where Tony and Jarvis work together than what we do of today, where developers write and read most of the lines of codes involved in their application.

#question what if the process is different, what if we are stuck with our current languages but developers stop verifying the AI generated code and we are stuck in a very optimal local minimum?

#question how do we prevent dog fooding of the AI models that are our pair programmers partners? Is the code they generate and we (don’t) verify a good input to further improve and refine the models? When everybody is using Copilot, does it even make sense to only train the models with human written code?

NOTE: see HyperTalk and Arbor for an example of a higher-ish level languages

#question as the field of programming changes and we shift towards higher level languages and less code tools. Who can become a programmer? Should everybody become programmers? Hamming states that Not everybody can become a programmer, based on a forma definition of programming (Programming is about formal specification). If the definition is more lose, then most of the population has to become programmers (Society went from material goods based to information services based).

Resources:

Learning to code?

All of the before is based on the paradigm of a developer that learned to code before AI and now is adapting.

#question how does programming change when developers are learning to code aided by AI?

In the same fashion, as new developers learn to code they don’t tend to reach out for lower level languages but instead go for higher level languages that allow them to be productive without having to learn all the inner workings of the machine. From Assembly, to C, then C++, then Java and now JavaScript.

And so, with this new metaphorical AI Script, will new developers even learn to code understand the underlying TypeScript?

Programming vs. Software Engineering

Software engineering is programming over time, that’s the difference with programming.

Programming will definitely be impacted, probably for the better (Photoshop for text).

How does software engineering change with the introduction of AI? Will Copilot define the architecture of the application as well? Will it aid us in doing systems design?

Computer are much better at remembering things, keeping tracking of multiple variables, and running simulations. Maybe they will become a good partner in the process of designing a system.

However I believe we are further from reaching that level with AI than we are of having AI do the coding for us.


ChatGPT thoughts

C: What is the best way as a software engineer to prepare for the age of AI?

G: As a software engineer, the best way to prepare for the age of AI is to become familiar with the basics of machine learning and artificial intelligence. This includes understanding key algorithms and techniques, such as supervised and unsupervised learning, and knowing how to implement these algorithms using popular libraries and frameworks. Additionally, it can be helpful to stay up-to-date with the latest developments in the field by reading relevant articles and attending conferences and workshops.

C: How will AI change the day to day of a software engineer’s work?

G: AI has the potential to change the way software engineers work in a number of ways. Some possible ways in which AI could impact the day-to-day work of a software engineer include:

  1. Automating routine tasks: AI algorithms can be trained to perform many routine tasks that are currently done by software engineers, such as debugging code or writing simple tests. This could free up software engineers to focus on more complex and interesting work.
  2. Augmenting human intelligence: AI algorithms can be used to help software engineers solve complex problems more quickly and accurately. For example, an AI system might be able to suggest solutions to a coding problem based on previous experience, or help identify patterns and trends in large datasets.
  3. Creating new tools and platforms: The development of AI algorithms and systems will likely lead to the creation of new tools and platforms for software engineers to use. These could include new programming languages, frameworks, and libraries specifically designed for building AI-powered applications.

Overall, the impact of AI on the day-to-day work of a software engineer is likely to be significant, and it will be important for software engineers to stay up-to-date with the latest developments in the field in order to remain competitive.

C: And what would be the impact on software engineering as a discipline? I believe it will change the field fundamental way, like programming languages would look different as well as design system patterns. What are your opinions?

G: It is likely that the rise of AI will have a significant impact on the field of software engineering as a discipline. Some possible ways in which AI could impact the discipline include:

  1. Changes to the way software is developed: As AI algorithms become more advanced and easier to use, software engineers may start to rely more heavily on AI to automate routine tasks and augment human intelligence. This could lead to changes in the way software is developed, including the use of new programming languages and design patterns.
  2. The emergence of new sub-disciplines: The development and application of AI algorithms is likely to give rise to new sub-disciplines within software engineering, such as AI engineering or machine learning engineering. These new sub-disciplines may require specialized knowledge and skills, and could lead to the creation of new job roles within the field.
  3. Greater collaboration with other fields: The development of AI systems often involves collaboration between software engineers and experts in other fields, such as data scientists, statisticians, and neuroscientists. As a result, software engineers may need to work more closely with these other fields in order to build effective AI systems.

Overall, it is clear that the rise of AI will have a significant impact on the field of software engineering. As AI continues to advance, software engineers will need to adapt and stay up-to-date with the latest developments in order to remain competitive.

Dangers of AI

  • Limited creativity and innovation: AI-generated code may lack the creativity and innovation that human developers bring to the table. Whilst AI can generate code based on existing patterns and examples it might not be able to come up with novel solutions by thinking outside the box like humans can.
  • Over reliance on AI: would lead to a decline in human programming skills.
  • Ethical concerns: biased algorithms and loss of jobs due to automation.
  • Security risk: AI generated code might introduce vulnerabilities which would go unnoticed given the sheer magnitude of productivity gained by using AI and the decrees in skills of the human developers.

Journal / Notes on …

2025-01-31 ~ Cursor

DeepSeek announcement made me wanna try Cursor. Enjoying the experience so far. Definitely way better than Copilot, which was only good to do less typing on the repetitive stuff. I do find myself reaching for its different editing features even for simple things that I used to be able to do very quickly and efficiently without putting any thought into them. And in some cases the result is slower than if I had done it myself.

I remember finding it odd that my dad lost the ability to drive around without a GPS when he started using Google Maps, even for directions to places he’s actually very familiar with and traveled his whole life to without even a map.

I’m three days into using Cursor and I’m already experiencing the same.

Also, embedded AI tools are way better than the general purpose chat bots. Until now I was reluctant to try other tools, I adopted ChatGPT Pro relatively early and stuck with that. But now I see how much powerful it is to bring the LLM over into the editing tool. I’m sure there’s much more potential and whole other paradigm shifts waiting to happen (Paradigm shifts in development) in the way we write code (and more generally write/create/think I guess), yet Cursor already feels very well accomplished and, I dare to say, novel or innovative.

Back to the point above. I believe the net result is more productivity. Specially on the type of coding I’m doing these days that requires a lot of back and forth and exploration. But there are many a moment when I end up being less productive just because I’m using the tool. For things that’d take me less time to edit/write them myself I end up still writing a prompt and have the AI do it. Is it maybe because the editor is not completely the one I’m used to?

#question Is it a paradigm shift or not? Paradigm shifts in development