Hacker News new | past | comments | ask | show | jobs | submit login

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.


> 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.

But riding a unicycle is somewhat different than riding a bicycle, even though they look a bit similar and even have some of the same features. You’re drastically underestimating the amount of time it takes to write a new language proficiently: perhaps you’re confusing the ability to read a language from writing it?


Haha oh god, in one fell swoop you’re acting like writing Android apps is just knowing how to write Java and writing Java is just like writing any Algol-like.

You literally reduced language design to changing colors on a bicycle.

Are you joking?

You have no idea what Android is if you think it’s development process vs Java (which Java? Embedded Java, desktop with JavaFX? Server side?) is like FreeBSD vs NetBSD.

Maybe more like FreeBSD vs Windows and you’re trying to write a UI application, but technically you can use C on both platforms so it’s the same right?

Thanks for the chuckle in these dreary times...

By the way do you actually think syntactic differences are all that separate languages so once you know the general syntax you pretty much know the language, or are you pretending to not know how programming in multiple languages actually works to prove a point?


Haha oh god, in one fell swoop you’re acting like writing Android apps is just knowing how to write Java and writing Java is just like writing any Algol-like.

A: I've written a couple.

B: Anyone who knows any ALGOL (exception: 68), Pascal, Oberon, so forth, will get Java in minutes.

You have no idea what Android is if you think it’s development process vs Java (which Java? Embedded Java, desktop with JavaFX? Server side?) is like FreeBSD vs NetBSD.

Maybe more like FreeBSD vs Windows and you’re trying to write a UI application, but technically you can use C on both platforms so it’s the same right?

You're demonstrating reasoning flaws, alongside misinterpreting my words. Writing an application for, say, NeXT, back in the day, isn't different at all from writing a modern Mac application. What you do carries over. It's the same basic steps every time. Write a desktop Linux application, write a desktop Windows application, write a Mac application, write an iOS application, write an Android application. You'll have to use a few different wrappers or libraries, but it's not a new skillset.

You claimed that learning a new language is giving yourself a new skillset. It's not with the majority of languages, especially languages like Java, which introduce little compared to their immediate predecessors outside of syntax changes.

By the way do you actually think syntactic differences are all that separate languages so once you know the general syntax you pretty much know the language, or are you pretending to not know how programming in multiple languages actually works to prove a point?

This is a frankly ridiculous comment. ALGOL-derivatives grab more from ALGOL than syntax, and some don't borrow syntax at all. Any Pascal programmer can go from writing Pascal to Oberon to Java to ALGOL to Go with ten minutes per language, in any order, despite the differences in syntax. The languages are not differentiated strongly enough to matter; that C programmers could go to writing Java in the span of a day was a major selling point that Sun used, and C and Java are more different (though again, not that different) than any of the previously-listed languages.

Any J programmer can go from J to APL to K to Nial trivially as well, despite vast differences in syntax. Knowing one or the other doesn't mean you have a differing skillset.

The same is true for most Lisps (Connection Machine Lisp being an exception, as a counter-example; despite that, knowing any of these isn't a new skillset).

Just because something requires you doing something slightly and superficially different than what you were already doing doesn't mean it's magically a new skillset. Defining finding new libraries as "new skillsets" is just silly, and erodes the meaning of the term.


> Any Pascal programmer can go from writing Pascal to Oberon to Java to ALGOL to Go with ten minutes per language, in any order, despite the differences in syntax.

I don’t know if you actually believe this, or you’re defining write as in literally type letters that compile instead of being able to write useful productive code in each.

The rest of your comment is more wtfs kind of like that one.

This is not a productive use of my time because either you have no idea what you’re talking about, or you do but you’re intentionally throwing basic reasoning skills straight out the window and leaning heavily into playing games with semantics to support your point at all costs.

Now I’ll be charitable and assume the latter, but if that’s your goal, then what more is there to say?

Yes, Android vs Java is a pink bicycle vs a green one. Pat yourself on the back for that revelation.


The Java runtime ships with some 17,000 classes. Ten minutes leaves you prepared to poorly reinvent thousands of wheels.



Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: