My history as a programming student began only a few years ago. I've been bouncing around trying to figure out what degree I was going to decide on and computer science finally looked like the best fit for me. I already earned my AA degree at Bethany Lutheran College so most of my generals are done. I started out taking computer science classes at Normandale Community College and just transferred to the U of M last spring.
Out of all the areas of programming, and after looking over the list in the syllabus, I'd have to say my area of expertise is writing effective comments. Really, it should be the easiest part of programming. Making plain english comments about how your program works, what your functions do and what your obscure variable names stand for shouldn't even need a second thought, but all the text books remind us that programmers frequently skip that step and add them in later on as a second thought. I can't say if it's true that many programmers skip commenting since I don't really have experience reading other people's code. And so far, the small projects that I've worked on didn't really need too many comments since they were small and almost self-explanatory. But I make sure to add them in anyway. With the larger projects I'm working on in my current classes I'm very glad I got into this habit early. It helps communicate to partners what you're doing or at least trying to do, and it helps me keep my thoughts straight so I can stay on task and follow the plan I made before I started writing code.
Along with useful comments, writing easy to understand code seems like it should be easy. Simple, effective code is much more desirable than intricate, hard to read code. If you have a hard time tracing your code when you're writing it, it will be ten times as hard in a week or a month when you come back to it for updating or referencing for current projects. However, sometimes when you're struggling to get a program to work the code becomes redone over and over and confusing, hard to read code is the result. Then when it finally works the last thing you want to do is go back and clean it up since you're tired of editing and afraid you might break it again.
I think that easy to understand code will come naturally as I learn more intermediate and advanced programming. Right now I still regularly feel overwhelmed when programming since I don't have a large knowledge of programming languages or techniques. I've only been programming for a little while and still run into basic problems that come from a lack of knowledge of computing. My goal this semester is to become much more familiar with some of the core computing skills like C and C++, Unix, Linux, and probably a dozen other areas I need to improve on.
Another area I need drastic improvement in is debugging. I make plenty of mistakes and fixing the errors takes a large amount of time and frustration. Learning the different compiler error messages and what causes them along with becoming familiar with debugging programs should make programming much more enjoyable.