Live data from Hacker News

Coding Skill and the Decline of Stagnation

notch.tumblr.com

51–60 of 206 posts

Re: Coding Skill and the Decline of Stagnation

#51

Does anybody know if Notch is self taught? I thought he had a CS Degree from somewhere? I can fluctuate between thinking I am a fairly competent developer to thinking that I am possibly the worst programmer there is. I'm not sure which is a better attitude to have, hopefully I am somewhere in the middle. I think the issue with reading some of the discussion on HN is that you get people talking in detail about things…

There is much knowledge than you can learn. Try to focus your learning on what help you solve your clients problems. You'll become an expert only in a thing or two, and you'll be able to talk about it like the people here on HN.

Also the smart comment writer is not a representative of the average HN visitor/population. There are always people who are expert in their niches.

Re: Coding Skill and the Decline of Stagnation

#53

Does anybody know if Notch is self taught? I thought he had a CS Degree from somewhere? I can fluctuate between thinking I am a fairly competent developer to thinking that I am possibly the worst programmer there is. I'm not sure which is a better attitude to have, hopefully I am somewhere in the middle. I think the issue with reading some of the discussion on HN is that you get people talking in detail about things…

I have similar issues. For most of my adult life I've had so many interests that it is just impossible to keep up with all of them to the level I want. Even within computing as a field I am overloaded. I read a lot of stuff on HN and elsewhere I find interesting and I agree that it makes me feel like I should understand it all. First time I've came to that realization.

My current solution to the problem of overwhelming interests is starting grad school in CS; by going through a program, I am forced to focus on certain things by outside forces, thus saving my sanity.

Re: Coding Skill and the Decline of Stagnation

#54
post #43

Earlier quoted context omitted.

The getter/setter stuff in java is a huge waste of space and time. However, at least in the enterprise space, all of the tooling and frameworks assume your code follows the java bean naming conventions. For this reason alone I always make sure all my classes follow the pattern and whenever I train new developers I make sure they get a large amount of experience building out bean definitions and understand how much ti…

Joshua Bloch in Effective Java argues that the java bean is an anti-pattern and should be avoided.

Cool story, bro.

(Mime aside, do we get to hear what the argument was?)

Re: Coding Skill and the Decline of Stagnation

#55
post #11

"I still stubbornly believe the whole “private members accessed via accessors” thing in java is bullcrap for internal projects. It adds piles of useless boilerplate code for absolutely no gain when you can just right click a field and chose “add setter/getter” if you NEED an accessor in the future." Is this a controversial stance? It seems like common sense, unless I'm misunderstanding something. EDIT: To clarify: I…

Eh, using protected/private members is one of those things that makes sense only insofar as you are paranoid that you can't just access internals directly. That said, consider the following. I've got a renderer that accepts a sprite to draw. Version 1: I pass the sprite object to the renderer, and the renderer gets the texture contained in the sprite and draws it, scaling it according to the sprite's size and positio…

Wait... why wasn't the sprite responsible for rendering itself from the beginning?

  sprite.render(context);
or some such...

Re: Coding Skill and the Decline of Stagnation

#56
There are many dimensions to "how good you are as a programmer".

How you approach a 1000 line project is different from a 100,000 line project.

The best practices for a good solo developer are different from a team developer.

And most importantly, the internal elegance of your code is independent from how useful / cool your product is.

Re: Coding Skill and the Decline of Stagnation

#57

Does anybody know if Notch is self taught? I thought he had a CS Degree from somewhere? I can fluctuate between thinking I am a fairly competent developer to thinking that I am possibly the worst programmer there is. I'm not sure which is a better attitude to have, hopefully I am somewhere in the middle. I think the issue with reading some of the discussion on HN is that you get people talking in detail about things…

Does anybody know if Notch is self taught? I thought he had a CS Degree from somewhere?

I can't say with any degree of authority, but based on what I've read of his code, I'd guess he's self-taught.

