That to me is an indication of a need for an even higher level abstraction.
At this point we should be able to go through a questionnaire, and software (not an AI, but definitely algorithm with rich knowledge and rules) would generate a quality starting system.
$ I need an app
Q1. do you need it to be available on the web?
A1. yes
Q2. do you need users with accounts?
A2. yes
Q3. do you want local passwords, and/or third party connections such as Github, Google, Facebook, etc.?
A3. local and third party
...
Qm. Do you have a programming language preference? [Ruby, Java, Python, ...]
Am. Ruby
Qn. Do you have a database preference? [MySQL, PostgreSQL, ...]
An. PostgreSQL
...
Add some theme options and other goodies, and you essentially have an app starter kit. Granted, you still have to know the technologies and plumbing since inevitably you'll need to change something that was preconfigured, but this would save a lot of time (and result in more consistent foundations across apps.
Ultimately I hope this goes even higher level to no-code or nearly no-code solutions. It might mean fewer choices, but that can also be a good thing. I imagine a majority of all software needs can be met with just a few predefined configurations. Then you can decide if you want to change your needs to fit the easy solutions, or if it's really worth going custom.
Such starter kits exist, e.g. JHipster[1]. The problem is that after you've generated the starter code, this big heap of code (that you're not familiar with the details of) is now yours to maintain and upgrade.
There is also cookiecutter [1], that attempts a crack at the same problem you are describing. There is also a nice website [2] that searches for all the cookiecutter templates and lists them.
It is often recommend to not write a function if you call it only once or twice. So most functions will be called multiple times in your code.
Copilot can be useful here as it will autocomplete all arguments, based on the context (existing variables) and knowledge about the functions arguments, or previous usages. Of course sometimes it is wrong, but this is still very useful to me !
At this point we should be able to go through a questionnaire, and software (not an AI, but definitely algorithm with rich knowledge and rules) would generate a quality starting system.
$ I need an app
Q1. do you need it to be available on the web?
A1. yes
Q2. do you need users with accounts?
A2. yes
Q3. do you want local passwords, and/or third party connections such as Github, Google, Facebook, etc.? A3. local and third party
...
Qm. Do you have a programming language preference? [Ruby, Java, Python, ...]
Am. Ruby
Qn. Do you have a database preference? [MySQL, PostgreSQL, ...]
An. PostgreSQL
...
Add some theme options and other goodies, and you essentially have an app starter kit. Granted, you still have to know the technologies and plumbing since inevitably you'll need to change something that was preconfigured, but this would save a lot of time (and result in more consistent foundations across apps.
Ultimately I hope this goes even higher level to no-code or nearly no-code solutions. It might mean fewer choices, but that can also be a good thing. I imagine a majority of all software needs can be met with just a few predefined configurations. Then you can decide if you want to change your needs to fit the easy solutions, or if it's really worth going custom.