Larry Clarkin just tagged me, and, as he says (and I'm paraphrasing here) in his meme post, "Tag, Brian, your it." As I'm a relative neophyte at active blogging — you can see this blog has only really been active since April 2008 — I will cop to the fact that I needed a explanation, which Larry provided. I completely dig this idea. This meme is particularly interesting as it builds on my first "real" post, What Language Are You?
Stack TracePlagiarizing directly from Larry, because it's in theme with the meme and kind of cool, here is the current stack trace:
Michael Eaton (post) —> Sarah Dutkiewicz (post) —> Jeff Blankenburg (post) —> Josh Holmes (post) —> Larry Clarkin (post) —> me
How old were you when you started programming?I was a sophomore in high school, probably spring of 1985 or so (my memory of the distance past isn't that great). I do recall it was in a class called Computer Math. I wrote a text-base Space Invaders-like game using a boatload of ASCII, print commands (the good old ?), and what was probably an infinite loop construct to stream the ship from the top to the bottom of the screen. It was a couple thousand lines of code and didn't all that well, but I got an A and had a blast with that project. So I was probably 16 years old and finally knew what I wanted to be when I grew up.
The next two year, in both my junior and senior years of high school, I took classes at the votech school as part of my curriculum, learning to program RPG and FORTRAN. I enrolled at Truman State University (then called Northeast Missouri State University) as a Computer Science major and ended up being one of the rare 25% that never changed their major.
What was your first language?BASIC
What was the first real program you wrote?This is a tricky one. What does "real" mean?
One could argue that the Space Invaders-like hack was a "real" program, though it was childish, immature, involved lots of poorly defined loops, and ended up not really working like the coin-op I was aiming for. So perhaps that shouldn't count.
I could say my first real program was COBOL85, DB2, and CICS for my first "real" post-graduate job. But I wrote fully-functioning programs before that "real" job. One in particular comes to mind, from my internship at Truman. I helped write the student credit transfer application for our Student Information System. I also got a job my senior year in college working for the same department writing other applications for SIS.
But, really, the first program I wrote that truly felt like a real program was in my sophomore year in college, as part of a Data Structures class. The program in question was a doubly-linked queue data structure, designed as a base class construct with bi-directional pointer structures to allow for FIFO queue behavior as well as bi-directional traversal of the data in the queue. I ended up doing very poorly in the class, barely squeaking out a D, and I eventually retook the class in my junior year to improve my grade, eventually earning an A. But this was the first time I really, truly understood how computers functioned.
I also sat next to someone who would become a good friend and we reminisced about Buckaroo Banzai. Which could explain the poor performance in the class. Either that or sophomores shouldn't take senior-level classes while also taking Calculus II and Chemistry II. But I digress...
What languages have you used since you started programming?This is a great question, and I loved seeing Larry's list. I had previously published an exhaustive list in my What Language Are You post. So I will only give you a quick recap.
I've programmed in a wide range of languages, most of them from school (Prolog, Modula-2, and others). I've also programmed in a half dozen languages for work, though if I consider the bulk of my work there are three core languages 85% or more of my applications were written in: COBOL85, Visual Basic (multiple versions from v4 through v2008), and C#.
What was your first professional programming gig?The Principal Financial Group in Des Moines, IA hired me fresh out of college. I was assigned to Corporate Services, a team focused on internal business processes, and I wrote applications in COBOL85, DB2, and CICS. The very first thing they did with me is retrain me to do programming the Principal way. I took classed for four weeks, learning how PFG structured applications, used copybooks, crafted JCL, and how to properly lay out a CICS screen.
I went from that working on a team building mainframe applications using Micro Focus COBOL. We experimented with host offloading, so we built, tested, and debugged our applications using the Micro Focus IDE on OS/2, replacing JCL with REXX scripts, and using IBM's DB2/2 to simulate our production databases.
The most significant lesson I learned at PFG what to get your database indexes and your WHERE clauses in alignment. I single-handedly — and completely inadvertently, I might add — consumed nearly 80% of one full CICS region on our ES7000, nearly crashing the LPAR. Indexes are important. Very, very important.
If you knew then what you know now, would you have started programming?Yes, without a doubt. Either that or I would want to be self-sufficient millionaire. Guess which would be more likely to pan out?
If there is one thing you learned along the way that you would tell new developers, what would it be?Understand the importance of "soft skills", like writing, communication, and public speaking. It turns out you have to do a lot of it in the business world: writing requirements, capturing business imperatives, and presenting project plans. Regardless of your level of seniority, everyone eventually gets involved in these tasks, and those who are particularly good at these so-called "soft skills" usually find more opportunities presented their way. A solid business acumen helps as well. Good IT departments scrutinize things and make sound decisions, and having some solid business and "soft" skills will go a long way to sound decisions are made.
What's the most fun you've ever had ... programming?This is a great question! There are so many potential answers. In my senior year of college I had three projects that really challenged me (create a floating-point calculator with addition, subtraction, and multiplication — division must have been too hard, or we didn't have enough time; create a micro-kernel processor model; and build an algorithm to process 3x3 and 4x4 matrix algebra equations). Those were fun, hard, and exhausting... but probably not the *most* fun I've had.
There were two consulting projects during my early years of Perot Systems that I really, truly had fun working on. The first was my very first PVT (Performance Volume Test, something people did routinely in the good old days and people usually shrug off nowadays; who needs to test for performance, right?). Our application processed a billion+ CDRs (Call Detail Records; some sort of sadistic thing the telecommunications industry created to make trouble for developers), and it had to process it all over a roughly 48 hour window each month. Hence, PVT was a critical, show-stopping checkbox on the project plan. And my first PVT was third-shift baby sitting at its best. We watched jobs process, compared processing times, and noted any anomalies. (We were well past bugs at this point, so stuff _rarely_ broke.) I had a great PVT team, and had a blast for the nearly two weeks we ran multiple cycles from 10m to 8am.
The second was an assignment a good friend of mine from college and I were tasked with: replicate all test LPARs (TD, T1, T2, and T3) on our OS/2 LAN to offload host cycles for compiling and testing. We used V/REXX, Micro Focus COBOL, and VB3-based application, plus some infrastructure, to pull down an entire test LPAR with a simple command prompt command. The script ran for a couple of hours. It scrubbed all data, downloaded and converted all test data files from EBCDIC to ASCII, creating ISAM, VSAM, IMS, and DB2 data structures on the OS/2 LAN, and set up database entries in Stingray IMS and DB2/2. Then it downloaded and converted *all* source code for our application (a few thousand JCL scripts, programs and copybooks), and finally stashed everything into PVCS. It took weeks to get everything in place, but once it was done we saved the development teams a good two days worth of time with a single automated command.
Who am I calling out?This is the tricky part, mainly due to the fact the meme has circulated for a few days now and most of my blogging friends and colleagues have already been called out.
Page rendered at Thursday, August 28, 2008 10:29:51 AM (Central Standard Time, UTC-06:00) © Copyright 2008 Brian Moore