All programmers are not alike. Knowing what kind of programmer you are is crucial to finding the right kind of job. While you can probably do many different kinds of programming tasks, they won’t all turn your crank in the same manner. Doing something you don’t really enjoy is fine on a short-term basis, but you need to be interested in and excited by what you’re doing to sustain you over the long term. The best programmers are passionate about their work, and you can’t truly be passionate about something that’s only moderately interesting to you.
If you’re not sure what you like or dislike, ask yourself some questions:
Are you a systems programmer or an application developer? Systems programmers work on the code that keeps computer systems running: frameworks, tools, compilers, drivers, servers, and so on. Other programmers are their primary audience, and there’s little interaction with nonprogrammers. Application developers, on the other hand, work on the pieces that those nonprogrammers use to do their own work, and there’s often more interaction with nontechnical people.
Do you like coding user interfaces? If so, and if you’re skilled at it, consider yourself lucky. User interface design is finicky work, easy to criticize, and hard to do well, especially when internationalization and accessibility issues are taken into account.
Are you a good debugger? If you think finding problems in your own code is bad enough, imagine what it’s like to fix problems with someone else’s code. It requires strong analytical and problem-solving skills. Finding and fixing bugs can be extremely rewarding in its own right, but it’s definitely not for everyone.
Are you an architect or a coder? Every coding job includes some kind of design aspect, but certain jobs lean more one way than the other. If you enjoy the designing more than the coding, a position as a software architect might be more appealing. That said, architecture positions can involve a lot of interaction with others and little or no coding, though you need a good understanding of how to code in order to be an effective architect. Unless you take formal training in software architecture, the usual route to becoming an architect is to code first and then display an aptitude for designing and fitting together different pieces of a project.
While the preceding questions deal with the different kinds of programming that might interest you, there are also nonprogramming questions to consider:
Does management interest you? Some coders have a long-term goal of becoming a manager, but others shiver at the very thought. If management is your goal, however, you’ll need to develop leadership skills and demonstrate that you can manage the human parts of the software development equation as well as the technical pieces. If management is not your goal, look for companies with good technical career paths so you’re not forced to manage people in order to be promoted.
Do you want to work for a big company? There are advantages and disadvantages to working at big companies. For example, a large company usually offers more job stability and some kind of career path. It may also have a name brand that nontechies recognize. On the other hand, you may feel stifled by the bureaucracy, rigidness, and intercompany rivalry that is often found within bigger companies.
Do you want to work for a small company? The pay may be less, but getting in on the ground floor at a new company can ensure future advancement (and possibly substantial remuneration) as the company grows and succeeds. The downside, of course, is that most new ventures fail and you may be out of a job within a year or two.
Are open-source projects preferable? The vast majority of programming jobs have usually involved proprietary, closed-source projects, which some programmers find objectionable. There’s been a small shift in favor of more open software development, which provides more opportunities for people like yourself to participate in open-source projects and still be paid for that participation.
Do you want long-term or short-term projects? Some programmers crave change, spending a few months at most on each project. If you like short-term projects and don’t mind traveling, a gig with a consulting company might make more sense than a more conventional corporate job.
Lecture 12 Programming Abstractions Stanford >
Check this out lection of Julie Zelenski about programming abstractions in the Stanford Computer Science Department, Course (CS106B).
It’s important to realize that there are no universal answers to these questions, no right or wrong way to answer them. The more truthful you can be with yourself in answering them, however, the more likely you’ll be able to find the kind of programming job you truly enjoy. Do you understand what kind developer you are? What about your answers, do you really know clear answer on these questions?!
Best articles: .NET Web frameworks, IOC pattern, IT articles, Visual Studio 2010 Tips.