Working with computers runs in my family. My dad is a Java programmer. My uncle does .NET. I have an aunt and uncle who used to own a computer store. I have a cousin who does IT work for the college campus back home.
But I never thought the same blood ran through my veins. I hated my MATLAB programming class in college; I actually had to take it twice. Nothing seemed to click. The professor, Jaqueline Huntley would respond to questions with, "Just think like a computer." That never seemed to do me any good.
I've always had a penchant for learning human languages. I loved learning Koine Greek from one of my favorite teachers, Bob Waldron, in high school, and Spanish came to me quickly as I worked in construction during high school summers and I continued studying both languages in college, attaining fluency in Spanish and feeling comfortable enough with Greek.
But computer languages seemed like an entirely different ballgame. I used to tell my dad, "I think I inherited a love of languages from you, just not computer languages."
That all started changing last fall. I started my current job around October of last year. After a few weeks of training and "go-fer" type tasks, I was given a large amount of paperwork to do. It quickly became obvious that I and everyone around me who was doing the same thing were spending hours and hours every week on really repetitive tasks. Things like always copying sections from the same Excel spreadsheet into another spreadsheet, always running the same reports, etc. Not only was it boring, it was overwhelming how much there was to get done. I never felt like I could keep on top of all the paperwork.
Enter Excel VBA! Although I didn't know how, I knew there had to be some way to speed up the process. There had to be some way to automate all of these repetitive, monotonous tasks. I began learning about Excel formulas. I had some experience here, but still had a lot to learn. After a while, it became clear that learning some VBA would be tremendously helpful. After a couple months of staying up very late watching tutorials and reading Stack Overflow posts I had the tools to create a very useful application built entirely in VBA. What began as a personal tool turned into a full-blown module used by multiple people in our office. It completely transformed the way we do a large amount of our record keeping.
All of this was somewhat of a shock to me. I never knew how fun programming could be, or how useful. I never expected programming to be the vehicle that would lead me to greater job satisfaction and more of a sense of purpose in the workplace.
Around April of this year, my manager moved me to full-time software development. The first application had been a hit, and there were countless other challenges to tackle.
While our software development "team" is basically nonexistent, there are a couple people around the plant who know how to code in VB.NET. As soon as I was moved into development full time, my coworker and long-time friend Jeremie Schloss told me that it would be helpful if I could also learn VB.NET because the applications would be cleaner than a module made with Excel VBA. VBA is just a derivative of VB, so it did not take long to learn how to code in it, using Microsoft Visual Studio.
We had just set up a new network drive at work and were zealous to maintain a well-organized structure on it, so we intended to make it mandatory that anyone wanting to add a new folder to the drive would need to utilize a special module, which I was charged with creating. That module was my first VB application. It created folders and hyperlink "bridges" between different areas of the drive, maintaining the organizational structure. Unfortunately, still being a complete novice, I somehow deleted my source code after publishing the application. In hindsight though, that may have been a good thing, as my fledgling spaghetti code was a nightmare. At times I had up to 6 nested conditional statements, and you can forget about your MVC and MVVM standards.
The more time I spent learning about VB.NET and building apps in it, the more I realized that if I wanted to have any chance of being a programmer long term, I would need to learn another, more commonly used language. What really woke me up to that was the fact that Microsoft Virtual Academy doesn't even have a course for VB anymore. The language is still around, and there are who-knows-how-many thousands of legacy apps still in use, but there's no doubt it is "going the way of all the earth".
Dad had mentioned to me that it might be a good idea to learn C#. I had seen a few snippets of C# code on the online forums and it didn't seem to be all that different from VB, so I decided to give it a try. About 3 months ago my study of the language began in earnest. I again watched a large number of tutorial videos and picked up a large book on the matter (Essential C# 6.0 by Mark Michaelis) from the Auburn University library. It made for great late-night fodder.
By far my favorite method of learning C# has been attempting the problems on ProjectEuler.com. Thus far I've solved 29 problems (as of writing this puts me in the top ~10.5% of members), using C# to solve all but a couple of them. Man, that site is really addictive. It's really impressive seeing the guys who have solved all 600-something problems, some of them using Assembly!
I have found the learning curve with C# to be no sharper than with any other language. I have already written several small applications in it at work, but I still have so much to learn. At this point it is less about syntax and more about structure. After creating Windows Forms applications for six months, transitioning to WPF and following MVVM principles has proven to be a challenge. But it's one I'm having fun taking on. I hope soon to post a book review of a digital book I bought and read in the past couple days: Learn WPF MVVM - XAML, C# and the MVVM pattern by Arnaud Weil.
Of course, I didn't even mention learning SQL in the past few months. Dad was tremendously helpful in this area. He's a database guy. Thanks in large part to his guidance, I have now built and am in charge of maintaining a few SQL Server databases. Dad says he loves doing this back-end stuff, but I'm not as convinced just yet. SQL still feels clunky to me, but I can't deny it's importance.
Anyway, this post has gone on longer than I thought it would. I hope you enjoyed it; maybe it will inspire someone else to take a leap of faith into this challenging and exciting field.
Comments
Post a Comment