Hi. My name is James Higgins and this is my blog. It will mostly be about software architecture, software engineering and related subjects because that’s what I’ve spent most of my life doing. Software development is my career, my favorite hobby and my passion.
Need Software Expertise? Whether its a custom software project or consulting services my software company can help! Please visit Original Software Solutions for details.
The Early Years
When I was ~7 I got my first computer, an Atari 400. I was one of the first people in Phoenix to get their hands on one. No one in my family was technical and I had no idea what I was doing with it but I was fascinated. I spent so much time on it and impressed my mother so much the next year, when I was 8, she somehow managed to get me into audit a community college class on BASIC. It was a night class with me and 20 or 30 adults. Since I was auditing (and 8!) I didn’t get an actual recorded grade, but the teacher graded all my work and shockingly I had the highest grade in the class.
Working with software and computers has always come naturally to me. By 7th grade I had mastered all there was related to BASIC and was getting bored so I taught myself to program in machine code. I didn’t have access to an assembler and I had a reference book that included the machine codes so I learned to write raw machine code.
Growing up there weren’t many computer classes available in school. We had one in 6th grade where I taught a bunch of other students how to do stuff they weren’t supposed to know how to do. In 7th grade there was a programming class on Apple 2s. The teacher would give out assignments meant to take 2 weeks to complete. I’d always have them done in 2-3 days so early on the teacher started giving me different assignments that were much more difficult. I did a lot harder work than everyone else but I loved it. That was a good teacher. The first day of computer class in 9th grade they gave us a pre-test which was the final from they gave the students the year before. Everyone scored less than 20% except me, I got 100%. The second day of computer class they kicked me out for knowing too much. Which ended up being cool because instead I got assigned as the TA to a different teacher who was new to teaching it and had never used a PC. He’d give a day of lecture every week or two and the rest of time I ran the computer lab and effectively taught the class (the teacher never came into the lab, ever). That was fun.
Lastly in my senior year I had a programming class that changed my life. It was a class programming in Turbo Pascal v4 on PCs. It was the first time I did anything out side of BASIC or hand-written machine code. I loved Turbo Pascal, the syntax was great (compared to BASIC) and it was much, much more capable. I got permission and started taking it home with me and spent all of my free time writing Pascal code. By half way through the semester I knew more about Turbo Pascal than the teacher did. I even started writing a bunch of reusable libraries. At the end of the school year the teacher asked me for a copy of all my code so he could use it as examples in future years.
About half way through my senior programming class Turbo Pascal v4.5 came out. It was the first version to include object oriented programming features. I had never been exposed to that before and, honestly, I had no idea what to do with it. Objects seemed weird. It took about a year for the information and concepts to quietly percolate in the back of my head before I had a Eureka moment and suddenly “got” the concept. After that I wrote everything as object oriented code.
I read an article recently intended for people first learning programming and telling them what to expect. In it the author said that there would never be a specific moment when you “got it”. I must disagree. Over the course of my experience I’ve had at least several “ah ha” moments when, quite suddenly, my perspective changed. Maybe this doesn’t happen to everyone. Maybe it only happens when massively new concepts are introduced and maybe all the massively new concepts are now in the past. I can’t say for sure. But I suspect that anyone who starts out from scratch with programming and truly devotes a substantial amount of time, effort and brain power to mastering the subject should probably expect at least one or two such moments over their career.
After high school I started college which did not go as planned. My mother was convinced that DeVry was the be all end all greatest school in the land. So, of course, I went there. It was not. DeVry is not a bad school but I was so far ahead of everyone that is just wasn’t funny. I used to get into frequent debates with the instructors because they would say something that wasn’t quite true. They would insist they were right so the next day I’d come in carrying a stack of the industry standard reference books marked and highlighted at the points that contradicted the instructor. Most of my college professors hated me. It wasn’t personal, but tuition was expensive and I figured they should at least be teaching the other students the fact correctly.
I gave up on DeVry after 3 1/2 semesters. I had found out that something like 95% of all DeVry CIS graduates went on to get jobs as COBOL programmers doing incredibly boring things. That was absolutely not for me so why be there. After that I gave the Computer Science program at ASU a shot but that went over even worse. It turns out that DeVry hires MUCH better people to teach than colleges do. My computer teachers at DeVry had been successful programming consultants, my business teacher had been a senior manager at All State with hundreds of people reporting to him. My math teacher had, literally, been a rocket scientist working for NASA. Say what you will but (at least back then) DeVry hired some really good, highly experienced people to teach. When I got to ASU none of my professors had ANY practical experience outside of academia and it showed. My computer science teacher kepts teaching things that would never, ever be practical in real world situations. It was just terrible. I was very unhappy and started wondering if there were other, better schools.
Then I found out how much Computer Science students made after graduation. It was not impressive. I already had offers for well over double the max a CS student could expect right then without a degree. So I gave up on college and began my career as a professional software developer.
Maybe I’ll get around to writing about my later experiences in the future.