When I was a freshman engineering student, part of the core curriculum was a computer programming class. It was a confusing and awful experience at the time, but I find myself drawn to it again. I've had a number of years to distance myself from that negative first impression, and it seems more important than ever to at least have a basic understanding of this skill.
So I've had some questions to think about:
- What platform do I target?
- What programming language do I learn?
- What do I want to build?
If this were more than a hobby to me, I'd be more careful to weigh the pros and cons of each platform; as it stands now my biggest concern is to learn the general process of software development, so maximizing any profit I might make from this is secondary. I'm ok with taking the path of least resistance.
As a result, I'm eschewing iOS and Android in favor of Microsoft's platforms. My workflow is already built around their software and services, and have heard that their development tools are top-notch. It seems like a natural place to start, so my options are to build for Windows Phone or Windows Store apps. They're both interesting, but given the major update coming to Windows Phone in April, I'm concerned there may be changes to the development process just as I'm learning it. Developing apps that run on Windows 8 tablets and PCs seems less likely to have surprises at this point, and some code can be reused if I later decide to develop for Windows Phone.
Ok. So now that I know where my apps will run, I need to figure out how to write them. Interestingly, there are actually two languages involved when developing these apps. First, there's the presentation language - the one that let's you create the interface, including the placement of pictures, buttons, entry fields, and tons of other things. Second, there's the language that actually does things with the interface you've made (i.e., what does that button do when clicked?).
C#/XAML it is.
What to Build
With those issues out of the way, I'm left to decide what to build. Unfortunately, it's too early to say with any certainty. For now I'm concentrating on very simple ideas, like a clock or note-taking app, but judging by my preliminary reading, even these ideas are trickier to implement than you might imagine.
We'll see how things progress. It definitely won't be a walk in the park, but I'm looking forward to it all the same.