Sean's Dev Blog

Why A.I. Can't Program Things From Scratch

September 27, 2020

Many people have a notion that eventually an artificial intelligence will be able to build a website or a software application for you from scratch. You will just tell it what you want, and then it will build that for you in minutes. This would be an instance of artificial general intelligence, which would be a computer that can perform at a level that is cognitively equivalent to a human. This is also known as Strong AI, a term coined by John Searle in a seminal 1980 computer science paper titled “Minds, Brains, and Programs.”

The problem with that approach is that this is already how programs are created. It usually begins with a drawn-out design phase in which engineers, designers, business analysts, marketers, and other industry leaders from a variety of fields get together to plan out the requirements for an application. Everything is defined clearly, from the font type, to the size of different components, to the transitions from page to page.

A team of developers then need to get together and write out the actual programs using languages of their choice based on the finest details. They need to tell the computer what design decisions have been decided upon, where to put the call to action, how big to make the navigation menu, how to drive clicks, how to generate interest, etc.

A software project thrives on specificity and drifts into oblivion through lack of definition. The same thing would happen if we lived in a future world where we told a genius computer to “just design something nice for us.” The computer would still need to have the proper inputs, or it would just create something random. It might take 1,000 random recompiles to get a design that fit our project requirements which the design team, development team, and management team all thought was good.

One might argue, well we can just feed it project requirements and it will be less subject to randomness. This would be true, if the project requirements were specific enough. However, it defeats the purpose of having a genius computer that knows everything. There is still an overarching human element of creativity and ingenuity which would dominate the development process.

As most software developers know, the most time-intensive portion of a software project is not the actual coding. The greatest amount of time goes towards planning, making design decisions, architecture decisions, implementation decisions, and going back and forth with a client to understand their problem and satisfy their business need in an optimal way. A super-intelligent website builder still needs input, and this input requires expertise and conscious design.

Musings on coding, UX/UI, and hacker culture

© 2020 Sean Boisselle