Erik Nilsson  erik nilsson
Consciously take time to learn on the job. Take advantage of continuing education benefits. Buy expensive books and submit expense reimbursements for them until your boss tells you to stop. Read those expensive books. Find a mentor, someone who has been doing this for five or ten or twenty years, and ask them questions. Ask for suggestions. Ask them to look at your work. Try to find more than one mentor, so you don't burn the first one out. Attend code walkthroughs and code reviews. Volunteer your own work for review. This may be the only opportunity you'll get to examine and discuss complete work. Code reviews have a reputation for being a little harsh, and sometimes they are. Sometimes, other coders will be mean to you and belittle you. Don't take it personally: some programmers never do learn social skills. Some of my best industrial teachers were nearly devoid of social grace. Don't be one of those people, but still you will have to accept them. In any case, don't let posturing keep you away from code reviews, if you are otherwise benefiting from them.
      Once you develop some grace as a coder, you'll need to keep the objectives of the work in mind. Does this code have to be fast, compact, keep an airplane from falling out of the sky, or be done tomorrow? In my first programming job, I tried way too hard to find compact logic expressions. It had to be explained to me that all I was doing was increasing the chance of a bug, yet the size and speed savings I strove for were of no consequence. %{captionedPhoto(pix/commencement2-big.jpg,275,200,Erik Speaking)}
      It all depends on what you're making. There are levels beyond levels beyond levels. Wherever you are at, try to figure out what the next level is.
      Ask people with more experience what they struggle with, what their insights are. If you listen to people and think about what experiences and state of mind led them to say these things, you'll learn most of what you need. At the end of a workday, I like to ask myself, "what did I learn today?" It's important to be critical of your own actions when asking this question. You should have enough self-confidence to admit the mistakes you can see, and not tell yourself a big story about how it was really the right thing to do. Everyone makes mistakes every day. Find your mistakes and learn how to avoid them in the future.
      Eventually, we all realize that software is more about people than it is about code. With practice, you can look at code and see the person behind it. How about looking at a person, and seeing the code they'll write? That's one of many things managers do. Management looks easy. It's hard. Managers look fearless, even blithe. Management is terrifying. Good managers are brave and humble. Bad managers hide their fear with bluster.
      Even if you don't become a manager, you will need to take an interest in people, or else you will be limited by the amount of work you yourself can get done. If you want your value, and your income, to grow, you will need to accomplish most of your work through others.
      It is the responsibility of every senior technologist to teach. When you are senior, most good organizations will include this in your objectives. But if not, insist that it be added to your annual objectives. You have a responsibility to teach. Just like those who taught you here. Just like the people who mentored you a couple of paragraphs back, it is your duty to mentor. You don't have to be a total guru to start mentoring. Start early, when your own imperfect knowledge will make you humble, and therefore a better teacher.
      As your knowledge grows, keep the humility. It is becoming, and it makes you more effective. When people come to you with questions, make what time you can for them, and be cheerful about it. Coming to you for knowledge and advice is the highest compliment one technologist can pay another. This person is honoring you, so you should be happy.
      The wealth and flexibility of the software industry mean that, if you don't spend all your money on toys, you can take some significant time away from work, then plug back in. You may not even have to change jobs. This is a fantastic luxury.
copyright © 1999-2010, Erik Nilsson