Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

closed as not constructive by Yannis Rizos Mar 27 '12 at 17:42

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

show 1 more comment

18 Answers

up vote 10 down vote accepted

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.

share|improve this answer
show 2 more comments

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.

share|improve this answer
31  
Because it ain't what you know it's who knows what you know. –  JeffO Mar 4 '11 at 0:52
3  
+1 for showing that you're worth your weight in gold. –  Mudassir Mar 4 '11 at 3:25
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. –  NickC Mar 4 '11 at 5:01
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. –  bit-twiddler Mar 4 '11 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. –  Joset Mar 24 '11 at 9:17
show 6 more comments

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.
share|improve this answer
8  
+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. –  NickC Mar 4 '11 at 5:38
1  
@Traroth make sure you work with people you like hanging out with. –  blueberryfields Apr 21 '11 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 –  blueberryfields Apr 21 '11 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. –  KitFox Jun 21 '11 at 0:18
show 4 more comments

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.

share|improve this answer
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. –  David Harkness Mar 21 '11 at 2:48
2  
@Shawn: you don't. there is an appropriate time and place for boasting, and this is it –  Steven A. Lowe Sep 7 '11 at 5:51
show 1 more comment

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.

share|improve this answer
2  
+1 Great tips. So nicely formatted! –  karlphillip Mar 20 '11 at 1:15
2  
can you believe that 'How to win Friends and influence people' i start reading on google books today –  Gupta Apr 24 '11 at 17:18
add comment

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.

Strategy:

  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.

share|improve this answer
show 2 more comments

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.

share|improve this answer
show 3 more comments

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
show 2 more comments

Gettings things done with quality.

because getting things done with poor quality is not enough to market yourself as a software developer

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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
share|improve this answer
add comment

Most of the above is good advice, and I've used variations on it over the decades I've been coding. There's one more piece of advice I didn't see up there that can reflect significantly in the quality of jobs you get, and this blog post describes it probably better than I could:

Kalzumeus - Don't call yourself a programmer

share|improve this answer
add comment

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