{"id":834,"date":"2008-08-23T18:46:06","date_gmt":"2008-08-23T17:46:06","guid":{"rendered":"http:\/\/www.craigmurphy.com\/blog\/?p=834"},"modified":"2008-08-24T00:29:44","modified_gmt":"2008-08-23T23:29:44","slug":"ugh-memes-how-i-got-started-in-software-development","status":"publish","type":"post","link":"http:\/\/www.craigmurphy.com\/blog\/?p=834","title":{"rendered":"Ugh. Memes. How I Got Started In Software Development."},"content":{"rendered":"<p>Thanks to Colin (<a title=\"Stuff that&#39;s in my head\" href=\"http:\/\/blog.colinmackay.net\/archive\/2008\/07\/26\/3102.aspx\">Stuff that&#8217;s in my head<\/a>) and Barry (<a title=\"idunno.org\" href=\"http:\/\/idunno.org\/archive\/2008\/07\/27\/ugh.-memes.-how-i-got-started-in-software-development.aspx\">idunno.org<\/a>) for tagging me in this meme.&#160; I\u2019m only promoting it because it gives me a chance to document a little bit of my past\u2026<\/p>\n<p><strong>How old were you when you started programming?<\/strong>     <br \/>I suppose I was about 12, probably tinkering with a <a href=\"http:\/\/en.wikipedia.org\/wiki\/TRS-80\">TRS-80<\/a> (in Tandy\/RadioShack), an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Acorn_Electron\">Acorn Electron<\/a>, a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Sinclair_ZX81\">ZX-81<\/a> and an <a href=\"http:\/\/en.wikipedia.org\/wiki\/Oric_1#Oric-1\">Oric 1<\/a>.<\/p>\n<p>However it wasn\u2019t until I was 14 when a BBC Micro (Model B) arrived complete with it\u2019s <a href=\"http:\/\/bbc.nvg.org\/doc\/BBCUserGuide-1.00.pdf\">User Guide<\/a>.&#160; Those where the days when user guides were real user guides and \u2026&#160; The User Guide itself was over an inch thick and was ring bound.&#160; The ring binding was perfect, you could lay it flat on a table and it would stay open, great for typing whilst reading.&#160; This is in complete contrast to the <a href=\"http:\/\/en.wikipedia.org\/wiki\/RISC_OS#RISC_OS_3\">RISC OS 3<\/a> Programmer\u2019s Reference Manuals that accompanied the Acorn Archimedes (more about this shortly).&#160; I learned everything there was to learn about the BBC, in some cases this meant getting very intimate with SHIELA, JIM and FRED \u2013 sometimes all at the same time (user guide page 421)!<\/p>\n<p>Those were also the days of cassette-based storage.&#160; How slow were they?&#160; Very slow.&#160; Indeed, when I finally got a 5.25\u201d disk drive, I spent a lot of time moving tape-based programs on to disk.&#160; Of course, some tape-based programs where fussy and insisted that they load and run from \u201cPAGE &amp;0E00\u201d, whereas the disk control moved the base page to &amp;1900.&#160; So I spent more time working out how to load programs into a different PAGE then magically move it to where it expected to be where it could then be executed from.&#160; The process of moving tape-based programs onto disk was something I became pretty good at.<\/p>\n<p><strong>How did you get started in programming?      <br \/><\/strong>I guess that I have my father to thank for this!&#160; When we were in Libya, he brought home fan-fold listing paper for me to use as scrap paper.&#160; Whilst a lot of it was \u2018address listings\u2019 and other such program output, some of it contained COBOL listings.&#160; <strong><\/strong><\/p>\n<p><strong>What was your first language?      <br \/><\/strong>That would be BBC Basic.&#160; I can\u2019t remember how long it took me to master it.&#160; BBC Basic had the advantage of a built in assembler \u2013 anything that was a little bit slow in interpreted Basic could be hand-cranked using 6502 Assembler.&#160; They were the days \u2013 it was possible to learn how to understand the entire computer: it\u2019s architecture, it\u2019s hardware, it\u2019s interfaces, you name it.<\/p>\n<p><strong>What was the first real program that you wrote?      <br \/><\/strong>I don\u2019t know if I can remember the very first program that I wrote.&#160; I can remember writing a number of programs whilst at school.&#160; There was a network broadcast program that I called Channel 5 \u2013 obviously long before the TV station came along.&#160; Then there was my A-Level project, a program that created graphs \u2013 it had to manage data, graph plotting and printing: a tall order in those days.<\/p>\n<p>Part of the graphing program involved sorting data.&#160; After the graph data had been loaded from file, I was using arrays to hold the data in memory.&#160; My sort routine involved looking at the first element of the array, then comparing its value with the second element \u2013 if the first was less than the second, I\u2019d use a temporary variable to allow me to swap the array elements.&#160; I was, as you might imagine, very pleased with myself \u2013 this was <a href=\"http:\/\/en.wikipedia.org\/wiki\/Bubble_sort\">a really cool sorting<\/a> method!&#160;&#160; Of course, like many\/all first-time programmers, I believed that I was the first person to \u201cinvent\u201d this sorting technique.&#160; Oh how much I had to learn \u2013 it didn\u2019t take long for the bubble [sic] to burst!<\/p>\n<p><strong>What languages have you used since you started programming?      <br \/><\/strong><a href=\"http:\/\/www.peter-cockerell.net\/aalp\/\">ARM Assembly Language<\/a>, Turbo C, Turbo C++, Turbo Pascal, ML, Perl, COBOL, Borland Pascal, Delphi, Visual Basic 6, Classic ASP (VB), PHP, Visual Basic (.net), C#.<\/p>\n<p><strong>What Was Your First Programming Gig?      <br \/><\/strong>Gig? I suppose by this it means where I was actually paid to write code.&#160; That would have been in 1990 when I spent a year working for <a href=\"http:\/\/www-05.ibm.com\/uk\/locations\/hursley_details.html\">IBM<\/a> in <a href=\"http:\/\/en.wikipedia.org\/wiki\/Hursley\">Hursley<\/a>, near <a href=\"http:\/\/en.wikipedia.org\/wiki\/Winchester\">Winchester<\/a>.&#160; At the time I was an avid Turbo Pascal fan \u2013 my first boss was a <a href=\"http:\/\/www.modula2.org\/\">Modula-2<\/a> dev-head, he loved it.&#160; I inherited a C language parser written in Modula-2.&#160; It was fun working on the parser\u2026until I discovered that the recursive nature of the parsing process wasn\u2019t controlled using local variables as it should be, but was controlled using global variables.&#160; I think this was close to my first \u201c<a href=\"http:\/\/en.wikipedia.org\/wiki\/OMG\">OMG<\/a>, I don\u2019t believe it\u201d moments (I\u2019ve had plenty more of those since then!)<\/p>\n<p><strong>If you knew then what you know now would you have started programming?      <br \/><\/strong>I think the short answer to this question would be yes, yes I would have started programming.&#160; However would I have chosen to learn assembler language?&#160; In today\u2019s abstract world, with class libraries getting evermore feature rich, it seems that fewer folks truly understand today\u2019s processors at an instruction set level.&#160; I wonder if there will be a shortage of assembly language developers in years to come?&#160; <\/p>\n<p><strong>If there is one thing you learned along the way that you would tell new developers what would that be?      <br \/><\/strong>Keep it clean, keep your code clean.&#160; It\u2019s difficult to teach \u201cfeeling\u201d \u2013 when I\u2019m writing code I often know very early on that I\u2019m probably writing code that will be difficult to maintain \u2013 it\u2019s at that point I stop and think about better (read: <em>simpler<\/em>) ways of achieving the same thing.&#160; In the same thought, I\u2019d also recommend that you shouldn\u2019t try and write perfect code the first time.&#160; Don\u2019t be afraid to write code with <a href=\"http:\/\/www.refactoring.com\/\">refactoring<\/a> in mind \u2013 there are plenty of <a href=\"http:\/\/www.devexpress.com\/Products\/Visual_Studio_Add-in\/Refactoring\/\">good tools<\/a> that will help get there!<\/p>\n<p><strong>What\u2019s the most fun you\u2019ve ever had &#8230; programming?      <br \/><\/strong>You might think I\u2019m weird (or may be wired) however this is an honest answer!&#160; Back in about 1994 I was working in Newcastle as part of an Acorn Archimedes library development team.&#160; One of the application developers was about to go on holiday, he had been frantically getting his CD-ROM based application ready for production.&#160; Disaster struck, somehow he managed to delete his source directory (yes, backups, yada yada, I know\u2026)&#160; Rather than let him cancel his holiday, I hauled his Acorn A5000 into my office space (thus I had two A5000s) and proceeded to recover as much of the source code as I could.&#160; I couldn\u2019t get it all back, so in the two weeks that he was away, I filled in the blanks.<\/p>\n<p><strong>References     <br \/><\/strong><a title=\"http:\/\/en.wikipedia.org\/wiki\/ARM_architecture\" href=\"http:\/\/en.wikipedia.org\/wiki\/ARM_architecture\">http:\/\/en.wikipedia.org\/wiki\/ARM_architecture<\/a><\/p>\n<p><a title=\"http:\/\/acorn.chriswhy.co.uk\/Computers\/A300.html\" href=\"http:\/\/acorn.chriswhy.co.uk\/Computers\/A300.html\">http:\/\/acorn.chriswhy.co.uk\/Computers\/A300.html<\/a><\/p>\n<p>Tag, you\u2019re next: <a href=\"http:\/\/www.peat.me.uk\/\">Richard Peat<\/a>, <a href=\"http:\/\/geekswithblogs.net\/dchristiansen\/Default.aspx\">David Christiansen<\/a>, <a href=\"http:\/\/irascian.blogspot.com\/\">Ian Smith<\/a>, <a href=\"http:\/\/scottisafool.spaces.live.com\/\">Scott Lovegrove<\/a>, <a href=\"http:\/\/dannythorpe.com\/\">Danny Thorpe<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Thanks to Colin (Stuff that&#8217;s in my head) and Barry (idunno.org) for tagging me in this meme.&#160; I\u2019m only promoting it because it gives me a chance to document a little bit of my past\u2026 How old were you when you started programming? I suppose I was about 12, probably tinkering with a TRS-80 (in &hellip; <a href=\"http:\/\/www.craigmurphy.com\/blog\/?p=834\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Ugh. Memes. How I Got Started In Software Development.<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,1],"tags":[],"class_list":["post-834","post","type-post","status-publish","format-standard","hentry","category-development","category-general"],"_links":{"self":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=834"}],"version-history":[{"count":0,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/834\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=834"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.craigmurphy.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}