I have noticed that this is a frequent issue among younglings from technical areas such as ours.

In the beginning of our careers we simply don't know how to sell ourselves to our employers, and random guy #57 (who is a programmer, but not as good as you - technically) ends up getting a raise or a promotion because he knows how to communicate and market himself better than you. Many have probably seen this happen in the past, and most certainly many more will in the future.

What kind of skill/ability (either technical, or of other nature) do you think is relevant to point out when doing a job interview or asking for a raise, besides listing all the programming languages and libraries you know?


16 Answers 16


When distinguishing yourself for a job outside your current position:

  • Network locally to meet people at other companies
  • Network at national events if you get the chance
  • Do presentations
  • Write a blog
  • Contribute to an Open Source project
  • Publish a book
  • Answer questions on a site like this one
  • Show accomplishments on your resume in business terms (what problems did you solve, how much money did you save the company, etc.)

Internally the dynamics are a bit different.

First you have to get a reputation as a person who knows his stuff, who can produce good quality work under deadline stress and who can solve problems. You also often need a reputation as a team player (which means something different to managers than low level employees, more on that below).

But not only do you have to do these things, you have to make sure the people above you know you did them. So make sure to mention the things you do in team meetings, forward any emails that praise your work to your boss. If someone praises you in a conversation, ask them to tell your boss. If you have a bulletin board at work where employees praise is posted, make sure that you get on it. Make sure to introduce yourself to senior managers whenever you get the chance. Promotions are often decided at a higher level than your boss - make sure those people have heard your name in positive way. If you have a something like Yammer at work where employees can discuss business or personal related things and the whole company can join in, stick to business issues and make sure to write some interesting things that may get the attention of senior managers. They use these tools to look for talent to promote.

Be someone they can trust to deliver. Don't disappear in your cubicle dark hole and only come out when something is done. Give progress reports; bring it up as soon as possible when there is a possible delaying factor or show stopper. Admit mistakes and when you do go in with a plan to fix the problem. Find some work-related problems and go to your boss with a suggestion as to how to fix it. Be the go-to guy when everyone else is stuck.

