14 ms·
Now, I haven't seen one line of Notch's code. I have no idea if it's well structured or spaghetti. I would make an educated guess and say that there's a lot of
by kleiba 13y ago
Now, I haven't seen one line of Notch's code. I have no idea if it's well structured or spaghetti. I would make an educated guess and say that there's a lot of the basics in this project that have been ported over from the Minecraft or 0x10c code.
This last point is rather unlikely I think. I spent more than one or two weeks worth of time watching the various screencasts you can find on twitch.tv of Notch coding (I find it highly relaxing).
He usually writes everything from scratch. He doesn't copy & paste from other projects because he's experienced enough to pretty much to just write down the code he wants. He also hardly ever looks up documentation (besides using autocomplete for library methods). Also, he practically doesn't write any code comments in these toy projects.
He's extremely productive in my opinion, and can easily spend hours at a time coding. He does a lot of play testing and small gameplay fixes, even at early stages.
I've learned a whole lot just watching these videos. For instance that we don't have the same taste in music :-) But thank god for twitch.tv.
- Sir_Cmpwn 13y agoI've also spent time examining Notch's coding habits. He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. He makes very basic mistakes very frequently and his core designs are flawed. I say this as someone who has spent a considerable amount of my life [1][2][3] figuring out this terrible crap and working around it. Notch is a very bad programmer, and people only revere him because he made Minecraft. To reply to you all at once: regardless of his ability to create or ship a game, which is not in question, his ability to write good code should not be idolized. His failures have tangible reprecussions that have long plagued the Minecraft hacking community and Mojang itself. [1] https://github.com/SirCmpwn/Craft.Net https://github.com/SirCmpwn/Craft.Net [2] https://github.com/SirCmpwn/Tomato https://github.com/SirCmpwn/Tomato [3] https://github.com/SirCmpwn/organic https://github.com/SirCmpwn/organic
- drawkbox 13y agoYes good code can be commended, but initially it was his small project he worked up to be his golden ticket, never expecting it to be such a huge success. I'd say he did enough good to get it shipped, in the end that is the metric. But in terms of maintenance and clean code, I am a big proponent of it and good architecture. I can't say that this makes a project successful or not but it does make it easier to deal with after it is successful and sometimes largely determines how far it can go. There is always a battle between shipping and quality and here Notch was just shipping, in terms of the end product he is a good coder and a product shipper.
- TheZenPsycho 13y agoSo, uhm... how many blockbuster games have you shipped, just out of curiosity? Not an ad hominem attack. Just, curious, because someone with such confident opinions as yours about notch's abilities must surely have shipped a few.
- pgeorgi 13y agoI wouldn't call Britney Spears the pinnacle of contemporary arts. But she certainly shipped.
- Sheepshow 13y agoNot the same at all! We're talking about Notch's process. I don't think there's any disagreement about his product being top notch (sorry). The product of BS is well, BS, and her process be damned.
- tehwebguy 13y ago> Not an ad hominem attack I don't think just saying that makes it true
- DigitalJack 13y agoIt's not attacking a person to ask them to back up their qualifications to judge.
- Mithaldu 13y agoHow many movies or tv shows have you made? Have you ever told someone that a tv show was bad? I bet the answers are zero and plenty, respectively. The kind of argument you're making is a very big fallacy.
- thedufer 13y agoThat's not really a rational analogy. That would be analogous if we were discussing someone consuming minecraft (i.e. playing it), not someone working on it.
- derefr 13y agoI might say that Notch is the best kind of coder, for what his goals are. Notch is, really, a game designer. The goal of a game designer is to iterate a set of rules and mechanics until something fun is tracked down ("fun" is sort of the "product-market fit" of game development.) in the process, they may create prototypes that allow them, or others, to play-test the rules/mechanics, but that prototype is not the output product of the game-designer's work, the ruleset itself is. Now, frequently, a game-designer may also be a game-developer (someone who takes a ruleset that's already known to be fun, and builds a solid game engine to enshrine its behaviors), and a game UX designer besides. But this doesn't have to be the case. Miyamoto doesn't code or do UX. Will Wright doesn't code or do UX. And Notch should be in roughly the same category. Obviously, there might be some dysfunction at Mojang that results in prototypes getting shipped instead of developed—but that's a separate issue.
- georgemcbay 13y ago"Will Wright doesn't code" Probably not much now, but Will Wright did code his early games (eg. Raid on Bungeling Bay , SimCity, etc).
- willismichael 13y ago> He is a terrible, terrible coder. I've had an idea brewing in my head for quite some time, and while I still don't quite have the words to express it completely, it more or less boils down to this: There isn't necessarily a correlation between being a good programmer and shipping a successful product. Now of course we can argue over the definition of "good programmer" and "successful product". I started as a hobby programmer in my childhood and teens, then went to college, and since then have written code for various companies. For several of the earlier years (including college), I had this wide-eyed fantasy of the brilliant, beautiful code that I would work on once I became a "Real Programmer" (whatever that means). My hopes and ambitions shattered once I got into the workplace and discovered some of the slop that I had to maintain. Then for a few years I was on a crusade to banish all ugly code from whatever project I happened to be working on at the time. Lately I've realized that having pristine, elegant code is NOT the goal. The goal is to ship software that people actually use. I don't really know much about the internals of minecraft, but I do know that nearly half of the teenagers in my neighbourhood spend hours and hours playing minecraft. I have to admit that I'm still an idealist at heart, and of course the best situation would be to have a project that is both externally successful and well-designed (making it simple to fix bugs and add new features and such), but I'm constantly having to remind myself to stop trying to get everything perfect and just write code.
- colechristensen 13y agoThe great is the enemy of the good.
- seanmcdirmid 13y agoAka "worse is better," aka "New Jersey style"
- vorg 13y ago> Lately I've realized that having pristine, elegant code is NOT the goal. The goal is to ship software that people actually use. It depends on the use case and business model of your software. If you want to ship a single version of something then don't worry about code quality. If you're market testing and will get resources for a rewrite if the product takes off then again speed to market is more important than code shape. But if you want to enhance the software or tune its performance then you need good code structure.
- exit 13y agocan you elaborate on what's so terrible about his coding style?
- Sir_Cmpwn 13y agoThere are lots of problems with it. Here are a couple: He uses poor OpenGL practices, and sees poor performance as a result. He also designed the entire product in a way that makes it cumbersome to mod, without a consistent interface or a logical way for mods to work together. Modding Minecraft as a whole is one big hack. I'm more familiar with the networking side of things. The Minecraft networking protocol is a mess. There are 9 or 10 different ways to encode a vector in the protocol. He made up "Named Binary Tags", a dictionary serialization format, which could have better been served with existing tech. He frequently misuses signedness in the protocol. He made up another obtuse dictionary format for describing entity metadata. He screwed up backwards compatibility for the only thing that needed to be backwards compatible - three times. His colleagues later screwed things up even more.
- jiggy2011 13y agoWas minecraft supposed to be modable from day 1? I know from my own experience that if you design a large monolithic application and then decide afterwards that you want a pluggable system, it's never easy if you don't have time to refactor the whole thing. Also network programming and game/graphics programming are different disciplines with their own challenges. Big studios might assign different people to these tasks, so I wouldn't expect somebody to be amazing at both.
- arrrg 13y agoNo, it wasn’t written that way at all. Notch never intended it to be moddable and he had no idea at all that modding would be such a big deal for Minecraft. In the very beginning Notch was even (slightly) opposed to modding. I think it was more like a gut reaction: People are doing things with my stuff I didn’t expect and I don’t like it. (Not that he ever even began to consider taking legal steps against it or something awful like that.) He came around to it, though. By the time he handed Minecraft off he was fully in the “modding is great for Minecraft” camp. But the game was never developed for that. A real modding API has been in the works for quite some time now, but it seems to be quite hard to pull that off.
- MrZongle2 13y agoSir_Cmpwn's assessment of Notch was harsh, but not wrong. Notch isn't in the same league as a John Carmack, for example. The most recent release of Minecraft saw massive changes to the underbelly of the game, all of which is being done by Mojang staff other than Notch. The game does have a ton of warts, especially where modding is involved, which can be traced to some of Notch's technical decisions. Does that mean that Notch is a bad person? A fool? No, neither. Notch had a vision for Minecraft, followed it, and because of that work is now a very rich man who can afford to play with whatever technology he wishes. I wish I was like Notch. Let's not shoot the messenger here.
- voltagex_ 13y ago>especially where modding is involved The modding API consists of decompiling the entire thing and monkey-patching it. Does anyone else see a problem with that? It's such a fantastic game but it's really unfortunate.
- jebblue 13y agoAnd there are plugin developers making good money, server operators doing nothing but running Minecraft servers and living on donations and other monetization schemes. Was he supposed to make the best selling indie game in history and make it easy as pie for the modders to make a living too? He was one guy.
- alexcroox 13y agoAlso hindsight is a wonderful thing
- pearjuice 13y agoCouldn't agree more. Notch his success has nothing to do with being good at programming. It's about being creative and able to create good game play. Because he programmed game play routines a lot and dealt with everything involved (i.e graphic rendering and such) more than the average Joe it looks like he is a good programmer because he just shakes it out live on some streaming website. Those concepts are language-agnostic and you can remember them.
- KVFinn 13y ago>He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. Notch is inspiring to me the way people like Carmack are not, because I know I'll never be a Carmack -- he's operating on an entirely different level than me. But Notch was able to change the world as a regular programmer plugging away. What he does not seem hopelessly out of reach of my capabilities. You can have a huge impact just being 'good enough'! (and 'terrible' is hyperbole -- certainly most of the programmers around me at work could not get a 3D engine with Dart up and running in a week, or design a cpu and assembler -- even bad ones.)
- coldtea 13y ago>(and 'terrible' is hyperbole -- certainly most of the programmers around me at work could not get a 3D engine with Dart up and running in a week, or design a cpu and assembler -- even bad ones.) Fuck, most of those I know couldn't get a basic CRUD app up and running in a week...
- Ygg2 13y agoTo paraphrase a saying - aim for Carmack, maybe then at least, you'll hit Notch.
- Stratoscope 13y agoSpeaking as a harmonica player, this is a bit like the difference between listening to Toots Thielemans and Stevie Wonder. When I listen to Toots, I'm thinking, "This is amazing, and wonderful! Aw man, I could never do anything like that." When I listen to Stevie, I'm thinking, "This is amazing, and wonderful! Wait a minute... It's not that complicated. Maybe I'll never have the soul Stevie does, but if I can't do exactly that, maybe I could do something like that!"
- marknutter 13y agoAnd if he had spent his time first becoming the perfect programmer (according to your standards) he probably wouldn't have bothered writing Minecraft in the first place. This type of attitude, and the lack of tact it's usually accompanied by, is by far the biggest issue with the programming community at large. I say this as a "terrible, terrible coder" who entered the field despite the fear of being labeled one.
- melling 13y agoWhat kind of a person even idolizes someone for writing great code? Steve Jobs couldn't code at all. Facebook was written in PHP. GroupOn started on WordPress. According to this Slashdot article, Sergey and Larry aren't great programmers. http://tech-beta.slashdot.org/story/13/11/01/1324209/larry-page-and-sergey-brin-are-lousy-coders http://tech-beta.slashdot.org/story/13/11/01/1324209/larry-p... The Instagram founders didn't have a programming background: http://thenextweb.com/2012/04/10/instagrams-ceo-had-no-formal-programming-training-hes-a-marketer-who-learned-to-code-by-night/ http://thenextweb.com/2012/04/10/instagrams-ceo-had-no-forma... My take away is that beyond getting the job done, joining the priesthood of programmers is pretty low on what's important. If you want to be successful, focus on the other things then hire a bunch of programmers to continue your dream once you hit it big. By the way, make sure the interviews are insanely difficult and keep your geeks out of the weeds (e.g. HN). Geeks love to play in the weeds!
- chrismonsanto 13y ago> What kind of a person even idolizes someone for writing great code? Are we on the same site? I've been reading HN since it was called Startup News, and I have never felt such a disconnect before. > The Instagram founders didn't have a programming background Instagram could be worth a trillion dollars and I wouldn't give a shit about it. Show me the code. Satisfy me intellectually. Not everything is about money, and that is part of the reason I call myself a hacker--coding for the sake of coding and what not.
- melling 13y agoBeats me. I guess someday when you're an old man, right before you close your eyes for the last time, you can imagine all that cool code that you wrote, and say what a great life you had. You were a hacker. Steve, Larry, Notch, and the Instagram guys can know what they did made a difference. The world is a different place because they lived. They connected the important dots and hacked life...
- chrismonsanto 13y ago
- nhoj 13y agoA terrible terrible coder? That's a really insulting negative tone. Maybe he is not the best but he is clearly not terrible. Out of all the programmers in the world my guess would be that he is easily in the top 1-5% even if he leaves messy code behind.
- Sir_Cmpwn 13y agoNo, he really is terrible. I'm dead serious. I am responsible for working with his crap all the time, and I probably know more about the technical workings of Minecraft than even he does. Notch writes terrible code.
- keypusher 13y agoSorry to break it to you, but this is the reaction of most people working on others code. It all looks like a bunch of crap held together with duct tape and string when you are the one trying to maintain it or make it do something that wasn't thought about when it was designed.
- pkolaczk 13y agoYou're right that reading code is harder than writing, but I think your statement is too extreme - it implies crap code does not really exist or everything is crap. However, we all know that only 90% of everything is crap. Personally I maintained various codebases (not written by me) and some of them were really terrible, utter mess, while some others were pretty nice to work with, even if I had to refactor sometimes. If programmers thought about code design at least for a while before writing it, and then the code is well-organized (= good separation of concerns, no global state, no copy-paste, complex parts isolated from the simple parts) - it doesn't matter that much that they didn't think of a new feature you're now adding to it.
- justinhj 13y agoCan you give a couple of concrete examples of why he's so terrible? Or at least the areas in which he is not strong. Because it's clear to me that Minecraft was a fun and stable experience from the end users perspective, at least when I bought it (which was probably a good 18 months after the initial launch).
- coldtea 13y ago>He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. He makes very basic mistakes very frequently and his core designs are flawed. So, he's a pragmatic programmer that gets shit done -- to the point of being able to design his own toy CPU architecture (which already puts him above 90% of the programmers out there, including people that HAD hardware architecture classes at university). Sorry if he doesn't live up to your standards...
- 10098 13y ago> to the point of being able to design his own toy CPU architecture Not sure what the CS curriculum is in other countries but back where I'm from they had basically taught us enough by the middle of the second year for one to be able to design something like DCPU16 using only that knowledge. In other words, it isn't that hard, especially when you're surrounded by examples. I would expect a second-year undergrad to be able to accomplish that.
- coldtea 13y ago>Not sure what the CS curriculum is in other countries but back where I'm from they had basically taught us enough by the middle of the second year for one to be able to design something like DCPU16 using only that knowledge. Same with us. That doesn't mean that 90% of the graduates out there, that even have taken such as class, will be able to do it. Heck, a surprising majority of them (like 30% or more), even fails writing FizzBuzz ( http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html http://www.codinghorror.com/blog/2007/02/why-cant-programmer... ).
- corresation 13y agoNotch is a very bad programmer I despise this sort of single-dimension haughty evaluation of programming "goodness": It is garbage, and is the dismissive grenades that a particular type of maintenance programmer tosses to feel better about themselves as they try to feed the family with sloppy seconds. I single out maintenance programmers because there is a stark difference between creating something out of nothing, and being the guy who looks at that something and -- with all that is laid in stone in front of you, all of those unknown lands revealed and detours and dead-ends made evident -- can say "Oh clearly you should have A->E->Z: What a dummy!". All novel works can be improved in countless ways, iteratively. This is a given of software development, and the fear of having to go through this inevitable process has stopped most projects before they've ever begun. "His failures have tangible reprecussions that have long plagued the Minecraft hacking community and Mojang itself." There is so much irony in this statement. Do you even realize?
- vectorpush 13y agoAgreed. A programmer maintaining a new project is going to feel frustrated when the application cannot be easily extended in a way that they expect, but the original author should be forgiven for not predicting every possible future permutation of their existing code base. The best design decision might seem obvious from the maintainer's perspective, but given 100 different maintainers, you'll end up with 200 different solutions, half of which will make the original application seem ridiculous when framed in the context of a massive rewrite that takes into account every business decision that time and experience has yielded since the start of the project. Further, there are times when a good programmer must deliberately exclude forward thinking solutions because a non-functioning product precludes a successful business. Yes, it should still be a secure solution. Yes, a TODO label may be warranted, but a surefire way to get yourself labeled as a bad programmer is to spend weeks working out "future proof" solutions while the competition is shipping an application that can be successfully executed.
- Jormundir 13y agoThough there are some good points here, my experience has been that this "just get it done" above all else principle has sunk just as many projects as it has launched. Getting it done is a bare necessity of a good programmer, but what separates the mediocre programmer from a good programmer is whether they get it done in a more maintainable fashion. It is completely ridiculous to say as long as one can get a product launched, they are a good programmer, because you're likely praising a group, half of whom are good programmers, and half of whom are sinking the product more and more over time. This is a common happening I see with praise of engineers from a management perspective, and why so often companies sink without knowing where exactly they went wrong. You can judge if a programmer is good, not by tearing apart and poking at the mistakes they made in a new project, but if they proceeded to code using strong abstractions and decoupled code. The easiest programmers to fire are the ones who don't ship, and the programmers that tend to be the costliest to a business are the ones who ship crap code.
- voltagex_ 13y agoI'm hoping that one day, Minecraft gets completely open source and is ported away from Java. I've tried and failed to write a plugin for Bukkit and the whole ecosystem is horrible. When your modding toolkit involves importing craptons of JARs and decompiling the rest, something's really wrong.
- willismichael 13y agoTo be fair, the difficulty of modding isn't necessary directly correlated with the fact that it was written in Java.
- tokenizerrr 13y agoIf it wasn't written in Java it would be even harder to mod, with them not officially supporting it. The only reason it's working so well now is because Java can be decompiled rather easily.
- macspoofing 13y ago>He is a terrible, terrible coder. Oh come on.
- BlackDeath3 13y ago>He makes very basic mistakes very frequently and his core designs are flawed. In the interest of my own self-improvement, could you elaborate a bit on this? EDIT: I see that you've already talked about this a little bit, but if you'd like to elaborate further I'd be OK with that.
- naiyt 13y agoNotch tweeted this in, I'm assuming, response to this thread: > "Just saw a nerd flamewar debating if I'm a bad programmer. I'm self-taught, prefer working along, and program for fun. Don't learn from me." Take it for what you will. https://twitter.com/notch/statuses/408011329237049344 https://twitter.com/notch/statuses/408011329237049344
- F_Catalan 13y agoThis line from the readme file of his Craft.Net project neatly sums up Sir_Cmpwn's presence within the notchverse: "Minecraft is not officially affiliated with Craft.Net."
- peterashford 13y agoIf Notch was trying to write an API, then sure. If he's trying to write fun games (which he is) then you are dead wrong. Not all code is written for the same purposes.
- dwild 13y agoMost code, even more for a sandbox game, is made to be modified. If it's not well made, it will be hard to modify it, you will add mistakes to mistakes and it will become harder to develop. The last Minecraft update is probably a sign of that (they remade everything if I understood correctly). Terraria is currently a good example to compare with the situation of Minecraft. I don't know how both is made (except some stuff that my friends told me about Minecraft) but all I know is that most Terraria player made fun of Minecraft in the last big updates because they had SO MUCH content added when Minecraft had nearly nothing more. If he's trying to write fun games that won't be updated, yeah, it's fine. Except that it's not the goal of Minecraft (at least I hope it's not...).
- Vermeulen 13y agoJonathon Blow had a great talk on the topic of programming indie games, http://the-witness.net/news/2011/06/how-to-program-independent-games/ http://the-witness.net/news/2011/06/how-to-program-independe... One part he mentions how when he was a more novice programmer and looking at the Doom1 source code he thought they made some horrible programming choices - but only once he actually started to try to make commercial products himself did he realize none of that mattered. When the goal is to make good products with very little resources (which is the defining aspect of being indie) being pragmatic is the most important thing. what you would consider 'good code' wasn't Notch's goal, doesn't mean he isn't capable of it
- kayoone 13y agoThe perspective of this is so wrong. Minecraft was a Plaything for notch, he wrote the beginnings of it in his free time while working for a different company. He certainly never thought of or even optimized it for being a massive world wide hitgame that needs a consistent modding API. If he did that, i am sure that Minecraft would probably never have seen the light of day as he would have lost interest in it, because most of all it was a sideproject to creatively explore an idea. Coming in years later when everything has grown tremendously and saying that many of the early design decision were wrong, is so ignorant it infuriates me.
- Kiro 13y agoI don't know what standards you are used to but I would really like to know who you consider to be a good programmer. Are you a good programmer? If Notch is a "terrible, terrible coder" then what are the people (ie: normal programmers) who can barely build a standard web CRUD app?
- r41nbowcrash 13y agoI remember liking the AI - all these different objects, complex, emergent behaviours, expressed usually in less than 40 lines of code. Clean, effective, with great bang to buck ratio. If modding was high on their list of priorities, I'm pretty sure they would get it right.
- robinduckett 13y agoI remember you also slated my own programming ability for no reason what so ever, after seeing one tiny script that I wrote in 45 seconds. You sir, are the kind of person who honestly believe that you're better than everyone else, and quite frankly mate, you aren't. Are you a multimillionaire? Sometimes it's not about the code quality, it's about the ability to produce a product. I don't revere Notch, but I do think he's a better developer than most, especially you.
- jiggy2011 13y agoHe probably uses multiple monitors and only streams one (at least he did when I watched). So he might be looking up documentation on another screen.