Why do we keep saying LLMs are good at "coding" but not the actual "programming" or "development" phases? Because they are distinct terms.
Coding vs. Programming vs. Software Development
Coding: Translating a given mathematical logic into a specific instruction format (syntax) for a specific environment in a specific style. Such as writing "Apple" but as "[started]A-p(2x)-l-e[finished]" because it had to be like that for a constraint.
Software Development: The most comprehensive term. It includes design, planning, ideas, programming, coding , deployment, maintenance, repairing, analyzing, and more.
Programming: Creating a mathematical logic that solves a problem. For example first thinking about a problem and writing down some logical formulas to restrict a problem to a manageable scope and then attacking the problem with more logical rules. Generally written on a paper, whiteboard, notepad or flowchart.
A very simplified example of what PROGRAMMING would look like BEFORE implementing in a programming language or style can be designed by a programmer in this way if wanted to
Program module 1: {
Step 1: Defining Abstractions & Initial Validation
user = Yunus or Joe or Lee and not Ali
GUI = GUI for Windows XP but not Ubuntu
If
user -> hasTerminalRunning()
user -> getAvailableRAM() >= 5120
user -> isOnLinux()
user -> isClicking("GetSocialInfo")
GUI -> hasFunctionBound("GetSocialInfo")
GUI -> isFunctionWorking("GetSocialInfo")
then
user -> [state = READY_TO_PROCEED]
else
abort("Preconditions not met. Cannot continue.")
Step 2: Proceed with Profile Fetch
If
user -> [state == READY_TO_PROCEED]
user -> getAvailableRAM() >= 5120
then
profile = GitHubAPI -> fetchProfileAsString(user -> username)
if
user -> prefersEmojiFormatting()
then
profile = transformLineBreaksToEmojis(profile)
return profile
else
abort("Insufficient RAM during GitHub fetch.")
}
Program module 1.2: {
if
GUI from module 1 is for Windows XP
then
RAM allocation -> should be calculated as ->
Σ (Nᵢ × Sᵢ) + O
else
STOP EVERYTHING NOW.
}