Be a team player. This isn't just helping others on your team and mentoring although that certainly doesn't hurt. But managers expect you to support them and to support company policies in public. NEVER let your boss get blindsided by a problem you knew about. If you disagree with something (and it's not a brainstorming meeting where you are expected to discuss the pros and cons), then talk to your boss in private. And the time to disagree on a technical issue is before the decision has been made. Bringing up an issue that has been decided repeatedly (especially in public) or worse, ignoring the decision to do what you wanted to do anyway will put you on the fast track to the bottom of the promotion list.

If you have a chance to interface directly with users grab it. Those users that geeks write off as stupid often have the ear of the senior managers and impressing them can be good for your career. If you have the chance to do a special project that may involve something other than coding, grab that too. Successful special projects are a good way for senior managers to get to know your name.


Get things done.

The people that have the power to promote you will only be impressed when they see results. Simply learning many libraries won't be enough to gain you any sort of promotion. It probably will, however, gain you respect from those immediately working with you.

Also, don't think of it as 'selling' yourself. It's a case of showing that you're worth your weight in gold; this can be done by making it obvious to the higher-ups that you accomplish great work and that you're capable of achieving many things.

  • 32
    Because it ain't what you know it's who knows what you know.
    – JeffO
    Commented Mar 4, 2011 at 0:52
  • 32
    It's always great advice to just go and get stuff done. So don't take this as a criticism. But, from experience I have not seen a high correlation between that and the guys who "get the credit". I've known some guys that are so humble that the boss doesn't even know all the stuff they actually did. In programming it's easy for your work to go unseen.
    – Nicole
    Commented Mar 4, 2011 at 5:01
  • Yeah! Make it safe to work with you.
    – user2567
    Commented Mar 4, 2011 at 6:37
  • 19
    Renesis hit the nail squarely on the head. Working hard and getting things done only guarantees that one will be assigned more work. It does not guarantee that one will receive raises or promotions. There is a direct correlation between the raises that one receives and the pain that one's manager would experience if one left the organization; therefore, one needs to tie one's manager's success to that of his/her own. Commented Mar 4, 2011 at 14:52
  • 1
    Getting things done with quality you might say. Getting things done is not enough, if your output is of poor quality.
    – setzamora
    Commented Mar 24, 2011 at 9:17

Besides actually being good at what you do, you'll need to do two other things:

Prove that you actually have teh skillz

  • Your manager won't recognize this directly. Earn the respect of your co-workers by showing them that you know what you're doing. In an interview, provide skill references.
  • Tutor/teach/instruct those around you/beginners on the team. List these activities on your resume.
  • Contribute to open source projects, where people who evaluate you can go and see exactly what you know
  • Have extra curricular activities which produce interesting results, that you can talk about with your peers, boss, or interviewers

Tell the people about your skillz

  • Start a blog. Write up the problems you're faced with at work, and how you've resolved them.
  • At work, start a technical wiki. Or, contribute to it regularly if it already exists
  • Write legible documentation
  • Regularly, spend a bit of time hanging out with the support crew. Help them fix problems
  • Follow twitter feeds/news-groups/discussion groups/stackexchange sites related to your field. Make valid/useful contributions
  • Network. Networking means hanging out with people who you may not normally hang out with, who you may find it difficult to communicate with (at first). It means going out to lunch with the sales people. Or with your boss. Having drinks with one of your clients.
  • Help your mother with her computer problems. And your neighbor. Help your brothers' fiancee's mother get rid of her virus problem.
  • Volunteer. Contribute to open source projects; help a local hospital with their technical problems; go to the old-folks' home down the street, install Chrome and then teach them how to use it.
  • 9
    +1 For networking. Many "typical" programmers I know find that kind of thing completely useless, but this is exactly the reason they don't get recognized.
    – Nicole
    Commented Mar 4, 2011 at 5:38
  • Good way to get recognized, but don't hope for any form of life outside your career-related social work... Commented Apr 21, 2011 at 10:34
  • 1
    @Traroth make sure you work with people you like hanging out with. Commented Apr 21, 2011 at 18:25
  • 1
    @Traroth it's relevant, but too generic and self evident to make it into this answer, I think. No matter what you do with your life, make sure you work with people you like, doing things you enjoy, and have a lifestyle that agrees with you Commented Apr 21, 2011 at 21:31
  • 1
    +1 Write legible documentation. If other people can understand it, then you already know how to explain what you have contributed.
    – Kit Z. Fox
    Commented Jun 21, 2011 at 0:18

When most people write a resume, they concentrate on their 'features'. This is ineffective marketing. People don't buy features, they buy benefits. I don't want a drill, I want a hole!

So, craft your resume - and your attitude - to show how your skills and responsibilities led to a benefit for the client, user, and/or employer, as appropriate.

Bad Example [just feature]: 2009-2010 coded a fubar system in python on linux

Good Example [feature + benefit]: 2009-2010 designed and developed a fubar system in 3 months which reduced order turnaround time by 75% and added $3M to gross revenues in the first six months after deployment, using Python on Linux.

  • 4
    +1 for numbers. Talk to your current managers to get details on systems you built. Being able to give a future employer hard facts about what they could get if they hire you is gold. Commented Mar 21, 2011 at 2:48
  • How do you avoid the "boasting attitude" that usually comes with handing out numbers?
    – Shawn
    Commented Sep 6, 2011 at 3:55
  • 2
    @Shawn: you don't. there is an appropriate time and place for boasting, and this is it Commented Sep 7, 2011 at 5:51

Show that you are getting things done

I have seen a good many developers who get great things done, which go completely unnoticed by their higher-ups. In regards to marketing oneself, its important for a developer to develop "The art of subtly conveying his accomplishments", as and when the situation presents itself. It is a constant process which should be actively sought out and carefully without appearing to be a show off.

When it matters, prove that you actually have the skills

The emphasis is on when. It depends on a lot of factors, which you must determine based on your situation. Trying to do this too often will actually be counterproductive to you and your team-office dynamic.

Mentor only when really required

This would save your productive time and theirs thereby increase the value of mentoring.

Increase Your professional network

This would work on so many levels. For example, your increased network might be the key to your organization filling a key position with a good candidate from your valuable referral.

Show genuine interest in building relations with colleagues

People can easily spot a fake-poser. When the correct opportunity-need arises, going out of your way to assist a colleague with them being actively aware of your special-extra efforts.

Increase your online technical portfolio

This is a primary area which needs to be regularly worked upon keeping up with the current market trends, popular requirements: developer blogs, SO reputation, online apps,code samples,techical forums,articles.You know it,The whole shebang.

Making the right people passively aware (emphasis on passively) of this. Who encompass higher-ups, network, peer group, potential future prospects.

Evaluate and accept opportunities with forethought

Don't hesitate in putting effort

Lastly, but most importantly, remember

The golden, time tested facts of How to win Friends and influence people apply to ALL domains.

  • 2
    can you believe that 'How to win Friends and influence people' i start reading on google books today Commented Apr 24, 2011 at 17:18

These are the factors to be aware of:

  1. What your company can afford.
  2. Other offers that are are available to you.
  3. Other areas that are part of you position: perks, benefits, nature of the work, your immediate supervisor, time expectations, etc.


  1. Try to get a number or at least a salary range before you tell them what you are asking for.
  2. Determine what their criteria is for determining salary: years of experience, title/skill set, education, certification, etc.
  3. Communicate your opinion of how you fit in this selection process - negotiate.

Example: a Junior position is determined by years of experience and you are fresh out of school. You could 'argue' (maybe discuss?) the amount of time spent on an open source project or what you did during an internship is directly related (built a site with php) and should count for experience eventhough it was not a real job. Since they want to make sure you are a good fit, maybe you can take a lesser salary, but have a one month evaluation to see if they can justify a higher salary with a proven worker.

You have to be realistic or you'll just kill any negotiation. That's why it is important to know the going rate in your area. Try to be flexible and work for compensation in other areas because sometimes if all you talk about is salary, you could be considered too greedy.

Remember, the person you may be asking for a raise has no authority, so you need to make sure they are willing to defend your request. This is why I never worry about my boss taking any credit for my work. I want them to depend on me, so when I ask for a raise, they make sure they do what they can to keep me. Yes, you could work for an idiot that thinks they can take advantage of you, but that's why you consider other offer. Always be considering other offers, but never use that as a ploy for new money - it will backfire.

  • @Jeff, "Yes, you could work for an idiot that thinks they can take advantage of you" i hope your boss wont read this
    – Shaheer
    Commented Feb 24, 2012 at 5:19

We can discuss "soft skills" until we are blue in the face; however, nothing keeps the raises coming more steadily than the fear of having to replace a highly productive software developer. Granted, one has to reasonable about one's demands, but one should never, and I mean never let one's employer believe that one is in it for the long haul, especially when one is younger than thirty-five.

With the above said, nothing will kill a career faster than arrogance. Contrary to what most young developers may believe, they do not know more than their senior colleagues. A young developer may know more about the minutia of his/her current development platform, but the average older practitioner's overall skill set usually dwarfs that of his/her younger colleagues. Plus, the older practitioner has developed a few critical skills that all young practitioners lack; namely, patience and the ability to navigate corporate politics. Developing good software is not a technical exercise--it is a people-oriented political exercise!

Finally, there will come a day when the raises stop and one's pay stagnates or goes backwards. There is little that one can do about it except start one’s own software development firm or consultancy. It's the nature of a working in a youth-focused industry.

  • "one should never [...] let one's employer believe that one is in it for the long haul" - I disagree with that in general. It is true with some employers, but luckily not all (IMHO far from it)! But then again, I am over 35 :-) Commented Mar 4, 2011 at 8:26
  • I am over fifty; therefore, I have been in this game for a long time. The number one career killer for a young person is complacency. While I do not condone job hopping, experience has taught me that employers tend to reserve the best pay raises for employees that they are afraid of losing to the competition. Furthermore, the reason why I chose 35 as the cutoff is because that is the age at which one must start to demonstrate loyalty to an organization or risk facing permanent unemployment. It is also the age at which technical careers tend to stagnate in a corporate environment. Commented Mar 4, 2011 at 14:39
  • "It's the nature of a working in a youth-focused industry." I wonder how much longer it's gonna be youth focussed.
    – Nav
    Commented Apr 27, 2011 at 4:25

