Hacker News new | ask | show | jobs
by pigged 3672 days ago
I am not using a scientist role model. I am using a role model like Linus Torvalds, John Carmack or Eric Lippert. Would you disagree that these are good programmer role models? They have DEEP knowledge, not just "hey man have you seen the latest javascript framework".

And I don't see why you think the average programmer knows less about the law than someone in another non-legal profession. In my experience this is simply not the case, and yes, reading about it on the internet is better than not reading about it at all. It's not like dentists spend their time reading actual law books. Honestly, I have no idea where you get this from, it sounds absolutely wrong, but I guess we'll have to agree to disagree on this.

1 comments

These are role models that I personally very much agree with. At the same time, the industry has need for relatively few people like them. Of course, if every programmer would magically turn into them, that'd be great. But no one turns into them over night. And I think it's obvious that it makes no sense honing yourself into a perfect logical machine of deadly precision, if tomorrow you're still writing the same boring crap. Most programmers have boring jobs. Not because they're bad, but because most software being written is solving boring problems.

I don't think that the average programmer knows less about the law (or any other field) than someone in another non-legal profession, I think that they know about the same amount. But they should know MORE about the other professions, because most programming jobs have to do with commerce, law, design, what have you. Software products almost always have to do with a domain that is not software. A dentist has little use for law in his working life, but a programmer is more likely to profit from a basic understanding.

One thing that is special about the programming profession is that it is very diverse in levels of skill. And that's not only ok, I think that's a good thing.

I think this diversity is connected to a few things, one of them:

Our work product is very cheap to copy, and in the resulting economy, a small difference in utility will lead to huge differences in market share. Given a large market, this makes it reasonable to hone your skills further, where in other professions you'd be facing diminishing returns much earlier. This applies more to software that is widely used -- it has a larger market. Given a small market, this applies much less. In other, oversimplified, words: if you're writing software that is used (directly, or indirectly) by thousands, it pays off to train yourself for an extra year, even if it increases the utility of your product by only a small percentage. On the other hand, if you're a freelancer building web pages for a local business (a market size of 1), you're not going to profit much from the increase in utility.

Becoming Carmack makes sense in a large market. In a small market, it doesn't make sense to try to dominate it, but to acquire new markets.

I think the average programmer makes many more mistakes due to not knowing computer science and math / lacking a deep understanding of programming than due to any other deficiency like not knowing laws. It is at least true for the programmers I've worked with and have not been satisfied with.

So in the real world, this is what causes me problems - actual problems with a large application that cause friction with clients - people being bad at programming and not knowing even the most basic computer science and math, mostly manifesting itself in the application becoming littered with inefficient code over time (the second most common problem being lack of or superficial technical knowledge, such as using a framework or even language without understanding how it works under the hood, this usually manifests itself in the same way).

Note that the "I don't need to know math/cs" people will often not realize they needed something because they will just solve the problem incorrectly, inefficiently, or decide it is not possible to solve efficiently and compromise on requirements. What's worse, even if they are shown the error of their ways multiple times, they almost never truly change their mind, regardless of evidence. It is a mindset people seem to commit to early in their career, or even to a more general version of the same mindset in childhood, and never change it. That's why there's so many of them.

Sure, there might be situations where it is not useful to be a better programmer than you are. But I would say that is not the norm. I don't work on some algorithmically-super-complex application, it is just a typical large application used by professionals for their work; it doesn't involve any truly difficult problems but has a huge number of relatively small and easy problems all over the place. I'd say it's somewhere in the middle of the software development spectrum.

The language of computation is now a common tongue and of course there will be people who master it poorly or who you perhaps would call inferior.

I think this speaks more for the "inferiors" (programmers) not against it. You can make syntax in math represent anything but practically mean nothing, having programmers in fields where they could make big mistakes, points to its power.

Quite recently, mathematical knowledge was reserved for the "elite" in part because of the dense amount of esoteric grammar that exist in math, and i would say still is. Alot of things can be expressed in multiple ways like geometry, algebra. The "real" math you speak of is instilled convention.

Sometimes the most efficient way is not always the best way and correctness only exists in the framework itself.

If you are going to compare math and programming then you first have to acknowledge that math is also just a language, to express certain concepts in which itself is quite littered with dead and inefficient code.

The fact that the grammatical and syntax constraints of higher math are mostly applied ad-hoc in proofs,rings,fields means you can keep refining some fraction of it ad infinitum thereby giving the illusion of correctness but in its essence is a rich mans PHP.

Mathematics is a tool that you as a programmer are supposed to be able to use (among other tools) to solve problems.

There is nothing wrong with mathematics and it is certainly not reserved for "the elite" whatever that is supposed to mean.

Convention is irrelevant except to ensure other people familiar with the convention can easily know what you're talking about. For programmers it is especially irrelevant as we usually only care about finding solutions to problems.

Correctness does not "only exist in the framework itself". If I ask you "if there are 6 people in the room, is it possible that among them there is no group of 3 which know each other and no group of 3 which don't know each other" the only correct answer is "no". The fact that this concept has a name in mathematics does not make the answer "no" any less correct.

Dismissing the importance of mathematics because you somehow find it "elitist" is anti-intellectualism at its worst.