Hacker News new | ask | show | jobs
by aidos 4113 days ago
Annnndddd.... what reaction do you expect? "Oh, please come and do web development so we can bask in the glow of your self-righteousness and infinite knowledge of computers."

/snark (apologies for being offensive, but good lord, what a silly statement - unless I missed the joke)

I stand before you as a counterpoint to your foolish generalisation, and guess what, I know plenty of other people that don't fit your stereotype either.

I'm not saying there's not an element of truth to your statement. See, here's the thing. People throughout the software (or any) industry have different collections of knowledge. There are an endless number of things to learn and each one of us is different and brings a different set of skills to the table.

To be great at web development you spend years learning the subtleties of developing for a vast domain of different platforms. There are bugs in the platforms decades old that I know the intimate details of and have workarounds for especially constructed to fit in with the other bugs in the other platforms we deal with. And that's a tiny facet of what you need to know.

You know what would really happen when you came over to web development? You'd find that a lot of the skills as a computer scientist aren't altogether useful.

You wouldn't be an expert computer scientist. You'd be a junior developer, probably.

6 comments

The statement was a little strong, but in my experience it contains some truth. People who has never used a lower-level programming language can't often recognize these performance issues.
I've often found the opposite; people who use C get excited about using >> rather than / because it saved a few cycles on very old compilers, but fail to notice where they could've made it a million times faster by using a hash table rather than a linked list.
Unless a senior developer / a "wise" developer reviews the artifact created and allows him/herself to state: "This is not effective code. Refactor it by x y z".

The problem is, I think, this is NOT happening or at least to seldom because it "does not pay off", because "the aws boxes are sooo cheap!"

I'd say: the aws boxes are way too cheap and effectively misused. What should have been a way to scale up apps with reasonable effort turned into an energy and resources burning landfill. Granted, at least it is a shared landfill which really helps with from the resources/energy point of view.

(Juniors) Coders should be able to power the machines by driving a bicycle ergometer ... as a way to make the homo-sapience grasp the effects of their "mental work" ;)

I completely agree that software development is such a vast field that it is completely impossible to be proficient in everything. I am kind of a lamer in web development, for example.

But fundamental CS is a different thing.

"Annnndddd.... what reaction do you expect?"

Admitting your shortcomings and try to fix them is not an option at all?

When some central web frameworks do lamest mistakes like making an O(n^2) queue, it is frightening. And instead of deflecting any critique, one may try to fix this situation somehow.

Almost everyone does do lamest mistakes at some point, e.g.:

goto:fail - https://news.ycombinator.com/item?id=7281378

shellshock - https://news.ycombinator.com/item?id=8365110

I'm sure whoever wrote this would feel a little chagrin when coming back to their code and seeing how inefficient it was (though it got the job done when the lists were small), and they probably would admit their shortcomings, why wouldn't they?

Condescending snark is really easy, and it's easy to say in retrospect and with time to reflect that most useful code has flaws and point them out - software is never finished, and there are a lot of different levels of experience and requirements. If rubygems had never become popular, this wouldn't even be an issue.

PS Rubygems isn't a web framework, it's a package management tool, so the straw man you're hacking away at is the wrong one.

Mistakes come for different reasons: the human brain's limitations; carelessness; bad methodologies; ignorance.

I was talking about the last one here.

"PS Rubygems isn't a web framework, it's a package management tool, so the straw man you're hacking away at is the wrong one."

My statement about web frameworks was not about RubyGems, it was about web frameworks, and it was an example of the state of affairs in web development.

You think the original authors (Chad Fowler, Rich Kilmer, Jim Weirich) were ignorant of linked lists? What hubris.

The story is about rubygems, not web dev.

I do? I was saying that being ignorant in CS may lead to lame mistakes, and I have seen many web developers who appeared ignorant in CS, and there has been a case of some central web framework with an O(n^2) queue.
Yes there are many web developer who rely on rubygems, but it was written and continues to be maintained today by people who are (not perfect) but good developers who like Aaron, find shit like this and fix it.

If you actually cared, you'd be out there using your vaunted skills to improve the software other people use, instead of slagging off other developers on Hacker News.

"Oh cute, a web dev. You've just reinvented 1975, but this time without algorithmic analysis. Would you like a pat on the head?"

/snark

Bluntly, web devs often screw up in the fundamentals of algorithmic operations and data. Web dev comes out of the horrific slap-it-up-i-tude of the HTML/Perl days of the mid-90s, and its tooling is still incredibly shoddy compared to desktop development. And the really fun part is? Web devs don't even get it. They often think they are the top of the food chain, with the best tools ever built. I still can't even find a tool to match VB 5's capabilities.

I think you over-estimate the average skill of non-Web devs, and over-estimate the attention paid to performance even by groups who probably know what they're doing.

One example, from Chrome: https://groups.google.com/a/chromium.org/forum/#!msg/chromiu...

It's less about skill and more about culture, knowledge, and the valuation of wisdom/knowledge within that culture.

but, yeah, I've seen some awful non-web code. :)

I'm a senior dev in both domains and I can safely say that your comment is bullshit.
What does any of that even mean?

Edit Could you clarify? Which part of what I said is "bullshit"?

I keep repeating myself on Hacker News, but once more, we've found the difference between Software Engineer and Computer Scientist. One makes things work, the other is a mathematician.

Why do we keep conflating the two?

You should be careful with the term engineer. By definition, engineering is the application of scientific and mathematical knowledge to solving practical problems. Without knowing and understanding the science and math behind computing and software, one can hardly claim to be a software engineer.
The title is cheap in the US and in some companies (cough) they slap it on every position that directly touches the product.
So many programmers have this weird inferiority complex when it comes to the term "engineer". Not you, but those who think that most programming can never be called "engineering" because people don't die if you introduce a software bug[1] (as if the only kinds of modern "engineers" have to do with immediately safety-critical things). I prefer the plain "programmer" myself, but I don't see the big deal unless "engineer" is a protected title wherever that person lives.

[1] Note that I said "most programming".

I'm a little sheepish about using it around the engineers in my life because I know I'm not legally liable and held accountable to the same standards they are when I make a mistake in the software I ship.

I like to think I take a certain amount of rigor in the choices of tools and processes and design philosophy that reduces the amount and impact of bugs... but if we get a customer complaint about our product we don't generally issue a recall and lose millions of dollars.

It's not that I spend any less time learning theory and application and it's certainly no less challenging in some cases than even mechanical engineering but... it's a liability thing.

Also, I don't write software for aerospace control systems.

I've seen companies advertise "software engineer," positions whose primary responsibilities included running a fleet of Wordpress blogs.

Just a matter of perspective I guess.

Like I said: inferiority complex.
For me it's not a matter of severity of consequences, but rather in all other professional fields to be called an engineer you need to pass a PE exam. Having not taken that exam, it just feels like taking a cheap shortcut because it's not widely regulated.
My position on "computer science is math": http://www.scott-a-s.com/cs-is-not-math/ HN discussion: https://news.ycombinator.com/item?id=3928276
I'd argue that it's really a distinction between an engineer, who should understand this stuff, and a technician, who doesn't need to to do a job.

Certain segments of our industry are currently engineer heavy, such as embedded, and some appear to be technician heavy. I don't see that as a problem per se but it clearly causes friction occasionally as we tend to conflate them.

Because you cant be good at either without having an element of the other.

Ideally, they overlap.

Ideally they do overlap. But we don't call people who design bridges physicists even though they know a shitload of physics.

Our field is maturing. These difference are only going to become more important.

> You wouldn't be an expert computer scientist. You'd be a junior developer, probably.

+1