As a manager of a pretty gifted team I would say that the one thing that makes the stars truly stand out is there willingness to step out of the hardcore coding aspect of the job. Sure, we all love to write code; who doesn't? However, there is so much more to being a good developer than just being a rock star coder. Domain knowledge is key, as well as the ability and willingness to get in the trenches with the users. It's not always pleasant to have to spend time with users working through their issues but at the end of the day they're the ones that we have to keep happy. I believe this is how I was able to rise up through the ranks more so than my peers. I wasn't afraid to communicate with everyone involved in a project and I spent a lot of time really digging into the domain where I worked.

You should be an expert in the business that you are solving problems for, only then can you really write great solutions and also have the confidence to communicate with managers, make suggestions, get the creative juices flowing. Most good managers really love people who think about things and try to come up with creative solutions to hard problems. So, while it's important to have that technical depth in your technology stack and basic CS skills its just as important to have the drive to understand the business and be willing to communicate often. After awhile you will stand apart from the crowd of drone coders.


I have managed few programmers directly in last seven years. I get most comfort from a programmer who owns up the work and thus the responsibility. I don't have to follow up with for status. She can directly communicate with client. She provides intelligent alternatives to client when client is not providing right requirements or is confuse. Tries to achieve things in time by flexing the scope (and of course taking client into confidence).

Well I have not met a programmer yet who has all the above qualities but even few of them would be most comforting.


