I have been thinking a lot this week about how AI is going to change the software industry. As I showed a few weeks ago, AI is already pretty capable of putting together a fully working app with just half a day's work.
This week at work, one of our sales team used v0.dev to put together a quite impressive mockup of an idea he had. And that was a sales guy with no technical experience. Yes, it was just a mockup of an app and wasn't actually functional, but doing that would have been impossible a year ago.
Given that now everyone is capable of being a "software developer," how is that going to affect the software industry? Is the need for developers going to decrease and, along with it, our salary expectations?
AI is definitely going to cause more people to create software in the same way that Instagram caused more people to take photos. However, not everyone taking photos is a photographer, and not everyone creating software is a software developer.
Anyone can take a photo with their phone, but a photographer understands things like lighting and composition (can you tell I'm not a photographer!) to capture a memory or tell a story that not everyone is capable of.
The same is true for software development. Yes, AI is capable of writing code, but unless you are capable of fully understanding the requirements and the code that it has written, it won't be as good as what a professional developer could do.
Unless you are explicit with your prompting and can check the results, apps written purely with AI prompting (some people are calling this βvibe codingβ) will likely have security vulnerabilities and performance issues.
Yes, AI might get better, but at the moment, unless you explicitly ask AI to handle particular security issues or performance concerns, you will likely have problems.
I found this when I was coding my iOS app. When errors occurred or the app was being slow, I wasn't sure what was causing the issue without digging into the code and finding out the cause.
Security and performance issues can be especially hard to diagnose when you are developing an application locally. Database performance issues usually only start occurring when you have millions of records in the database. Security concerns, such as users being able to see other users' data, are only made apparent when you have more than just your test user in your system.
AI will definitely increase the amount of software being written, but good, secure, performant software still requires someone with knowledge of what they are building. The bar, however, for what is considered good has undoubtedly been raised.
If all you are doing is creating simple static websites for clients, then you are going to need to be exceptional to justify your prices. If, however, you are making complex applications that require a lot of components and business logic, then you should be safe for a while.
I do see more people getting into software development but likely coming from a different angle. Instead of starting with the fundamentals, the hello world app, and expanding from there, they will be building more complex applications with AI and then will be forced to understand the code so they can fix problems that arise. Learning top-down instead of bottom-up.
Either way, if you are a developer and haven't tried prototyping a few projects with an AI assistant, you should give it a go.
β€οΈ Picks of the Week #
π Article β Popular GitHub Action tj-actions/changed-files is compromised β If you are using this action that you better check you haven't been compromised and change all your security keys now.
π οΈ Tool β Generate impressive-looking terminal output, look busy when stakeholders walk by β long gone are the days when I would need this, but this is funny. I have certainly been in companies in the past where VIPs have been visiting, and we have been told to dress smarter and look busy!
π Article β Moving away from US cloud services β as a UK citizen it seems my government are trying to learn from the US and implement mass spying on its citizens. Rather than opting for EU alternatives you might be better off self-hosting locally instead.
π οΈ Tool β Docs: Open source alternative to Notion or Outline β This looks great, an EU government backed Notion alternative. This is especially important given the above.
π Article β Visualising data structures and algorithms through animation β This looks like a great way of understanding how these data structures and algorithms work.
π Article β Our interfaces have lost their senses β Sci-Fi often shows computers where interact with holograms or moving nanoparticle control panels. Instead, we are left interacting with a flat piece of glass.
π Article β The Alexa feature "do not send voice recordings" you enabled no longer available β I am glad I switched over to Apple HomePods. Although I can definitely see myself using something like this in the future.
π Article β AI Blindspots: Blindspots in LLMs I've noticed while AI coding β There are some great points to keep in mind if you are using AI to create your projects.
π Article β The Pain That Is GitHub Actions β I have a love hate relationship with GitHub Actions. In most cases, once your action gets too complex you would be better putting all the logic into a script and running that instead.
π‘ Today I Learned (TIL) #
I recently encountered a race condition when updating a record in the database.
It turns out that doing an INSERT ... ON CONFLICT UPDATE ... WHERE isn't immune to race conditions even when inside a transaction.
Postgres has a FOR UPDATE feature that allows you to block a row from being updated until the transaction has completed.
This has to be used on a SELECT statement. e.g.
SELECT version FROM checkpoints WHERE id = @Id FOR UPDATE
This has to be used in a transaction along with your update statements.
Note, however that if you have a child table that links to this table with a foreign key then it will also block that table from doing an insert relating to this row. If you want to prevent that then you need to use FOR NO KEY UPDATE instead.
With these options you also have the option of using NOWAIT and SKIP LOCKED.
-
NOWAIT- will throw an error if it can't immediately get a lock. -
SKIP LOCKED- will skip any rows that it can't immediately get a lock for. I am not sure in what scenario you would want this!
There is more information here: PostgreSQL: Documentation: 17: SELECT
π¬ Quote of the Week #
We fail to adjust the probability of old information to reflect what we have learned. The big idea behind Bayesβ theorem is that we must continuously update our probability estimates on an as-needed basis.
From the article Predicting the Future with Bayesβ Theorem
Top comments (0)