Software Development for All
The art of building software is going to get even better. Thoughts inspired by this tweet thread.
With more tools that increase developer productivity—such as AI, bounties, and modular and monetizable code—we will see a lot of growth in what people can do with software. I have always had the elitist view that only developers should have the ability to build software products. The higher your grasp of programming concepts like variables, encapsulation, and abstraction, the higher the status and respect you deserve to build software. However, building software can be tedious for many and time-consuming for those who engage in it. It requires a lot of mental effort to write a piece of code that can produce the desired output. This excludes testing, scaling, and even having a use case for that piece of code to solve.
In light of this, the best way to get more useful software applications is by getting more people building software by making it faster and requiring less effort and cost. This is simply making the art of software development easier, faster, better, and cheaper.
The Vision for Software Development
Imagine being able to build a software product in a couple of lines, with a click of a button, murmurs of your voice, or even just thinking about it. That's powerful. With new tools like GPT-4, AI is best positioned to help us get more usable software out there in faster and easier ways. The mind of a developer can be more focused on the use case and design of the product instead of the details of error handling and logging.
For example, I have recently been frustrated at how there is no out-of-the-box boilerplate that allows you to build SaaS products from the ground up. I have seen how this can work with Django, React, Docker, and AWS. However, most people cannot do what I can do, and they are left out of such an essential skill as software development.
Most people should just be product managers or developers, and they can have an army of AI tools, modular code, APIs, and services they can seamlessly integrate to get work done in developing software products.
Fundamentals are still the key
With better tools and development experience, we will get more creative products coming out of the industry. However, there is also the argument that such abstraction will limit technological creativity. This is what is happening in the wider development space, where 3-tier, server-client software is all there is. The exception is blockchain and Web3, which is a significant paradigm of computing but still needs to get a use case.
Software has more to offer, and making its development more accessible for people to solve problems is a good development. However, additional work in the discovery and development of new and emerging technologies is necessary, especially by people who understand the fundamental and primary concepts of software development and how computers work. We still need those people. We should empower the professors, hobbyists, researchers, renegades, and rebels to take the computing industry to new heights.
The two poles are new and emerging technology and making software development accessible to all. That's a good set of extremes to maintain.