Saturday, June 27, 2009

C++ Grinding Plans

Unfortunately, through the many years of programming, I have for the most part completely avoided unmanaged code (C++) and stuck with managed code (C# and Java). This is unfortunate for several reasons, but the main reason is that a LARGE number programming jobs want you to know C++. Why? Because it has amazing power and is much more versatile than managed code.

The two reasons I never really learned C++ is because...
  1. San Jose State University Computer Science department offers 1 (one) course on C++ and that is an intro to programming course which wasn't even added until after I was in my upper division.
  2. The way I have learned to program is by completely emerging myself in a project, but my personal projects usually lead me away from C++ for one reason or another. I usually work in C#.
One thing I should say before going on any further is that when I say "never really learned C++" I mean that I never learned the correct way to program in C++. If you count pounding on the keyboard until some sensible character sequence occurred then I suppose I did learn C++. For the last year I have taken a course on Computer Graphics using OpenGL and C++ for it, but the professor assumed that the students knew C++ and consequently we were left on our own. In a hackish manner, I taught myself how to get by - unfortunately neglecting correctness. Towards the end of the semester I decided that was going to change.

My solution began with reading C++ FAQ Lite,which has been extremely educational. In fact so much so that I went ahead and purchased the book... about 2 minutes before beginning this post. I have decided to take things to the next level. I am moving deeper into the dungeon and preparing for some high level monsters - unmanaged monsters might I add!

This is part due to the fact that I have a desire to learn C++ because I know that I cannot make it even close to level 99 programmer without knowing C++. The other reason, and much more pressing one, is that I have a phone interview (and hopefully a follow up in-person interview) with a start-up company that, if they do decide to hire me, will need me to know what I am doing. Crunch time!

As I mentioned, I have been reading lots about C++ and correctness, which is great, but I have not been getting any real XP. This is mainly due to working on other projects using C# (as always). However, I plan to change this. Starting today I am going to begin grinding through C++ and getting as much experience in it as possible (while still maintaining upkeep and efforts in my other projects).

After thinking about this for a few minutes I realized I would need something to focus on besides just C++. I need some type of project or this would never work for me. Fortunately I came up with a solution fairly quick. I am going to start working on Project Euler problems and solving them with C++. These are mathematical based questions and consequently I may do more thinking than programming. Although, I think that the qualifications of a good programmer go beyond being able to being able to simply write code and extend deep into having "Incredibly Tough" logic and problem solving skills. This is exactly what Project Euler problems will be training me in. Wish me luck! I know I'll need it - I looked ahead and some of these problems get complex!

Oh! One last thing to mention. I am going to blog about each problem I do (a way to make sure I get my thoughts completely out). So return for updates, I'm sure they'll be interesting!

A note to C++ programmers: If you see something that I can be doing better please say so. I greatly welcome any type of constructive criticism.

*saved game*

No comments:

Post a Comment