Typo
[themediocreprogrammer.git] / appendixa.md
index 75d11a1c49f3deef9182a8c5bd1401f1c54b6d3c..56efa79a9faa5c81a55948592ac87c50f375784f 100644 (file)
@@ -1,4 +1,6 @@
-# Appendix A {-}
+\appendix
+
+# My journey
 
 My journey as a programmer started when I was in elementary school. I became interested in computers after reading about them in the World Book Encyclopedia and hoped to work with them some day. What I didn't realize was that those encyclopedias were out-of-date and only showed the larger, more expensive mainframe and mini-computers of the 1960s and not the more modern microcomputers that were introduced in the late 1970s. When I realized that an Apple ][ was a microcomputer and that it was designed for the home market I began my quest to get a computer of my own (AKA: I started dropping not-so-subtle hints to my parents that I wanted a computer). I scoured magazines like Popular Computing and Byte Magazine looking for the right computer; from the Commodore VIC-20 and Sinclair ZX-80 to the Radio Shack TRS-80 Model III (Even the Rockwell AIM-65 or Heathkit H89 would have worked. I wasn't picky back then.) My dad took me to computer stores and I marveled at the variety of machines that were there (and likely made a few sales-people nervous as I poked and prodded the new and rather expensive machines). Finally my dad picked up an Atari 400 computer with tape drive, and I began learning BASIC programming in earnest. Around the same time my school opened a "computer lab" with three Commodore PET 4032 machines (complete with floppy disk drives), and I found myself spending every moment I could with those machines. In high school I took two programming courses, one in BASIC and the other in Pascal (which was my first exposure to procedural languages, and the basic concepts of computer science). In college I majored in Computer Science with a Bachelor of Science and did my best to keep up with all of the things that they tried to teach me. Unfortunately, I wasn't a great student (especially in mathematics). I struggled with and later dropped my compilers class, and felt like I was falling behind where other students succeeded. Most of our classes used Pascal, which I was becoming more familiar with, but there were a few classes that used COBOL, Ada, SNOBOL, C, and assembly language. I graduated with modest scores and returned home.
 
@@ -6,7 +8,7 @@ Throughout my career I've straddled the divide between system administration and
 
 One of the companies I worked at decided to migrate a Perl system over to a Java-based environment. They looked at the skills of the existing development team and decided they needed to outsource the project to another company. This was a common trend in the early 2000s for reasons that are outside of the scope of this book. This gave me my first taste as a team leader. I know a lot of programmers migrate over into managerial roles but at the time I didn't feel I had fully explored my programming potential. I sat down on several occasions and tried to learn Java but it never clicked for me. Java web development always felt more cumbersome than Perl CGI scripts that I created. It also didn't help that we were shipping `.war` files into a Tomcat system, which seemed like they were comprised of a lot of configuration metadata and very little code. This is what I was referring to when I spoke about being OK with giving up on learning something --- sometimes what we try to learn is more of a chore. Having something that is a chore isn't going to provide a good learning experience.
 
-It was around this time that I began learning Python on my own using Pygame. I took the plunge by entering my first [Pyweek](http://pyweek.org) competition. Pyweek is a week-long competition where folks build an entire game from scratch in one week. It was a challenge, but was also one of the most rewarding experiences I've had in programming. I build a game called "Busy Busy Bugs" that was playable during a time when I really didn't know what I was doing. In many ways I was learning to swim by throwing myself into the proverbial deep end. I wasn't in any danger, but the desire to get something done at the end of a week drove me in ways I didn't think was possible.
+It was around this time that I began learning Python on my own using Pygame. I took the plunge by entering my first [Pyweek](http://pyweek.org) competition. Pyweek is a week-long competition where folks build an entire game from scratch in one week. It was a challenge, but was also one of the most rewarding experiences I've had in programming. I built a game called "Busy Busy Bugs" that was playable during a time when I really didn't know what I was doing. In many ways I was learning to swim by throwing myself into the proverbial deep end. I wasn't in any danger, but the desire to get something done at the end of a week drove me in ways I didn't think was possible.
 
 As the technical lead position continued I found myself wanting to do something else. I interviewed at several places and was hired at Sourceforge as a member of the Systems Operations Group. Sourceforge was an amazing experience for me. I dreamed of working for an Open Source company, and few Open Source companies were as well-regarded as Sourceforge and Slashdot were in the Open Source community, but my insecurities and "impostor syndrome" kicked in. Would I be able to cut it? Would they hire me only to realize they'd made a mistake and I wasn't as good as I claimed to be? I was friends with and had gone to school with several of the people who worked at Sourceforge / Slashdot, so I wondered about their motivations for hiring me. Was my getting hired an elaborate prank, or was I hired because several folks in the company knew me? All of these thoughts ran through my head while I worked there. It didn't help that my position was primarily system administration at a level that I was inexperienced at. There was also a programming component to the position, but I constantly felt like I was in way over my head. I lived in constant fear that I was going to be found out and that the job that I wanted would no longer be available to me. Granted I learned a lot and had very supportive and kind management at Sourceforge but I lived in dread whenever my manager would check in on me because I feared that the conversation would only highlight that I wasn't really supposed to be there.