Hacker News new | ask | show | jobs
by throwaway894345 2272 days ago
I think it's largely people talking past each other. One group claims that deeper understanding is useful and the other group says "no way, you don't need deeper understanding to get into (e.g., web) dev!". Being useful doesn't mean "necessary for an entry level position in the highest-level subdomains of computing".
1 comments

> necessary for an entry level position

I still can't figure out how programming computers (the most complex task a human can undertake) managed to become singled out as the only profession in the history of humanity that is simultaneously assumed by so many to be something you need only a cursory understanding of to be proficient at.

Yeah the claim that it is "the most complex task a human can undertake" is a little.... iffy. I mean, most of the times its really not. Most of programming is exactly as complex as most of civil engineering or most of plumbing. Most of a sufficiently mature field is usually not that complex at all because the most complex stuff is abstracted out. My civil engineering friends don't design bridges from scratch and my plumber doesn't threads the pipes themselves. They rely on industry standards which give them enough abstraction to be productive.

Now this is not to say on the frontiers of it its not very complicated. But so is every other field. Ever thought about plumbing a space station? Or designing a rapid deploy bridge? You can't compare frontiers of one field with the middle of the other.

> most of civil engineering or most of plumbing

both fields that have strict educational and credential requirements to practice professionally. Both strictly - dare I say it - gate-kept.

Informatics as well, Informatics Engineering is a protected title in many countries.

While the exam can be avoided if one isn't into signing contracts and taking legal responsibility in project execution, the order still has a last word to say regarding which universities are allowed to actually claim that they give engineering titles in Informatics.

You don't need to be proficient for an entry level position by definition. Further, proficiency at programming is only tenuously related to an immersive knowledge of computer science topics. Further still, proficiency at software engineering is more about soft skills like writing readable code, managing projects, and collaborating with teams to ship large units of software. Having lots of knowledge of low level components or math is icing on the cake for the overwhelming majority of applications (much to my chagrin--I really like the lower levels and the technical nitty-gritty).
> You don't need to be proficient for an entry level position

You do need a fair amount of education, though - for every meaningful profession _except_ programming.

Seems like “profession” just is t a very useful or meaningful term. If you insist on using it, I might suggest that “programming” and “development” aren’t professions, while software engineering is; however, there are lots of SEs whose jobs more closely resemble dev jobs.
the only profession in the history of humanity that is simultaneously assumed by so many to be something you need only a cursory understanding of to be proficient at.

This can be traced to the 1970s.

Computer Science is only half of a field. Semi-arbitrarily splitting it off from EE harmed both fields. Instead of one complex field, there are two very shallow fields.

I still can't figure out how programming computers (the most complex task a human can undertake)

Neuroscience, making pizza (or most cooking, really), marketing, high-speed motorsport, psychology, most weapons development (outside of guns, which are fundamentally simple), writing mass-market books and drug development all seem to have programming beat in terms of complexity for what ninety-nine percent of professional programmers do.

Jobs worded it well in an interview at one point. Something along the lines of, "I knew there was a market for people who would never be able to design hardware or put a kit together but who still would love to write their own software," in the context of why the Apple II was successful. It works just as well to show why the field is the way it is.

Most computer programmers don't have a clue how the hardware works. That used to be an essential part of it. It's not any longer. The bar has gotten lower and lower, and that's not necessarily a bad thing. Python can be learned in an hour, so why not? They can still make useful things, so there's no problem with it.

Just like in any other field, the bar for "proficient" is low compared to average, but the bar for "exceptional" is high.

I wouldn't even say the bar has gotten lower.

The bar has multiplied into multiple bars all at the their own levels but in different dimensions.

You can have an innate understanding from a single transistor to how individual frames are handled by an ethernet PHY to how the packet scheduler will interact with your userspace app and be an "exceptional" developer.

But the moment someone asks you to write an Android app that hits and endpoint and displays the data with some formatting none of that matters if you've never written an Android app.

Nothing is exceptional in a vacuum, and "programming" is so vast with so much space between disciplines it might as well be a vacuum.

I think there are extremes here, and you and 'commandlinefan are on opposite sides of the extreme. I'm somewhere in the middle, in that I agree with neither of you.

Writing an Android application is not something that requires anyone to learn an entirely new skillset. At most, it's a programming language and a toolkit of difference for any experienced programmer.

...

How is learning a new programming language and new toolkit not learning a new skillset???

Even in a literal sense of the two words:

Skill: "a particular ability."

Tool: "a piece of software that carries out a particular function, typically creating or modifying another program."

How is learning "a piece of software that carries out a particular function" not "a particular ability."

-

In a non-literal sense, learning to write an Android App is a new skill if you didn't know how to do it before. Like you could happen to have Java experience so it's less new to you, but either you knew how to do it before, or you didn't and now you do... so you learned how to do it.

Are we literally at the point of gatekeeping what it means to learn how to do something??

How is learning a new programming language and new toolkit not learning a new skillset???

Riding a Mongoose bike is not substantially different from riding a Schwinn bike. Riding a pink bike is not substantially different from riding a green bike. Writing Java is not substantially different from writing any ALGOL-derivative.

It's like saying writing a program for FreeBSD requires a different skillset than doing so for NetBSD. It doesn't.

Not everything is gatekeeping, and it's disingenuous to claim so.