<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Jaroslaw Kowalski : Personal</title><link>http://blogs.msdn.com/jkowalski/archive/tags/Personal/default.aspx</link><description>Tags: Personal</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Software Development Meme</title><link>http://blogs.msdn.com/jkowalski/archive/2008/07/07/software-development-meme.aspx</link><pubDate>Mon, 07 Jul 2008 21:29:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8703424</guid><dc:creator>jkowalski</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/jkowalski/comments/8703424.aspx</comments><wfw:commentRss>http://blogs.msdn.com/jkowalski/commentrss.aspx?PostID=8703424</wfw:commentRss><wfw:comment>http://blogs.msdn.com/jkowalski/rsscomments.aspx?PostID=8703424</wfw:comment><description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;I was recently &lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/07/07/software-development-meme.aspx" target="_blank"&gt;tagged by Danny&lt;/a&gt; to answer questions about my programming experience as part of a &lt;a href="http://oakleafblog.blogspot.com/2008/07/software-development-meme.html" target="_blank"&gt;longer&lt;/a&gt; &lt;a href="http://blogs.devsource.com/devlife/content/random/software_development_meme_1.html" target="_blank"&gt;chain letter&lt;/a&gt;, so here they are:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;strong&gt;How old were you when you first started programming &lt;/strong&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;I was 8 (some 0x17 years ago) when I got my first computer: &lt;a href="http://en.wikipedia.org/wiki/Timex_Computer_2048"&gt;Timex 2048&lt;/a&gt; which was &lt;a href="http://en.wikipedia.org/wiki/ZX_Spectrum"&gt;ZX Spectrum&lt;/a&gt; clone sold in Poland. Originally I was planning to use it for gaming. Unfortunately my computer didn&amp;#8217;t come with an essential component (a tape recorder &lt;span style="font-family: wingdings; mso-ascii-font-family: calibri; mso-ascii-theme-font: minor-latin; mso-hansi-font-family: calibri; mso-hansi-theme-font: minor-latin; mso-char-type: symbol; mso-symbol-font-family: wingdings"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: wingdings"&gt;J&lt;/span&gt;&lt;/span&gt;), so I really had no choice but to learn programming.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;How did you get started in programming? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Fortunately Timex had a built-in BASIC language interpreter and it came with a nice language manual. I started exploring that and found that I could do cool things with programs. First things I tried were graphics-related and used PLOT/DRAW combo extensively to produce some nice geometric patterns.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Later I realized that there was another language that my computer understood which was much faster: Z80 assembly language (the computer manual even included an introduction to Z80 assembly &lt;span style="mso-spacerun: yes"&gt;&amp;#160;&lt;/span&gt;- compare it with today&amp;#8217;s manuals!) so I learned about it (with the help of GENS assembler and MONS debugger and &amp;#8220;The Complete Spectrum ROM Disassembly&amp;#8221; book) and quickly fell in love with it.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt 0.5in"&gt;Side-note: because programs for ZX Spectrum were mostly distributed on audio tapes (with a buzzing sound on it kind of similar to a modem negotiating connection), some people in Poland came up with a super clever idea of distributing programs during radio shows in the middle of the night. The show was called &amp;#8220;RadioKomputer&amp;#8221; and that&amp;#8217;s how I got some educational programs.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;What was your first language? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;My first languages were Sinclair Basic and Z80 assembly, many years later I moved to a PC (386 SX with 2MB of RAM) and then I started playing with Turbo Pascal &amp;amp; Turbo C from Borland. &lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;What was the first real program you wrote? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;I don&amp;#8217;t remember what the &lt;u&gt;first&lt;/u&gt; real program was, there were many of them, most were graphics related. I wrote some flashy graphics demos in assembly language which included some scrolling text, nice graphics, explosions, music (such as &amp;#8220;Axel F&amp;quot; theme or Jean Michel Jarre because it was the only thing that sounded ok on Timex beeper). We demoed those on computer fairs which were organized every week in a nearby high school.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Later, on PC I wrote my first &lt;a href="http://en.wikipedia.org/wiki/Norton%20Commander"&gt;Norton Commander&lt;/a&gt; clone. Everyone else I knew had also written their own clones, too &amp;#8211; I guess it was kind of a sport in the nineties. I was proud of my Jarek Commander, because it only took &amp;lt;500 bytes of resident memory while original NC consumed some 4 KB (in the world of 640K this was a huge difference).&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;My first big program (sometime around 1994-95) was a graphics program called &amp;#8220;Canaletto&amp;#8221; named after Bernardo Belotto who was a 18th century painter. It was a fully featured graphics package for DOS which included drawing and image processing capabilities (like MS Paint on steroids with some basic image processing effects which you can see in Adobe Photoshop today). I wrote everything from scratch in Turbo C &amp;amp; 8086 assembly, including my own windowing library, printing support, image processing algorithms and even some graphics drivers for non-VESA video cards. We wanted to sell Canaletto to Get Rich Quickly(tm). We prepared the first &amp;#8220;batch&amp;#8221; in my friend&amp;#8217;s kitchen using his color printer and even shrink-wrapped the boxes manually using his gas stove. We sold whopping 3 copies and 33% of buyers have registered their copies by mailing in registration cards.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;What languages have you used since you started programming? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Sinclair Basic, Z80 assembly, Turbo Pascal, C/C++, 80386 assembly, Java, JavaScript, Perl, Python, C#, Awk, Unix shell scripts, SQL, HTML, XML/XSLT/XPath/XQuery. I have also experimented with countless other languages such as Smalltalk, Boo, functional languages and more. &lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;What was your first professional programming gig? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;My first professional software development project was a PC game called &amp;#8220;&lt;a href="http://www.gamespot.com/pc/strategy/roborumble/index.html"&gt;RoboRumble&lt;/a&gt;&amp;#8221; which was produced in 1998 and released worldwide. It was a real-time strategy in 3D with some &lt;a href="http://www.ag.ru/screenshots/roborumble/37853"&gt;very cool&lt;/a&gt; &lt;a href="http://www.ag.ru/screenshots/roborumble/15228"&gt;accelerated graphics&lt;/a&gt;. I was responsible for gameplay, AI, multiplayer and various putting-it-all-together tasks.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;After that experience I moved on to do some more &amp;#8220;serious&amp;#8221; development. I spent next 7 years building large workflow systems for enterprises. I implemented at least three O/R Mappers along the way. I just didn&amp;#8217;t know that those things were called O/RM back then.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;strong&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;If you knew then what you know now, would you have started programming?&lt;/span&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&amp;#160; &lt;/span&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;Absolutely! &lt;/span&gt;    &lt;p&gt;&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers, what would it be? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;It&amp;#8217;s all about requirements. No matter how cool the code is, it is useless if it doesn&amp;#8217;t do what the customer wants. Customers often don&amp;#8217;t know what they want, so it takes a lot of communication skills to &amp;#8220;extract&amp;#8221; that information. Also, be prepared for ever-changing requirements and incorporate them in your development process. &lt;a href="http://en.wikipedia.org/wiki/BDUF"&gt;BDUF&lt;/a&gt; rarely wins against &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;agile practices&lt;/a&gt;. Usability is also extremely important; even if the customer does not realize the importance of it, you should do all you possibly can to make common user scenarios very easy to use and other scenarios possible.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;What's the most fun you've ever had ... programming? &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Definitely working on RoboRumble was a lot of fun. In the end-game we spent like 20 hours a day working on finishing the product (we literally left @4 AM just to get back at 8AM) but despite some local frustrations we absolutely loved it.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="mso-ascii-font-family: calibri; mso-hansi-font-family: calibri; mso-bidi-font-family: arial"&gt;&lt;strong&gt;Who&amp;#8217;s next &lt;/strong&gt;      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;Because of the exponential nature of this chain letter it is increasingly complex to find more people with blogs, but here are the next nominees:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;a href="http://blogs.msdn.com/esql/"&gt;Zlatko Michailov&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/sceppa/"&gt;David Sceppa&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://blogs.msdn.com/juyik/"&gt;Ju-Yi Kuo&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/maurycy/" target="_blank"&gt;Maurycy Markowski&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8703424" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/jkowalski/archive/tags/Personal/default.aspx">Personal</category></item></channel></rss>