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 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. My parents 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.
-### FIXME
+Throughout my career I've straddled the divide between system administration and programming. My first jobs tasked me with maintaining various sorts of computers: desktop PCs, UNIX-based machines, and backing up the occasional VAX machine. It wasn't until one of my positions needed a website that my career added more programming to my resume. Programming websites in the 1990s was where I really started to learn and understand Perl, SQL, relational databases, and HTML. The web was so new in the 1990s that all of the folks on our projects were learning at the same time. I leveraged my Perl knowledge into several other jobs and projects doing web-based programming. Perl in the 1990s was a language where the basics were simple to learn but the language could handle really complex ideas and data structures. Perl and CGI made it easy to get something onto a web page that had some interactivity. Where Perl becomes complex is the syntax for things like regular expressions, and the tendency for Perl programmers to value code that does multiple actions on the same line. The Perl community also valued code that was clever, which lead me to wonder on several occasions if I was clever enough to be a Perl programmer.
-Throughout my career I've straddled the divide between system administration and programming. My first jobs tasked me with maintaining various sorts of computers: desktop PCs, UNIX-based machines, and backing up the occasional VAX machine. It wasn't until one of my positions needed a website that my career added more programming to my resume. Programming websites in the 1990s taught me Perl, SQL, databases, and HTML. The web was so new in the 1990s that all of the folks on our projects were learning at the same time. I leveraged my Perl knowledge into several other jobs and projects doing web-based programming. Perl in the 1990s was a language where the basics were simple to learn but the language could handle really complex ideas and data structures. Perl and CGI made it easy to get something onto a web page that had some interactivity. Where Perl becomes complex is the syntax for things like regular expressions, and the tendency for Perl programmers to value code that does multiple actions on the same line. The Perl community also valued code that was clever, which lead me to wonder on several occasions if I was clever enough to be a Perl programmer.
+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.
-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 developers 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 enjoy being in a managerial role 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. It 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 metadata and very little code. This is what I meant 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 competition. Pyweek is a week-long competition where folks build a game from scratch in one week's time. 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 started learning Python on my own using Pygame and entered my first Pyweek competition. Pyweek is a week-long competition where folks build a game from scratch in one week's time. It was a challenge but was also one of the most rewarding experiences I've had in programming. I build something that was playable when I didn't know what the hell I was doing. In many ways I was learning to swim by throwing myself into the 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 hadn't thought possible.
+### FIXME
-AS the technical lead position wore on I found myself wanting to do something else. I managed to get a position with Sourceforge as a member of the Systems Operations Group. Sourceforge was an amazing experience for me. I had long wanted to work for an Open Source company, and few companies were more well-regarded than Sourceforge and Slashdot 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 horrible error? It didn't help that I was friends with and had gone to school with some of the people who worked at Sourceforge / Slashdot. Was this going to be an elaborate prank, or was I getting in because they knew me? All of these thoughts ran through my head as I started work. 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.
+As the technical lead position wore on I found myself wanting to do something else. I interviewed at several places and managed to get a position with 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 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 horrible error? It didn't help that I was friends with and had gone to school with some of the people who worked at Sourceforge / Slashdot. Was this going to be an elaborate prank, or was I getting in because they knew me? All of these thoughts ran through my head as I started work. 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.
I'd love to say that it had a happy ending and that my fears were unfounded, but sadly I was let go from that position due to budgetary constraints. I'm grateful for the opportunities I had there, the friends I made, and the experiences I had but I'd be lying if the layoff didn't come with a mixture of sadness and relief. Sadness that I might never have a cool job like that again, and relief that I could put away those impostor syndrome feelings.