First let me clarify by defining what I mean by “selling yourself”. I don’t mean “selling out”, I mean marketing yourself, what you’re doing and what your skills are. Especially to your organization.
I don’t need to sell myself, my code speaks for itself.
Really? Do you think your pristine code says enough about your skills especially to a non or semi-technical person? Think back about how many products with fancy UIs beat out excellent products with crappy UIs. The simple fact of life is that marketing is effective and required. Imagine creating a really good product and doing no advertising at all because you think that the product speaks for itself. No one will know about how good it is and no one will buy it.
The only person who can recognize the quality of your code is another developer of equal or greater talent. Now I realize that someone of lesser skill may be able to recognize that your code is “good”, because it is easy for them to read and it looks pretty, but just like a connoisseur of fine wines can distinguish the small differences that really count, it takes a developer of significant talent to recognize excellent code from good or even great code. Being armed with this knowledge it is easy to see why your code will rarely speak for itself.
As a professional developer you have to consider your audience. Mostly the people influencing your career in development are not the highly talented developers who can appreciate your code. In my experience, it is a collective of all developers, project managers, and recruiters. Because of this audience, you must do more than write good code. That good code must be seen and the effects of it must also be seen.
It’s wrong to sell myself, it is politics, I don’t do politics, I just write code.
If it’s so wrong to do, how come so many of us do it when we are interviewing for a new job? It’s like a courtship when they guy is taking the gal out to dinner and buying her flowers and romancing her, but as soon as they get married where did the romance go? Many of us developers are just like that. We polish our resumé and go out looking for the job, dressed up in a suit and tie, presenting ourselves as professionals, but then we get the job and we settle in, we turn off the charm. It’s not wrong to keep the charm turned on, not only is it not wrong, it’s expected.
How about the politics of it? Well yes, there are politics involved in selling yourself, but thinking you can be a technical person and completely ignore politics is a sure way to dead-end you career. Most developers want to reduce the amount of political situations they have to deal with, and I agree with that, but trying to ignore the problem to just make it go away is like trying to make a hungry lion go away by closing your eyes. Even if you are the best hacker in the world people skills are important. It is my strong opinion that every professional, developer or not, should read How to Win Friends and Influence People, by Dale Carnegie.
I think there is also a large difference between tasteful marketing of a product or service and offensive or annoying marketing. Just like the XXX spam mail that shows up in your email unrequested, a developer can market themselves in an unsolicited and annoying way. On the the other hand…
There is a right or good way to market yourself.
Selling yourself tastefully takes some practice and thought. It really is a soft skill that must be acquired and thought about. It takes some amount of social engineering. Like all products, the better the product, the easier it is to market. Here are some tips I find useful for marketing yourself as a professional developer.
1. Create a weekly report of exactly what work you did each day of the week. The report should include a brief description of the major and minor accomplishments each day and perhaps a summary or highlight of any major accomplishments you did. Especially mention mentoring or helping other people. Send the weekly report voluntarily to your boss and CC your boss’s boss as an FYI. I know it’s a bit difficult to find a good way to CC your boss’s boss, but try to find a good way to do it that is tasteful. (For example, something like “I thought you might also like to receive these weekly reports I am sending out just as a FYI.” ) The benefit of doing this is two-fold. First, you will be highlighting all the good work you are doing to your boss and his boss, in a way that isn’t like “tooting your own horn.” Second, you will provide yourself a documented history of work you accomplished which is useful for reviews, protection against wrongful termination, and resume building.
2. Update your resumé periodically, and your public profiles, LinkedIn etc. By keeping your resumé constantly up-to-date, you are ready to find a job quickly if you become unemployed. This will give you a safety net, which will allow you to feel more comfortable being a professional and sometimes saying “no”. In addition, opportunities will come to you when you have your public profiles up-to-date.
3. Get a library of books and put them up for display. (Read them, or you are just faking it.) If you have a mountain of books you have read, but they are sitting in a box at home, they are not marketing you. When I walk into a developer’s office and I look at his or her books I can tell many things about them already. When managers walk by and they see someone with a large number of programming books, it says something to them about your dedication and knowledge.
4. If you have certifications frame them and put them on your wall, or on your cube. Yeah, I know it may seem cheesy, and you may get poked fun at a bit. But take it light-hearted and don’t brag about the certification, deep down inside the people poking jabs about certs really are feeling threatened they don’t have certifications.
5. Help other developers, all the time. Be they guy that everyone asks their development questions to. When someone needs help figuring something out, volunteer. Help train the junior developers. Doing this will give you a reputation of being knowledgeable and helpful. Answering questions on Stackoverflow counts towards this if you have time.
6. Prepare some power points and offer to give demonstrations or presentations on a project you did, or a new technology or methodology you want to introduce.
7. Be vocal. Make sure that you are speaking up. In meetings, in design sessions, in general have something to say. Make sure you are not talking for the sake of talking, but contribute information and ideas. Doing this will help demonstrate your knowledge and critical thinking.
8. Make occasional visits to the boss. Make sure you are being seen by management every once in a while and when you do, mention new ideas you have of ways to make your team better or more efficient. Offer to spearhead the implementation of those ideas.
9. Take some risks in order to make things better. Sometimes you have to bet big to win big. Sometimes you have to do a controversial thing, or not get permission before you do something that will greatly improve development quality or output. Increasing developer quality through creating developer tools is very valuable and very visible. Just make sure if you take a risk that if you accomplish it, it will have high returns for the company. People who do things without permission that are stupid get fired. People who do things without permission that are brilliant get praised.
The bottom line is if you’re not selling your self, you’re selling yourself short.