Skip to main content

How I Got Into Programming

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

Popular posts from this blog

How NOT To Write Code / How To Decipher Bad Code

Confusing code is bad code. In this post I'll be talking about one of the worst coding practices: using nondescript variables. As an example, we'll be looking at a simple problem from Project Euler (#28). I'll give you an example using really bad code and then we'll look at how we can decipher it and make it more clear and understandable. First, here's the problem: Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows: 21  22 23 24  25 20   7   8   9  10 19  6   1   2 11 18   5   4   3  12 17  16 15 14  13 It can be verified that the sum of the numbers on the diagonals is 101. What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way? Ok, so now check out this solution:             int i = 1; int j = 1; int s = 0; ...

Book Review: Learn WPF MVVM - XAML, C# and the MVVM pattern by Arnaud Weil

Last week I was looking for inexpensive ways to learn about applying the MVVM pattern to WPF programming (I still am; please leave any tips in the comments section) and ran across Arnaud Weil's $10 digitial book on Amazon. It is brief, less than two hundred pages, but obviously economical and I was impressed with how interactive it was. Pros: The book teaches the user how to design a XAML page, how to use data binding, and how to set up the Model-View-View Model structure to conform to commonly accepted standards. The feature that impressed me the most was that Weil has provided a number of interactive exercises to teach you how to create a WPF-MVVM application. After each block of material, there are "Now it's your turn to code:" sections in which you are expected to create a XAML control, write a method, bind a control to a data object, etc. Afterward there is a "Solution" section in which Weil leads you step-by-step through the assignment, in ca...

Merging Files into a Single .NET Assembly

.NET assemblies can be single-file or multifile.   As I've been preparing to take Microsoft Exam 70-483, I came across the Al.exe command, a tool which is installed along with Visual Studio. Al stands for "Assembly Linker" and when you run it, it "links" different manifest or resource files together into a single assembly. If you work with .NET at all, you probably have a pretty good idea of what an assembly is, but here's a simple definition from Stack Overflow : "A chunk of (precompiled) code that can be executed by the .NET runtime environment. A .NET program consists of one or more assemblies." -Adrian Grigore Here's a more technical definition from Wikipedia :  "A compiled code library used for deployment, versioning, and security."  Normally when you create a new project in Visual Studio, VS pretty much creates the assembly for you. You don't have to worry about merging different files together using the c...