New year resolution and class choices
I must start this post by apologising to every reader. If you can recall I stated in the first post I will stick to a schedule of one post per week. But since early December I have not been posting anything, partially because of the final exams, and the rest my own laziness. Now that the new term has started, I will get back to the rule and try my best to stick to it.
That being said, this week I was not planning to write a technical post, so I thought I’d give my “New year resolution”, and a bit more about the classes I am taking this semester. If both of them do not interest you, it is fine if you just ignore this post. I will be posting something technical next week; I just don’t have a good topic in mind now.
What I want to do this year
These past few years, especially the previous one, I feel like I have advanced my skills as a software engineer most significantly. The first half wasn’t that interesting, but working at Google over the summer and coming to UNC definitely gave me a more comprehensive knowledge space of the industry, as well as a fair amount of programming in various ways. This coming year, I would like to continue to fill up what’s needed for a basic software engineer, such as system architecture, security, graphics. In the meantime, I will have more projects to work on. The projects I refer to here are not school projects that are usually throw-away. I want to make softwares that actually go public and serve users. It will be heart-breaking in the way people will hate them as they are most likely going to suck, but I maintain the point that getting into the business is the outmost priority.
Just to extend the topic of projects, I have three projects waiting to be done over the coming 4 months, ranging from standard web dev stuff, to areas where I am less comfortable, aka mobile dev. It’s kind of funny that these days when a client comes you asking for a software, rarely it is for web but almost always for smartphones. Despite what some people are saying, today mobile dev is arguably the hottest consumer facing platform, at least from my stand point.(I know this might irritate some people. Feel free to disagree with me in the comments.) By the end of this month, one of the projects are due for launch, and I will give more updates when it comes.
Just a side note, I am still taking perspective software projects for the rest of the year, for free because I don’t think I am skilled enough to charge people. If you have a job for me, feel free to contact me on Twitter @WujunaoNick. Shameless plug I know ;)
One thing I am partially interested right now and plan to expand on is large scale systems. I will talk more about this in the next bit, and I do find managing a collection of servers to handle millions of requests with order and grace fascinating. If you think about big Internet companies, Google, Amazon, Facebook, etc, this is like the building ground from them. Of course the back end algorithms are important, but making it run for millions of users with little latency over greatly varying levels of Internet connection is no less an easier job. I didn’t think much about architectures before, but this year I’d love to know more about them.
Classes I am taking this semester
Let me just list the classes first, before I talk anything about them:
Compilers
Distributed Systems
Datacenters and Programming
Serious Games
Now I understand some of these names look a bit weird under first glance, but allow me to explain. First of all, compilers are just for knowledge completeness, I will admit that. I don’t imagine myself writing any industrial compilers after I graduate. I did write a small compiler for a simplified version of Haskell two years ago in a uni project, but as said it is simple. The basic principles are the same for most programming languages, but a compiler for Java would be significantly more complex. I respect and appreciate those who wrote it all those years back, in C no less, and want to at least walk the path they had walked.
Distributed Systems and Datacenter class sort of go together. They are for the large scale system I was talking about before. Frankly I know next to nothing at the moment, but I am sure I will learn more, and I might even write a post for some facet of them in the future.
The last one, Serious Games, I admit is out of sheer curiosity. I have not done any gaming development, and I don’t plan to make it an actual career because I just can’t make beautiful things. In all honestly I took this class because I am interested in the topic, and partly because I still want to have a fair share of practical programming, given the previous three classes are more theoretical than the ones I had last semester.
Last few words
I do hope this can help you in some way, maybe in finding your knowledge “blind spots”, or just some idea about taking classes in college. If you made this far, you have my sincere thanks. Next week we will have our regular technical topic, so stay tuned.
Hope you all have a nice week!