Starting With the BASICs
My first computer class was in 7th grade where we learned to write BASIC code with the Commodore PET, and then Commodore 64 the next year. The nice thing about these 7th and 8th grade classes is that we were given free reign to develop almost anything we wanted. It was a very "loose" class where the instructor would teach certain constructs and then everyone would work on writing a game, or a menu-driven interface. The instructor (I don't remember her name) basically graded you on effort. She was there to answer questions and to audit what we were doing, but basically the entire hour of class was working in the computer lab on something. This was a lot of fun! I didn't realize until after changing majors in college twice, that "hey, maybe I can make a career out of this computer programming stuff."
I Hate COBOL
For a guy who was about to change majors for the 3rd time, I really hated school and all I wanted to do was to graduate quickly so I could get a job. A degree - that was the goal plain and simple. So, I enrolled in a Computer Information Systems (CIS) program that would allow me to earn a bachelors degree in 3 years by attending classes all year long and loading up on credit hours. Looking back, I should have pursued a Computer Science degree because I would have definitely enjoyed having more C/C++ programming classes and skip out on all of the accounting, management, and business law stuff. CIS, being a degree that is sort of a CS/business degree forced me into a world of COBOL. For many semesters I ate, drank, and puked COBOL. I hated COBOL and all I wanted to do was replace those classes with C or C++, but that didn't happen until my "junior year." After that, I swore that I would never look at another sheet of green-bar paper in my life! In fact, I still feel that way. Sometimes I wake up screaming in the middle of the night, "ahhhhhhhhhh, core dump!!!!!!!"
The First Language I Fell in Love With: C
Unfortunately, I still had to look at green-bar paper in order to complete a course in DB2 and IMS, but that only fueled my hate for COBOL. On the plus side, it fueled my interest in database programming and my appreciation for learning some new programming languages. In fact, that summer I worked at the school print shop, which gave me a lot of time to read, so I ended up reading the entire book for one of my upcoming courses: The C Programming Language by Kernighan and Ritchie. I was floored! How cool was this language?!?!?! I was so fired up to take that class. Unfortunately, the pace of that course could not move fast enough for me once it started. I was already asking questions about pointers during the first week in lab while everyone else was figuring out how to make loops and conditionals work. Fortunately, the instructor I had was a very nice guy who spent extra time with me in lab so I could work ahead. Also, another nice benefit of working in the school print shop was meeting other instructors that taught C to the EET students. One instructor lent me another C programming book that was more advanced and my appreciation for the language kept growing. I ended up purchasing that book and using it for a reference. (Note: I just went to look for it and I can't find it, nor do I recall the title.)
Object Oriented Programming With C++ and My First Job as a Developer
If you are an avid watcher of The Simpsons like I am, you know how homer reacts when he sees a giant omelet covered with a stick of butter and slices of bacon. Well, that was me when I start taking my first C++ class. We spent the first week doing a short review of constructs, pointers, and how C++ differed from C in terms of passing args by reference, etc. Then it was nothing but fun with OOP labs and data structures. At this point I wondered how anyone could enjoy programming with COBOL?!?!? The thought seems ludicrous - like some kind of sick, twisted joke. If there is a "programmer's hell" and I end up there, I'll be hacking COBOL code. COBOL is very verbose, has no concept of a function or local variable, and I still don't see the attraction. Mix this hideous language in with having to learn JCL, dealing with only dumb terminals, and it quickly becomes something very awful IMO.
Do You Know PowerBuilder and SQL Syntax? Well, You're Gonna Learn It!
So hating mainframes, I knew that I wanted a part-time job programming with C++ as an intern. The pay rate didn't matter to me, I just wanted experience and a little money so I could buy ramen noodles and have beer money for the weekend. So I went on a mission: land a part time job as a non-mainframe programmer. Back then, sending resumes by email wasn't the way it worked. I grabbed a Wednesday and Sunday paper and wrote down every single fax number for every job listing in the computer section soliciting programmers. I had a nice cover letter and a resume that was...well, probably very underwhelming. Armed with these two items and a list of fax numbers, I went to my PC and fired up my fax program which I left running all night long. In the weeks following, I received a lot of "thank you, but no thank you" letters in the mail, but I did actually manage to land two interviews! I was pumped! The first interview was with a company that did C programming on UNIX and the X-Window System. I'm not sure why they decided to interview me because it turned out that their expectations were much higher than what I written in my cover letter, but my interviewer was a really nice guy who took the time to go through their dispatching service application and thanked me for taking the time to talk with him. He also apologized for wasting my time, which I thought was very classy. But these setbacks have a way of turning around sometimes. My second interview was with a company that developed a GIS application for telephone companies (at the time) using AutoCAD as their platform. The VP in charge of development was definitely interested in having an intern work there, so I was in luck. She interviewed me and we discussed what I knew and what I did not know, and it turned out to be a very nice, open conversation and my first real opportunity to make a case for why I would be a good investment. After all, I was going to be making a whopping $10/hr! She ended up calling a few of my college instructors (from my C and C++ classes) and decided to give me the job because of my great reviews. On my first day, I was introduced to my supervisor, Sean. Sean was from Texas. He liked to talk about Texas...a lot. He, of course, had a very thick "Texas accent." In his strong accent, asked me, "Do you know PowerBuilder and SQL syntax?" To which I humbly replied, "No, I do not." To which he replied, "Well....you're gonna learn it!"
I Like PowerBuilder: It's Similar to C++ but Easier!
The first thing Sean did was give me an PBL file (PowerBuilder project) that was written by a contractor. The program she wrote was too slow and confusing to read. The project was slowly failing and he asked me to see what I could do to fix it up. The first thing I did was print out the source code and sat down for a few days familiarizing myself with this mess of a program. I was a little nervous, but I had my arms around what it was trying to do. Apparently, the $50/hr contractor that wrote this drivel had never heard of a function or comments (possible upcoming topic: "Does Mort use VB or PowerBuilder"). I went to Sean and told him I had some ideas to fix it up. He said, "well, make it happen." So I spent the next couple of weeks re-writing the program. I was blessed with a couple of really talented and friendly co-workers that lent me their SQL reference books and let me ask general PowerBuilder questions, but nobody except for me actually touched the code. When I finished, I went to Sean and showed him what I had done. He ran the application, which basically transferred data from an AS400 output file into some FoxPro databases based on some UI settings. It worked like a champ, and he called in a senior developer, Will, and asked him to sit down with me and do a code review.
My First Code Review
Will printed out my source code and read through it, and then compared it what the code that the contractor had written. He looked at me and starting laughing hysterically. I thought, "oh no, this can't be good." He then yelled out the names of the other developers on his team to come into the conference room. By this time I was just about ready to crap my pants. He said, "hey guys, check this out" and proceeded to tape the source code print-outs to the wall. He then said, "Here's what Pinah (the $50/hr contractor) wrote...it spans the height of the wall 1.5 times." Then he said, "Here's what Sean re-wrote this codebase to...it spans 1/2 the length of the wall." Continuing on he said, "Plus, the PBL file that Pinah wrote is 1MB and Sean's is 300K...and HIS WORKS!!!" At that point I received a lot of "atta boy" comments from everyone and that month I won the "Dr. GUI Office Award." This project set the stage for my career in my opinion.
AutoLISP, FoxPro, and Visual Basic
I had taught myself how to program with PowerBuilder and write T-SQL statements in just a couple of weeks. I was at least dangerous enough to get some things done for the company that hired me. From that point on, they let me work on more important projects that gave me exposure to programming with AutoLISP for AutoCAD, and programming against the AutoCAD API using Visual C++. The database we used for our software application was FoxPro. Fortunately, I didn't really have to get good at programming with FoxPro. Instead I just had to write T-SQL commands against it. However, the company was starting to explore writing GIS applications for power companies and the interface to our main API for that endeavor was going to be written in Visual Basic. Fortunately by that time, I had already taken a Visual Basic 3.0 class in college and several people at work were still getting spun up on the new version 4.0. This was where the Visual Basic train ride for me began - approximately 1996. I had already started to learn about COM using VB (note: at the time everything was called OLE, and then in version 5.0 ActiveX was all the marketing rage...but at the end of the day it was all COM). This made for some interesting abilities for creating re-usable controls and libraries. COM in Visual C++ was a much bigger endeavor and was quite confusing dealing with IDL, reference counting, etc. So, VB was quite attractive back then. Did that make me a Mort? Probably not. I cared about learning what was happening underneath the covers.
VB, VB, VB Everywhere
After I graduated, I was offered a full-time job with the company where I worked part-time for over a year. However, I was also investigating other opportunities and was offered another job by a Microsoft certified solution provider and technical education center. The main attraction to that job was that I would get to learn and play with all of the latest Microsoft technologies. I loved Visual C++ and Visual Basic and was interested in learning SQL Server and a lot of other interesting things, so I accepted their offer. That turned out to be a great decision! Not only did we write software, but we also did online training in the evenings, which forced me to get certified as an MCT and MCSD (I still am an MSDN on the new .NET track). Furthermore, we ended up working as subject matter experts for the Microsoft Mastering Group and Microsoft Press for self-paced training books. The Mastering group at Microsoft has long since disbanded. They used to have CD-based instructional courses that contained text, video, labs w/code etc. and that group was headed up by Ron Bauer (a really great guy). Some of the guys in the Mastering group pointed me to three books that I still own to this day: Programming Windows 95, Advanced Windows, and Inside Visual C++. This helped me me get create several solutions in the late 90s, but ultimately, just about all of my exposure to COM was with using Visual Basic. Additionally, I became quite the ASP programming guru and the most popular language at the time for that was VBScript. Eventually, I moved on to be a consultant and leveraged my abilities to write ASP application, develop COM components which ran in MTS/COM+ most of the time, and develop against SQL Server. So the most popular architectures (until the .NET Framework v1.0 went RTM) at that time were Web-based applications using JavaScript on the client, VBScript for the ASP pages, and COM+ components for the business logic and data access layers, and SQL Server on the back end. During that time, my favorite language, C++, took a backseat and was limited to when I needed to create things like binary behaviors, ISAPI filters, or Win32 DLLs.
Should I Move to VB.NET or C#?
Interestingly enough, that question was answered for me via company policy. I was contracting for a power company at the time that had a "C# only" rule. I had already bought Dan Appleman's Moving to VB.NET book in anticipation of many VB.NET applications being derived from existing VB6 solutions. That wasn't the case. Upgrading is almost impossible to do without a lot of work and isn't really worth it anyway. The company policy was the real reason I rarely saw VB.NET code. The only time I did see VB.NET was working with a friend on some side-gigs because he's afraid of curly braces (just kidding). Eventually I had difficulty even reading VB.NET code in MSDN Magazine after a few years of C# programming. :-)
Yeah, but what about Java!?!?! Well, being a Microsoft platform guy, I don't know it very well. Although, I think NetBeans makes it a lot more fun to play with. Still, who has time to download everything you need to develop what you can get up and running with a simple Visual Studio installation??? And then you have things you need like struts. Not my bag (right now) baby.
C# Rocks, VB.NET Doesn't
I understand why VB is still around and why some people still love it. It's easy for a novice to learn and for Mort to create apps with. It is still around because Microsoft is not stupid enough to abandon the large audience of VB developers in the world. Although this may sound kinda crazy, I still like VB6 - but I can't stand VB.NET. Why? Because comparatively speaking, there is no VB6 equivalent; not even Visual C++. You can compare C# to VB.NET though because they are both friendlier than Visual C++ (although in .NET 2.0 a lot has changed for the better) and are targeted for the .NET platform specifically. Let's face it, VB.NET is a re-invention of the language with added complexity which makes it too verbose IMO. I have mentioned all of this before. I would use VB6 today to write an Office-based or COM-based solution, but other than that, I don't have a need for it. Simply speaking, VB now reminds me of COBOL from college.

C# reminds me of C++ which is an extension of C - the first language I fell in love with. It's just a personal preference, not an assumption of who is Mort, Elvis, or Einstein - although in general a VB guy is most likely Mort.
Who knows which language is next...could be Scheme or F#. So far, it is still looking like C# up through version 3.0. :-)