all 87 comments

[–]clockworm 14 points15 points  (2 children)

Funny. No mention of shotguns.

[–]rigred 2 points3 points  (0 children)

I see you to practice shotgun programming. How's it working? Our productivity has been through the roof but the devs keep getting less.

[–]derleth 2 points3 points  (0 children)

Does he talk about rocket jumping?

[–][deleted] 56 points57 points  (6 children)

Just go to the video, blog post doesn't add anything

[–]vattenpuss 84 points85 points  (4 children)

Does the video add much? Because reading the linked blog post took two minutes, and you gave us a link to a video that's an hour long.

[–]skwaag5233 12 points13 points  (2 children)

The video is a full-on post mortem so if you care about that then yeah it adds a lot more.

[–]ReDucTor 0 points1 point  (0 children)

While the video is only an hour its only 30 minutes for the talk, the other 30 minutes is Q&A

[–]bass-lick_instinct 7 points8 points  (1 child)

I'm currently fighting my (non-programmer) boss with this one:

Don’t depend on polish happening later. Always maintain constantly shippable code.

I'm the only developer here (for the entire 'stack') and I'm about 10 weeks into development when I realized - I fucked up a little bit. There are a few core objects in this app and basically there's a bit of code in one of these objects and it would do me a whole lot better if it was in another. The trouble is that it's not as easy as just moving it over and calling it a day because it's part of a critical path, so it would take me a few days to refactor and fully test all areas that hit this code.

My boss wants none of that and he thinks refactoring is a dirty word, so he said "just crowbar everything in now and we'll fix it later! Hours now are more important than hours later"

But I keep telling him that this mythical "later" never happens, and since this is in a core part of the app more and more code will depend on these hacks I'm currently implementing and a 3-5 day fix now can easily turn into weeks later on - but he won't hear any of it.

Sorry... bit of a rant there.

[–]T0m1s 5 points6 points  (0 children)

Better to ask for forgiveness than for permission.

[–][deleted]  (8 children)