My bigoted preconception is that when it comes to abstraction in code, people with CS degrees err on the side of doing too much, creating extremely elaborate object frameworks that close down options as much as they help reuse code. Self-taught folks, on the other hand, err on the side of doing too little, relying on cut and paste, util packages, and promiscuous sharing of data.

When it comes to algorithm design, people with CS degrees tend to pull in libraries of esoteric things, sometimes overengineered for the purpose at hand. Self-taught folks tend to write something from scratch that almost, but not quite, does the job right.

Based on what I've read from decompiled Minecraft, I'd guess Notch is self-taught. The abstraction is just barely enough to get the job done, and the algorithms are decidedly homebrew. That's neither praise nor criticism, just a comment on style.

Re: Coding Skill and the Decline of Stagnation

#58
post #36
post #12

Earlier quoted context omitted.

Yeah. A couple of times, I've met people who have "dabbled" in programming - maybe done it for a year or two professionally - and said they left the profession because they's pretty much learned everything there was to know about programming. I'm always impressed with their capacity to absorb so much, since I started programming when I was 8 (on a ship, in the middle of the Atlantic, without a computer) and I'm now 3…

Well it depends. You could probably never stop learning the tools or the new languages; they're continually re-invented. However you can certainly become bored with it; learning new tools and languages becomes a skill in its self. At which you think i've learned a new tool, so what?

I have no beef with someone getting bored of what they're doing, but then they should say just that. To say "I know everything there is to know about programming" after programming for a year is laughable.

You're right that if you know C++ and you learn Java, you're not really learning all that much. But if you've spent your entire life programming in those types of language, and then learn Lisp, or Forth, or even just assembly language, your entire mental model of computation is turned on its head. Heck, learning C would be an eye-opener for someone who has known only Java.

You can go even further. My own trade is ASIC verification - writing testbenches to test functional correctness of chip designs. I've done a bit of FPGA design, too. I've chatted to software guys far above my humble skill level who don't grok either of those two domains because they're completely foreign to their way of thinking. But I'd file both under the broad umbrella of "programming".

I think you can learn constantly for a lot longer than a year or two without learning any new languages or tools, just working on different project, in different domains, using different paradigms. [EDIT:clarification]

Re: Coding Skill and the Decline of Stagnation

#59
post #11

"I still stubbornly believe the whole “private members accessed via accessors” thing in java is bullcrap for internal projects. It adds piles of useless boilerplate code for absolutely no gain when you can just right click a field and chose “add setter/getter” if you NEED an accessor in the future." Is this a controversial stance? It seems like common sense, unless I'm misunderstanding something. EDIT: To clarify: I…

The problem is when those getters and setters have other effects (maybe invalidating a cache?). In Java, it's considered best to just go ahead and add the getters and setters first, so that when you need to add these side effects later you don't have to modify lots of code using your library (if that is even possible). Languages like Python make this unnecessary since they have first class properties: # Old class Foo…

"In Java, it's considered best to just go ahead and add the getters and setters first"

I don't think this is true. I'll concede that it may be a requirement for certain things like an ORM API, but in the general case, it's bad practice. The mere act of adding a getter violates immutability.

Re: Coding Skill and the Decline of Stagnation

#60
post #38

Earlier quoted context omitted.

> Oh, and for good measure--everytime you force yourself to use an accessor, you are providing the opportunity for somebody down the line to add debug and validation code. So add it then . Don't pre-generalize everything just in case.

What, is there some kind of run on parens in your neck of the woods? Running such a lean startup you can't afford a function invocation? This isn't premature abstraction or architecture astronautics--this is just good practice. If you are in a language like Java or C, your compiler should optimize away the call if it doesn't do something clever. If you are in Ruby, this is so easy to do that it doesn't even need ment…

Running such a lean startup you can't afford a function invocation?

This actually isn't as wildly hypothetical a situation as one might guess. At least in the Android world, "Avoid getters and setters" is on the short list of performance suggestions.

http://developer.android.com/guide/practices/design/performa...

Post reply on HN