Hacker News new | ask | show | jobs
by joshka 1186 days ago
Hard disagree. I actually think the 80/20 mentioned in this article is low if done correctly. Let's think about the software engineering process for a minute and work out which bits to automate. Here's GPT3.5 on the process (PROMPT: List the steps going from a goal or dream to a software product in software engineering)

1. Idea Generation: The first step in creating a software product is to come up with an idea or goal that the software will achieve.

2. Research: Once you have an idea, it is important to conduct research to determine the feasibility of the idea and identify any potential challenges.

3. Planning: After research, planning is necessary to determine the scope of the project, the timeline, and the resources required.

4. Design: The design phase involves creating a detailed plan for the software, including the user interface, functionality, and architecture.

5. Development: In the development phase, the software is created by writing code, testing, and debugging.

6. Testing: After development, the software must undergo rigorous testing to identify and fix any issues.

7. Deployment: Once the software is tested and ready, it is deployed to the target audience.

8. Maintenance: Finally, the software must be maintained to ensure that it continues to function properly and meets the needs of the users.

Each of those steps has a back and forth with a LLM that can enhance and speed up things. You're talking about 4 as being problematic, but right now there's a lot of "human in the loop" type issues that people are encountering.

Imagine having the following loop:

1. LLM has generated a list of features to implement. AI: "Does this user story look good?" Human: "Y"

2. For each feature, generate an short English explanation of the feature and steps to implement it. Your job as a human is just to confirm that the features match what you want. "Should the shopping cart

3. For each step, LLM generates tests and code to implement the feature. AI: "Shall I implement the enter address feature by doing ..." Human "Y"

4. Automatically compile the code and run the tests until all tests implemented and feature is complete according to spec.

5. Automatically document the code / feature. Generate release notes / automated demo of feature. Confirm feature looks right. AI: "Here's what I implemented... Here's how this works... Does this look good?"

6. Lint / simplify / examine code coverage / examine security issues in the the code. Automatically fix the issues.

I think you also miss that the LLM can be prompted to ask you for more details. e.g. PROMPT: "I'm building a shopping cart. Ask me some questions about the implementation."

1. What programming language are you using for the implementation of the shopping cart?

2. Are you using a specific framework for the shopping cart or are you building it from scratch?

3. How are you storing the products and their information in the shopping cart?

4. How are you handling the calculation of taxes, shipping costs, and discounts in the shopping cart?

5. What payment gateway(s) are you integrating with the shopping cart?

Which can then be fed back to the LLM to make choices on the features or just plain enter the answer. PROMPT: "For each question give me 3 options and note the most popular choice.", and then your answers are fed back in too. At each point you're just a Y/N/Option 1,2,3 monkey.

More succinctly, in each step of the software game, it's possible to codify practices that result in good working software. Effectively LLMs allow us to build out 5GL approaches[1] + processes. And in fact, I'd bet that there's a meta task that would end up with creating the product that does this using the same methodology manually. e.g. PROMPT: "Given what we've discussed so far, what is the next prompt that would drive the solution to the product that utilizes LLMs to automatically create software products towards completion" ;)

[1]: https://en.wikipedia.org/wiki/Fifth-generation_programming_l...

1 comments

(Feel free to reply and vocalize your respose rather than just slapping a downvote)