Unlike some other careers, programming doesn’t have a well defined path. You can go in many directions and some lead to dead ends. I've been given a lot of bad advice as well as some good. This is an accumulation of the good.
Object Oriented Programming
Know and learn to apply the core fundamentals: Encapsulation, Inheritance, Encapsulation, Polymorphism, and Encapsulation. In school I was told that the main benefit of OOP was code reuse. In the workplace it seems that many people don’t apply OOP because cut and paste code reuse is “just fine”.
Some pushback comes from the idea that you will never need to reuse something; that the project you are working on is too unique. But is that an excuse to write in a way that prevents reuse? Prevents testing?
I’ve grown to view OOP as a way to allow code Use. The end product of every class should be something that is Usable. It may not be reused outside of the project, but it can now be used by another developer.
Without the fundamentals of OOP you will be building on a poor foundation, both for your career and the projects you work on.
Caveat: Understand that many of your peers will not be writing good OO code. But then neither will you.
Know your language inside and out
Or at least try. Is it static, dynamic, a little of both? This doesn’t mean memorize your framework, but understand how your language expresses itself. How does it handle memory? How do you write an event? Until you can answer these questions, you’ll want to pick up a reference book. For C# I recommend O’Reilly’s C# in a Nutshell. Mine is well worn with coffee stains. Having a small understanding of alot advanced concepts goes along way.
Learn your basic framework classes
What do you use to retrieve data from a database or an xml document? When would you want to use a data reader or a data adapter? How do you sort a List of objects? Know when you want a hash table instead of an array or list.
Build a knowledge base
If you don’t know something, know how and where to find it. It’s better to have the core concepts of what you are trying to do and not know exactly how to do it. Than it is to know a million ways to not solve the problem.
Read… a lot
The quickest way to separate you from the herd is to read outside of work. Read books, read blogs, and read your framework’s documentation. Code Complete, buy it. Consider your first year on the job just one more year of college. Except now you can afford to buy your books new. If you have a long commute think about getting an mp3 player. Not all podcasts suck. Dot Net Rocks! and Hansel Minutes are top notch. The desire to learn is greater than having the capacity.
Join a users group
Users groups have people that are interested in bettering themselves and their craft. You want to surround yourself with people like that and not with slugs. Meet people and talk about what little you do know. Also, don’t try to talk above your knowledge level, you won’t fool anyone. For a while you will have a lot to gain and little to give back, hopefully that will change over time. By teaching someone else you will solidify your own knowledge.
Own your mistakes
We all screw up. You will too. The worst thing you can do is not tell someone you did.
Stay sane
If you find yourself overwhelmed and burning out. Take a break from programming at home.