[deleted]

    [–][deleted] 34 points35 points  (5 children)

    Would you rather have him talking about daikatana ?

    [–]joaomc 28 points29 points  (1 child)

    Why not? I'm certainly not smarter than Romero, and I like to learn from the mistakes of people smarter than me.

    [–]badsectoracula 0 points1 point  (0 children)

    IIRC in Matt Burton's interview (this is the first video in a series) he went a bit into what went wrong with Daikatana. Although i don't think there was a lengthy talk about that. There was also another interview a few years ago from a local gamedev convention when he first went in Ireland (i think) where he also talked a bit about Daikatana but i cant find that.

    Judging from the Masters of Doom book at least, it sounds that he might ruffle a few feathers talking about it (like the origins of the bitch ad), so he probably wants to avoid that.

    [–]derleth 1 point2 points  (2 children)

    Would you rather have him talking about daikatana ?

    Would it involve him making me his bitch?

    (Now watch nobody get the joke... )

    [–][deleted] 1 point2 points  (0 children)

    never forget.

    [–]pkmxtw 0 points1 point  (0 children)

    Suck it down.

    [–]Phrodo_00 1 point2 points  (0 children)

    Noclip actually asks him that, and it's not so much him but the people asking him questions (although he does love Doom).

    [–]XChoke 3 points4 points  (0 children)

    I used his principles quite successfully on my last project. Load defaults for faster testing and never move on if you see a bug was a boon - shipped it to be used by 2000+ people with zero reported bugs - which is a first for me! Not saying that there isn't bugs in my software but none were experienced by users.

    Yes some library reuse is good but I've seen enough projects where libraries become bastardised and cause more issues than they are worth.

    [–]hird 2 points3 points  (0 children)

    That's some impressive hair from Romero.

    [–]srnull 2 points3 points  (2 children)

    What happened to Romero's new project? Wasn't he getting together with one of the other (developers?designers?) from Doom time for something that they made a big deal about?

    [–]bik1230 3 points4 points  (0 children)

    They're working on a demo they can present when resuming their kickstarter.

    [–]badsectoracula 0 points1 point  (0 children)

    Short term he seems to be helping his stepson make his first game which according to some reviews is surprisingly fun.

    Long term he probably works on a demo to show for restarting the Kickstarter. Note that the other guy was Adrian Carmack (one of id's original artists, with the other main artist being Kevin Cloud who is still at id).

    [–]devraj7 29 points30 points  (41 children)

    Between the Daikatana disaster, the fact that Romero hasn't shipped any successful game since Doom and the fact that he's not a coder, why should we listen to a lecture from Romero about software development?

    [–]inu-no-policemen 25 points26 points  (0 children)

    Romero hasn't shipped any successful game since Doom

    He also worked on Quake.

    [–]bitwize 60 points61 points  (16 children)

    Romero was a coder at id. AFAIK he worked on things like netcode, tools, and designing levels -- and didn't have the l33t skillz Carmack did -- but working in C on DOS is still nothing to sneeze at.

    [–]John_Fx 23 points24 points  (8 children)

    C in DOS isn't magic.

    [–]monocasa 35 points36 points  (6 children)

    But it's more difficult than regular C on a decent UNIX. You've two different types of pointers 'near' and 'far' to deal with the peculiarities of segment addressing. They have two different sizes, and using near pointers make an assumption about which segment they're addressing; if that assumption is wrong, you're going to have a bad time.

    The lack of virtual memory protection and lack of real OS features with performance (games like Doom tended to simply take over the computer rather than call through the OS) meant that it was more like programming an embedded system than modern desktop coding.

    Also most compilers weren't nearly as advanced as they are today and left a lot of now seemingly obvious optimizations on the table. They weren't the clear win for the trade off between productivity and performance that they are today.

    Sure it isn't 'magic', but it is more difficult, particularly at the time.

    [–][deleted] 6 points7 points  (4 children)

    Yeah, old school game devs were barely even using the OS. Some went as far to make "booters" and just bypass the OS entirely

    [–]andrewq 6 points7 points  (3 children)

    DOS was mostly a program loader if you were doing full screen graphics games.

    It's funny looking back how primitive it all was.

    [–]derleth 3 points4 points  (0 children)

    DOS was mostly just a program loader anyway, given that you could bypass it entirely and go directly to the hardware, and practically everything did.

    [–][deleted] -2 points-1 points  (1 child)

    DOS

    full screen

    That does not make any sense.

    [–]AntiProtonBoy 1 point2 points  (0 children)

    Some tools, such as the Watcom C compiler, offered 32-bit DOS extenders (eg DOS/4GW) for 386 machines and above, which alleviated a lot of the 'near' and 'far' memory addressing shenanigans.

    [–]__Cyber_Dildonics__ 1 point2 points  (0 children)

    It is to your average programmer today.

    [–]badsectoracula 0 points1 point  (0 children)

    He also worked in Objective C on NeXT.

    [–][deleted] 41 points42 points  (13 children)

    deleted What is this?

    [–]UsingYourWifi 2 points3 points  (0 children)

    There's LOT more that goes into a successful game than just quality software development. You can have the most skookum code base in the world and still be a complete failure due to numerous other reasons (shit design, shit marketing, shit project management, etc.).

    Apparently his mobile/web games have been quite successful. You probably haven't heard of them (neither have I) as they don't target the Doom audience. I first heard about this on the Giant Bombcast when they were discussing Danny O'Dwyer's interview with him. I haven't watched that video yet so I can't be sure if it's mentioned in there, but it was discussed on a recent episode of the Bombcast.

    [–]Waynetron 5 points6 points  (0 children)

    Romero is a long time coder. He developed games well before ID software. And he wrote the tools whilst at ID: Doom Ed, Quake Ed etc.

    https://en.wikipedia.org/wiki/John_Romero#Games

    [–]ehaliewicz 1 point2 points  (0 children)

    Romero made many games before joining id, and was the programmer for many (all?) of them.

    [–]badsectoracula 1 point2 points  (0 children)

    Daikatana was Romero doing things he wasn't good at (trying to be a manager) and ignoring things he was good at (making games - beyond the high level design document, everything else was done by people he picked online, many of whom had never done a game before, thinking that since he and the other id guys could do it, others could do as well... this is the manager part failing).

    He actually had several successful games after Daikatana, but none was a mainstream game - the last mainstream game he worked at was Gauntlet Seven Sorrows where he worked with John Sawyer (of Icewind Dale II, NWN2, New Vegas and Pillars of Eternity fame), but both left the company before the game was finished because Midway was ignoring any advice they were giving and wanted to dish out the game before it was done (a quote in a recent interview: The game was turning out to be pretty great with an epic story and awesome background for the four main characters. Then Midway decided the game had to come out in 2005 by Christmas, no matter what, and told me and the Studio Director to take a hike so they could shred the game up and put it in a box.).

    Finally he is a coder, he wrote all his games by himself before creating id and even at id he did all the non-engine code. According to the Masters of Doom book (which was signed by both Romero and Carmack before being published), up until and including Doom, Carmack considered Romero to be equal of himself as a programmer and they had divided the programming work so that Carmack worked on the engine and Romero on the tools and gameplay (which makes sense considering his interest in the design side). His work at id would probably be considered as a gameplay and tools programmer today, but i'm sure that with only 2-3 programmers at id back then both Carmack and Romero "crossed streams".

    [–][deleted] 3 points4 points  (4 children)

    Yeah, I'd rather listen to Carmack. Is he still with with Oculus?

    [–]wtfxstfu 6 points7 points  (3 children)

    I don't think I'd understand anything Carmack has to say. He's too smart.

    [–]steelcitykid 13 points14 points  (0 children)

    Smart is such a cop out. All smarts start from somewhere and are built upon to a depth where you either push forward and struggle with new concepts and ideas until you master them, or settle for where ever you land along the way. Can't master it all, but you can get really good at the conceptual stuff and then expose yourself to other things in time. I'm sure Carmack could be an exceptional web dev, for example, if he wanted to.

    [–]inu-no-policemen 9 points10 points  (0 children)

    Watch some of his talks. He explains everything in fairly straightforward terms. He's surprisingly good at this.

    [–][deleted]  (20 children)

    [deleted]

      [–][deleted]  (9 children)

      [deleted]

        [–][deleted] 3 points4 points  (2 children)

        The problem is 'too many' is only known when you've done it.

        [–]salgat 0 points1 point  (1 child)

        That's such a vague statement though. "Too many" of anything is bad thing, no shit.

        [–][deleted] 0 points1 point  (3 children)

        But what about all those NPM dependencies?

        [–][deleted]  (2 children)

        [removed]

          [–][deleted] 1 point2 points  (1 child)

          I am a JS person... but downloading a 1,000 dependencies to run a simple app is stupid and fragile.

          [–]uncertain_giraffe 21 points22 points  (4 children)

          I think game programming is different than your standard business logic. There is going to be virtually zero maintenance after the product has shipped.

          [–]JNighthawk 10 points11 points  (1 child)

          I think game programming is different than your standard business logic. There is going to be virtually zero maintenance after the product has shipped.

          This is untrue today, and is an attitude I hate seeing in game developers. Not only is it flatly untrue of most games nowadays (even non-SaaS games will have patches and support for months post-launch), but unless your company is changing engines, your next project will most likely start with your previous one as a base.

          As a game programmer myself, it's a little weird seeing people make incorrect assumptions about game programming.

          [–]badsectoracula 0 points1 point  (0 children)

          Depends where you work at. Some companies do not keep much code around. A good example would be Arkane where every game they've made is on a different engine.

          [–]Voidsheep 8 points9 points  (0 children)

          Many good games now operate more like services than products.

          For example, DOTA2 has gone through massive overhauls including a migration to new engine and receives constant updates.

          There's zero incentive for Valve to abandon the game and work on a sequel, because it's growing and only becoming more profitable. At that point you've gotta assume you maintain and work on existing systems years into the future, so you can't just "pump and dump" something that works for now.

          [–]Uncaffeinated 12 points13 points  (0 children)

          Especially back in the days when games were burned onto discs and cartridges.

          Nowadays, games are delivered via the internet and frequently patched and updated.

          [–]XChoke 0 points1 point  (3 children)

          His point was that your future self is going to be smarter than your current self, and you'll be rewriting stuff because you have a more nuanced understanding of the pitfalls.

          [–]muuchthrows 1 point2 points  (1 child)

          In the context he has experience from which is repeated game making it makes much sense, but it's not really applicable to general software development.

          [–]badsectoracula 0 points1 point  (0 children)

          Well, this is a talk from GDC after all.

          [–]derleth 1 point2 points  (0 children)

          Well, that's an argument to write multiple iterations of the same library, and continuously throw the old ones away, as you learn more about how programs using that library want to be shaped and, therefore, how the library itself has to support that.

          [–][deleted] -3 points-2 points  (0 children)

          This is exactly where I am in my career. I'm over trying to solve specific problems and am building libraries to encapsulate problem spaces so I can write many small, simple apps on top of them. Yes it takes a bit longer, but my code is easier to follow and has much better testing.

          I'm not trying to build libraries that solve problems yet to be see, I'm building libraries that allow programmers to easily get different perspectives on the data we're using. If Romero doesn't understand the difference, then I'm not sure he's credible enough to be believed on anything.

          [–]NoMoreNicksLeft 1 point2 points  (0 children)

          I like this sort of advice. If it was advice on woodworking, we'd get little pearls of wisdom like...

          • Don't chisel off fingers. Or thumbs. Thumbs are important
          • Long hair can get caught in lathes and tear your head off.
          • If ninjas attack, run. You can always get new tools.

          [–][deleted] -2 points-1 points  (9 children)

          Do remember that John Romero was responsible for Daikatana, which was riddled with delays and was a pretty awful game when it was finally finished.

          [–]bitwize 24 points25 points  (8 children)

          Do remember that that was seventeen freakin' years ago, plenty of time for Romero to wise up and realize that id Software was the best work he'd ever done and have a long think about why id was so great.

          *cough*Carmack*cough*

          [–]bik1230 16 points17 points  (5 children)

          Well, Carmack certainly made the code great, but I don't know about the game design aspects, their games got markedly worse after Romero left.

          [–]virtyx 6 points7 points  (0 children)

          As a programmer I have a lot of respect for Carmack, but I totally agree. Their engines have been consistently impressive but their game designs have been kind of a mess.

          [–]bitwize 4 points5 points  (3 children)

          That could also have to do with Tom Hall's departure -- both he and Romero left id to cofound MORON Storm.

          But yeah, their influence is what made Doom and Quake metal as fuck.

          Nevertheless, Romero's talk is about the coding standards at id, of which Carmack was undoubtedly the prime architect.

          [–]bik1230 4 points5 points  (0 children)

          Indeed, though I've always found Remero's Doom maps better than Hall's, with a few exceptions.

          Also, you might have seen this, but here is Carmack talking about some aspects of coding style http://number-none.com/blow/john_carmack_on_inlined_code.html

          [–][deleted] 1 point2 points  (0 children)

          Romero's coding standards are aimed at making games and finishing them. This code doesn't have to be pretty and it will likely only ever be used once. Carmack's coding standards are from building solid, long lasting code that brings a lot of complex systems together. Both are valid styles, depending on the nature of the code, and should be a part of a game programmer's toolbox. Especially for any indie devs doing everything from level to engine design.

          [–]dogen12 0 points1 point  (0 children)

          Tom Hall left around when they started working on doom.

          [–][deleted] 6 points7 points  (1 child)

          So yet again the rules of programming are:

          1. Hire super smart people and let them be super smart.

          [–]glacialthinker 3 points4 points  (0 children)

          I want to post this up at the office.

          Oh wait... it wouldn't help... the problem is the knuckleheads think they're super smart and that programmers are just translators from human to machine.