{"id":947,"date":"2019-11-18T11:05:44","date_gmt":"2019-11-18T11:05:44","guid":{"rendered":"http:\/\/www.projectimmerse.com\/blog\/?p=947"},"modified":"2020-06-15T08:41:39","modified_gmt":"2020-06-15T08:41:39","slug":"the-early-days-of-id-software-john-romero","status":"publish","type":"post","link":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/","title":{"rendered":"The Early Days of Id Software &#8211; John Romero"},"content":{"rendered":"\r\n<p>I decided to take a break from my usual programming and wandered the internet, I tried breaking away from any programming related videos. I was looking for something light, I don&#8217;t know maybe a web dev conference.<\/p>  \r\n\r\n<p>This post is based off a youtube video I stumbled on, it&#8217;s entitled &#8220;<strong>The Early Days of Id Software &#8211; John Romero @ WeAreDevelopers Conference 2017<\/strong>&#8220;. You know, I didn&#8217;t know who <a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Romero\" title=\"John Romero\" target=\"_blank\" rel=\"noopener noreferrer\">John Romero<\/a> was and I played both DOOM and QUAKE back in the early 90s. John was rockin&#8217; the long hair, it was super long, looked super cool though. I wish they would invite more people like John over to Web Dev Conferences.<\/p>  \r\n\r\n<!--more-->\r\n\r\n<p>I was a good couple minutes in and it was refreshing to hear some good old school programming and software development. So I was in for a ride, perhaps it was the nostalgia, no it was definitely the nostalgia. I mean it&#8217;s about this guy named John Romero and he puts together a team of gifted programmers and they build something amazing. That&#8217;s just awesome. <\/p>  \r\n\r\n<p style=\"text-align: center;\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/KFziBfvAFnM\" allowfullscreen=\"\" style=\"text-align: center;\"><\/iframe><\/p>\r\n\r\n<p>John, in the video provides a list of software principles as he tells his story. These were way too good not to grab for my own use so here it is:<\/p>  \r\n\r\n<h3>Software Principles<\/h3>\r\n\r\n<p>1. No prototypes. Just make the game. Polish as you go. \r\n    Don&#8217;t depend on polish happening later. \r\n    Always maintain constantly shippable code.\r\n    (Large teams require more planning though.)<\/p>  \r\n    \r\n<p>2. It&#8217;s incredibly important that your game can always be run\r\n    by your team. Bulletproof your engine by providing defaults\r\n    (for input data) upon load failure.<\/p>  \r\n    \r\n<p>3. Keep your code absolutely simple. Keep looking at your\r\n    functions and figure out how you can simplify further.<\/p>  \r\n    \r\n<p>4. Great tools help make great games. Spend as much time on\r\n    tools as possible.<\/p>  \r\n    \r\n<p>5. We are our own best testing team and should never allow\r\n    anyone else to experience bugs or see the game crash.\r\n    Don&#8217;t waste others&#8217; time. Test thoroughly before checking\r\n    in your code.<\/p>  \r\n    \r\n<p>6. As soon as you see a bug, you fix it. Do not continue on.\r\n    If you don&#8217;t fix your bugs your new code will be built\r\n    on a buggy codebase and ensure an unstable foundation.<\/p>  \r\n    \r\n<p>7. Use a development system that is superior to your target.<\/p>  \r\n\r\n<p>8. Write your code for this game only &#8211; not for a future game.\r\n    You&#8217;re going to be writing new code later because you&#8217;ll be smarter.<\/p>  \r\n    \r\n<p>9. Encapsulate functionality to ensure design consistency.\r\n    This minimizes mistakes and saves design time.<\/p>  \r\n    \r\n<p>10. Try to code transparently. Tell your lead and peers exactly\r\n    how you are going to solve your current task and get feedback\r\n    and advice. Do not treat game programming like each coder is a\r\n    black box. The project could go off the rails and cause delays.<\/p>  \r\n    \r\n<p>11. Programming is a creative art form based in logic. Every programmer\r\n    is different and will code differently. It&#8217;s the output that matters.<\/p>  \r\n    \r\n    \r\n<h3>Extra advice:<\/h3>  \r\n\r\n<p>1. Only program for a few minutes and test code immediately. Try not to code \r\nfor even as long as 30 minutes. This is will help to avoid debugging because\r\nyou will catch bugs sooner, and won&#8217;t have as wide an area of code to look\r\nthrough for the bug.<\/p>  \r\n\r\n<p>Is that timeless software wisdom or what? Yeah, this is a super short post &#8211; just wanted to mix up my topics a bit more. Stay tuned for more Javascript.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>I decided to take a break from my usual programming and wandered the internet, I tried breaking away from any programming related videos. I was looking for something light, I don&#8217;t know maybe a web dev conference. This post is based off a youtube video I stumbled on, it&#8217;s entitled &#8220;The Early Days of Id &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The Early Days of Id Software &#8211; John Romero&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1092,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-947","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Early Days of Id Software - John Romero - Project Immerse<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Early Days of Id Software - John Romero - Project Immerse\" \/>\n<meta property=\"og:description\" content=\"I decided to take a break from my usual programming and wandered the internet, I tried breaking away from any programming related videos. I was looking for something light, I don&#8217;t know maybe a web dev conference. This post is based off a youtube video I stumbled on, it&#8217;s entitled &#8220;The Early Days of Id &hellip; Continue reading &quot;The Early Days of Id Software &#8211; John Romero&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/\" \/>\n<meta property=\"og:site_name\" content=\"Project Immerse\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-18T11:05:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-15T08:41:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"projectimmerse\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"projectimmerse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/\"},\"author\":{\"name\":\"projectimmerse\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"headline\":\"The Early Days of Id Software &#8211; John Romero\",\"datePublished\":\"2019-11-18T11:05:44+00:00\",\"dateModified\":\"2020-06-15T08:41:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/\"},\"wordCount\":577,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/john-romero-developers-conference.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/\",\"name\":\"The Early Days of Id Software - John Romero - Project Immerse\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/john-romero-developers-conference.png\",\"datePublished\":\"2019-11-18T11:05:44+00:00\",\"dateModified\":\"2020-06-15T08:41:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/john-romero-developers-conference.png\",\"contentUrl\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/john-romero-developers-conference.png\",\"width\":750,\"height\":750,\"caption\":\"The Early Days of Id Software - WeAreDevelopers Conference by John Romero\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/the-early-days-of-id-software-john-romero\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Early Days of Id Software &#8211; John Romero\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/\",\"name\":\"Project Immerse\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/#\\\/schema\\\/person\\\/c53f2864be524ee6fa08a7e4800dd1e5\",\"name\":\"projectimmerse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g\",\"caption\":\"projectimmerse\"},\"url\":\"https:\\\/\\\/www.projectimmerse.com\\\/blog\\\/author\\\/projectimmerse\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Early Days of Id Software - John Romero - Project Immerse","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/","og_locale":"en_US","og_type":"article","og_title":"The Early Days of Id Software - John Romero - Project Immerse","og_description":"I decided to take a break from my usual programming and wandered the internet, I tried breaking away from any programming related videos. I was looking for something light, I don&#8217;t know maybe a web dev conference. This post is based off a youtube video I stumbled on, it&#8217;s entitled &#8220;The Early Days of Id &hellip; Continue reading \"The Early Days of Id Software &#8211; John Romero\"","og_url":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/","og_site_name":"Project Immerse","article_published_time":"2019-11-18T11:05:44+00:00","article_modified_time":"2020-06-15T08:41:39+00:00","og_image":[{"width":750,"height":750,"url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png","type":"image\/png"}],"author":"projectimmerse","twitter_card":"summary_large_image","twitter_misc":{"Written by":"projectimmerse","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#article","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/"},"author":{"name":"projectimmerse","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"headline":"The Early Days of Id Software &#8211; John Romero","datePublished":"2019-11-18T11:05:44+00:00","dateModified":"2020-06-15T08:41:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/"},"wordCount":577,"commentCount":0,"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/","url":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/","name":"The Early Days of Id Software - John Romero - Project Immerse","isPartOf":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#primaryimage"},"image":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#primaryimage"},"thumbnailUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png","datePublished":"2019-11-18T11:05:44+00:00","dateModified":"2020-06-15T08:41:39+00:00","author":{"@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5"},"breadcrumb":{"@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#primaryimage","url":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png","contentUrl":"https:\/\/www.projectimmerse.com\/blog\/wp-content\/uploads\/2019\/11\/john-romero-developers-conference.png","width":750,"height":750,"caption":"The Early Days of Id Software - WeAreDevelopers Conference by John Romero"},{"@type":"BreadcrumbList","@id":"https:\/\/www.projectimmerse.com\/blog\/the-early-days-of-id-software-john-romero\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.projectimmerse.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Early Days of Id Software &#8211; John Romero"}]},{"@type":"WebSite","@id":"https:\/\/www.projectimmerse.com\/blog\/#website","url":"https:\/\/www.projectimmerse.com\/blog\/","name":"Project Immerse","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.projectimmerse.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.projectimmerse.com\/blog\/#\/schema\/person\/c53f2864be524ee6fa08a7e4800dd1e5","name":"projectimmerse","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d06955033d6227bfdcf30014e457e4334f7deeb73907de49b65ec2484921931?s=96&d=mm&r=g","caption":"projectimmerse"},"url":"https:\/\/www.projectimmerse.com\/blog\/author\/projectimmerse\/"}]}},"_links":{"self":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/comments?post=947"}],"version-history":[{"count":11,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/947\/revisions"}],"predecessor-version":[{"id":990,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/posts\/947\/revisions\/990"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/media\/1092"}],"wp:attachment":[{"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/media?parent=947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/categories?post=947"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.projectimmerse.com\/blog\/wp-json\/wp\/v2\/tags?post=947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}