Hacker News new | ask | show | jobs
by xorcist 13 days ago
Anybody who has ever done programming professionally in the small scale knows this. Refining the requirements is the job.

In fact, I've never known an industry so keen on levelling its own moats as the software industry. We regularly invent things like 4GL, graphical programming and frameworks and engines such as Unity just to enable more people to do programming. People will happily teach programming for free in outreach programs (I am just one example). No other profession does this. Perhaps with the exception of mathematicians and other fields that are very close to programming.

I could teach an economist enough programming in a weeks that they could write an ERP module, but I could not learn enough economics in a week to write one. If the language was the barrier, we could invent a more effective one. We invent new languages weekly anyway. Having seen how quickly beginners can make things with Unity or Godot, I seriously doubt an LLM agent could improve much on this. Of course, if the job is writing yet another CRUD React app with a Java or Python backend, then sure, the LLM will be very effective. But compared to doing same app in something like Excel or MS Access? Not that much.

4 comments

Everything everywhere does this. All human progress has been making common and accessible the rare and expensive. Universities, online courses, textbooks, etc all exist to make economics as accessible as possible, there’s just a really tight reward loop with programming so your rate of learning it is more tangible
I think you are underestimating how hard it is for average joe to learn programming basics. I remember a fellow in high school that just could not accept that = in programming is assignment not an equation (like in high school math)
I'd like to believe I have an inkling, having done a fair bit of teaching.

Still, imagine how hard other skills are to acquire. How much civil engineering can you learn in two weeks? How much violin playing? But you could absolutely get basic grasps on a general purpose programming language. With something specialized like Unity or Excel you would get tons of useful output.

The hurdle around assignment operator is as old as symbolic languages. That's why legends such as Niklaus Wirth wanted to use another operator, ":=", a notation that is still being used.

Anyway, it can be a hurdle, but one I find that most people get over pretty quickly.

> The hurdle around assignment operator is as old as symbolic languages. That's why legends such as Niklaus Wirth wanted to use another operator, ":=", a notation that is still being used.

Well, sure; but more generally, the ability to accept other meanings for symbols (and keep subtly different symbols straight in one's head) is a mental skill, and individuals vary in their aptitude for it. (Presumably, this one is also relevant to natural language learning, since one must reckon e.g. with false cognates.)

Nah I just think you are so overwhelmed that "=" having a different meaning lh and rh is just too much. It is hard to remember how hard it was.
> I remember a fellow in high school that just could not accept that = in programming is assignment not an equation (like in high school math)

The English noun "mist" has a different meaning than the German noun "[der] Mist" (dung, crap). Or the French "[la] infusion" has a different meaning (herbal tea) than the English "infusion" and the German "[die] Infusion".

So, you are very used to the situation that in different languages, terms can have different meaning, so also in, say, C versus mathematics.

not to mention the other english word, "missed", which sounds exactly the same.

However, people really do have a great deal of trouble with this exact concept. Its a common test to give to people to define a function with a misleading name, like multiplyByTwo(int x, int y), and then show them the code inside (return x/y) and ask what this results in. Surprisingly many non programmers have a great deal of trouble with the idea that the name can be different to the behavior, especially in cases where its subtly different not entirely like this.

Other fields have similar issues, where people have trouble with this sort of abstract thinking, divorcing abstract knowledge about a thing from its appearence. iirc its a stage in child psychology and development, and shows up in teenage years after puberty. Many adult people never develop it fully, and struggle with this to a greater or lesser extent

You went to high school with Niklaus Wirth?
No, that actually happened. I actually knew pascal used := (I programmed quite a bit of pascal/delphi myself back in the day) but I never knew its inventor ever made a big deal about the assignment operator until I posted this.

But that was just an offnote observation, when I got to college I already knew how to program but MANY of my student peers had A LOT of trouble in the first year grasping the basics. These were not dummy students, they were top ~3% of students in the college entrance exams.

At least 50% of my class didn't understand pointers properly by then end of first year.

This is one of the few mistakes K&R made going from BCPL to C.
>We regularly invent things like 4GL, graphical programming and frameworks and engines such as Unity just to enable more people to do programming.

You're right on the money on this.

Earlier this month I went to visit a company for a complete demo prototype of a full one-to-one train simulator trainer mostly designed and programmed by a former civil engineer using Unity engine. According to the company, they could not do it if Unity engine (or similar) is not around because it will be prohibitively expensive to develop.

In a related news, Unity recently released AI eco-system namely Unity AI Suite [1].

[1] Unity AI Suite:

https://unity.com/features/ai

the 1 dimensional thinking that's perverse in the industry will be catastrophic.

we don't like doing the hard things e.g training juniors so they can be skilled seniors via good apprenticeship programs i.e on the job. now we r delegating to stochastic parrots.

in terms of systems thinking which is one skill you need to be a domain expertise - very few people are ever curious & are not willing or able to ask critical questions. hence the groupthink that's prevalent in the industry.

no wonder the quality of software never goes up - while the building blocks have gone up in quality. an analogy is like having super strong bricks but making brittle structures

I use LLMs daily for coding. That said, I agree with your sentiment. Super strong bricks, poorly put together, makes a bad building.

Another analogy I like is a beginner playing a $100k Stratavarius probably can't produce anything near a professional violinist playing a $50 violin.

Personally I use LLMs to level up my systems thinking. I describe the domain, I have it brainstorm some scalable solutions, I look them up, I bring them up to the team, and we discuss, and I implement. It's a great workflow imo.