I think that you have to approach the job interview differently than you would asking for a raise.

Make each resume specific to the company you are sending it to.

List the skills as usual as this will get you pulled up by the recruiters doing the targeted searches. That said they are just a checklist item.

To get noticed for a job list out your projects and your involvement in them. This is more critical for sticking out from the other resumes dropped on the desk of the hiring manager. What makes you different? Why are you qualified?

Raises are another story:

First step is to change your mindset: You are not "entitled" to a raise.

Next step is to fully understand what is required of the next level. Always find tasks that match the description of the next level up. It is a good way of letting your boss know that you are looking to the next step by asking for the job description. Which is much more tactful then saying "Hey - when are you going to promote me?"

Make sure your boss knows what your long term plans are. If they are not a jerk they will help you get assignments that will help you get there. If they are a jerk you need to find a new job anyways - life is too short.


One of the biggest things I learned (which relates more to applying for a job than getting a raise or anything else) was Choose your skills carefully!

It's a common mistake to put everything you think you can do on your CV and send that out to as many employers as possible trying to get a job. Even if you can do all the things you say you can do, if you list proficiencies in very different areas you might end up doing more harm than good.

If you tailor your CV to the specific role or set of roles you are applying for - be it Java based roles, or .NET based roles, or web development roles - you will get a much better response than if you list every technology you ever worked with and hope they don't dismiss you as dabbling in everything and understanding little.


do you really know your market value?

This is essential, b/c when you 'ask' for a raise or perform an interview then your counterpart has to feel that you know it and that you won't settle for anything below, but that you will just move on. Do you have that confidence? Or are you afraid to lose your job or end up unemployed?

And the rest is all about women. Men who sell themselves properly get along well with women. And getting good with women is easier then getting good at job interviews, b/c women are everywhere.

Practical advices:

  • Approach at least five women sober
    during daytime and ask them out - do that for at least a month.

  • Attend a(n) (improvisational) theatre workshop to deal with stage fright.

  • Apply for other jobs and see if they are willing to pay more. If yes take the offer or take that opportuinity
    to ask for a raise. If no ... wash
    rinse repeat.

  • And just what are married men and women supposed to do?
    – HLGEM
    Commented Mar 22, 2012 at 19:52
  • improvisational theatre workshops ... :)
    – Raffael
    Commented Mar 23, 2012 at 8:32

Of course get things done as mentioned in the other questions.

Though I think other things are at least as important as get things done:

  • try to think from a business point of view, be at the forefront of solving problems that might be show stoppers
  • if you have valid criticism, express it, but do it at the right place and the right time, otherwise it may become annoying or even insulting

I guess being a good coder is one thing but being a good employee that inspires your co-workers and pushes the projects you're working on is another thing. It doesn't help anyone if you get your things done and half a year later you are not able to fix any bug within less than one month...

These qualities helped me getting raises without asking and also with getting job offers after interviews. Yeah, guess what: Employers seem to enjoy it when their employees tell them if everything is ok or not in their point of view. And yes, most companies are familiar with the problem of unmaintainable code...

Probably you should try to understand what your strengths are that differentiate you from others and improve and advertise these.


I actually just wrote a marketing plan for myself, this alone is a good exercise as it make you think it all out and figure out what things you want to do and what you don't.

The Major points I came up with were the following:

  • Keep publishing Books and work with my publisher to promote myself
  • Give talks at local user groups around TA
  • Attend Conferences if possible, give talks
  • Appear on various Podcasts about development
  • Start up a Podcast on Web Development with a friend

Of course your list will look different but that is what I came up with. And of course you want to spend some time on it every day.


This is the 16th answer to this question, so I won't rehash. I will add one simple observation:

Be random guy #57 by investing in your communications skills. Join a Toastmasters club (or start one - even at work) and leverage it to grow your communication skills, confidence, and leadership.

Try www.toastmasters.org (or google) to learn more and find a club, but here's the gist:

  • regular meetings where you practice speaking
  • well defined goals to gradually enhance communication skills
  • gain insight thru candid, positive feedback (giving and receiving)
  • multiple scenarios such as prepared speeches vs off the cuff speaking
  • meet other like-minded people and have fun
  • inexpensive, but work may even pick up the tab

read this book How to win Friends and influence people

the techniques in there are really valueable in any kind of negotiations. For example you won't gain anything from arguing, nothing from pointing fingers at others. In contrary, having the ability to get another viewpoint - and I mean a genuine one - is invaluable in determining what the other party (e.g. your new boss) really wants to hear, needs you to do for example.

Not the answer you're looking for? Browse other questions tagged or ask your own question.