Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am a new grad with what appears to be my first job lined up (1 solid offer, another place still courting me, so not sure exactly what I will be doing yet).

What advice do you wish you had when you started out? In terms of making the best impression? In terms of making sure to get the best reviews? In terms of setting oneself up for the best career growth?

share|improve this question

closed as off-topic by MichaelT, Dan Pichelman, amon, whatsisname, GlenH7 May 16 '14 at 15:04

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, Dan Pichelman, amon, whatsisname, GlenH7
If this question can be reworded to fit the rules in the help center, please edit the question.

Obligatory Joel Spolsky link (it's relevant though, or at least it might be, since you said "another place still courting me") – Pops Feb 23 '11 at 23:39
You will be working with other HUMAN BEINGS. Make sure that they like you. – Job Feb 24 '11 at 2:23
Listen here, Now that ain't working, that's the way you do it, You play the guitar on the M.T.V... – Joe Internet Feb 24 '11 at 5:10

18 Answers 18

up vote 16 down vote accepted

Some things I learned to do from school and internships that ended up working well at my full time job:

  1. Keep a legal pad and pen with you when you are new and bring it everywhere. People will be spewing lots of information at you and it's easier to just write it down and take it in overtime. You might look like a dork but you'll look like less of a dork than reasking the same question over and over again.
  2. With the same legal pad jot down the problems you are having when trying to get things to work at first. And when you do encounter a problem move on if you can. Once you have 2-4 problems written down then ask for help. That way you only interrupt a peer or mentor a couple times a day instead of every 30 minutes or so.
  3. Also, before asking a question, write it up in the form of an email. You might end up asking verbally but the process of writing an email forces you to rethink the problem differently and forces you to think about how the person on the other end might respond. Say what you want to accomplish and succinctly list everything you did that didn't work and the results of the fail attempts. You would be surprise how often you actually think of something else you should try and end up solving your own problem. If it still didn't work ask for help. You would be surprised how happy people are when you tell them what you tried. That will help them understand the problem better.

Things I wish I knew:

  1. Make sure the job is the one you want. If they try and convince you it is cool and you think it is BS. Then go with your gut. Really! You are probably right.
  2. If you want to be a developer don't start as QA or any job that has "in Test" in its title. It's harder to switch out of it. Not impossible but there are industry stigmas you'll have to overcome. I did it. I highly recommend personal programming projects to overcome the stigma.
  3. If your boss wants you to work longer hours find a way to push back politely. Sometimes you have a deadline to meet. But poor planning and/or artificial deadlines are not worth burning out over when the extra work ends up getting redone anyway.
  4. Speak up. Still a weakness of mine. But "engage" with others. Make sure people know what you are working on. If your team has a weekly or monthly tech demo see if you can present something to the team. Even if it's simple doing that sort of thing shows that you take initiative to share knowledge. It goes a long way.
share|improve this answer
I've been a programmer for, well, a long time, and I always carry a notebook. The habit showed up as a signifigant positive in my most recent review. – PSU Feb 24 '11 at 20:22

Advice I wish I had when I started:

  1. Make sure you know if there is a time sheet procedure and how often are you getting paid.
  2. Don't be afraid to ask for help after spending 10-15 minutes trying to figure something out on your own.
  3. Ask if there are conventions to research that are used as there may be some style guidelines to notice that may speed up how quickly you understand the code base. This includes what tools are used and are there any add-ons that you may need to use in your position,e.g. Resharper being an add-on to Visual Studio.
  4. Know what is your top priority and where should your main focus be at this time. Is it testing some new feature? Is it fixing a bug? Is it researching some new stuff that someone wants to add to an application? Is it troubleshooting user problems?

one of the companies I am looking at is about to engage in a major period of re-factoring of code as well, and migration to a new platform. Any advice on how to balance that change with also needing to learn the current norms?

Consider how well do you know or like each platform. If you have a preference, I'd suggest communicating this with your new boss as it could be that preference may be accommodated. For example, if you prefer the old platform then you may be tasked with re-factoring it and adding tests to the old system that isn't going to be replaced immediately. On the flip side, it may be that you get into the new platform more and just have to translate some of the old stuff. Remember to be humble and accept that this will be a learning experience and there may be more than a little pain in helping the company make the transition. While part of this is a deferring the decision to your boss, another part is to make sure you do communicate what you think and feel about each platform. You do have a responsibility to be clear in passing along what you know as who knows there may be a way to exploit that.

share|improve this answer
In regards to number 3: one of the companies I am looking at is about to engage in a major period of re-fractoring of code as well, and migration to a new platform. Any advice on how to balance that change with also needing to learn the current norms? It seems like your comments for #4 may be the best approach. – Panky Feb 23 '11 at 23:32

Im in the same boat as you man, i've been working at my new job as a Firmware Tester/Develop for the past 2 weeks.

A few words of advice: it's not as scary as it sounds, I was scared s*tless when I came in, but honestly everyone is pretty friendly and dont be afraid to ask for help. People generally are pretty helpful.

*Try to find common ground with your fellow employees, Me and this one guy talked about Battlestar Galactica for like 2 hours on my second day and he's been helping me with joy ever since. Having common ground lets you get closer to your employees, after all they probably will become your friends soon enough.

*In terms of interviews, I was told why I got the job: My personality. I am an average/intermediate programmer. I have average grades and average skills. Im by no means bad, but im not by any means an super excellent programmer. Im "decent". HOWEVER I have alot of humility and I had a great personality in the interview, I was calm and collected and I joked around with all of them and made them laugh and you could just tell the interview felt easier for them as well as myself. They must've took it as Im easy to work with.

*Don't expect too much of yourself at the beginning, I didn't know alot of stuff. Getting used to their library/API's took time, however I did spend about an hour when I got home going over stuff so that helped. Showing to your employers that you are making an effort to try and learn will go a long way.

Oh ya, and Relax Buddy! also ask alot of questions at the interview, hell I prolly asked them more than they asked me!

share|improve this answer

Compromise everything (preferred version control, preferred languages, ...) except your ethics. If your manager tells Bob you're working on A while telling you to work on C, politely but firmly insist that the two be reconciled. I had to do this, and have no regrets.

Understand that the people around you can be wrong. Your first manager may be good or bad; act accordingly. Each of your colleagues will have their own strengths and flaws; figure out what they are so you know who you can count on for what when the chips are down. I didn't really think in these terms for a couple of years.

Which leads into: know thy coworkers. Try to figure out one thing to do with each person that will give them a handle on who you are / some way to think of you outside of a technical context. Go to that lecture, try out a new gym after work, etc. And for the ones you actually work with directly, make it your goal to know one thing about each that no one else in the company realizes yet... then reciprocate, and give them a little window into your life that will help them get a handle on who they're working with. You will feel more warmly towards your coworkers when you know their little quirks; it makes them human. I only figured this one out recently, and yes, it sounds hokey, but give it a try.

At a large company, if you develop a serious illness, send HR the doctor's notes, etc., even if you don't think you'll need work accommodations or your manager says he'll work with you. Ditto if you're subjected to serious harassment from someone who has power to influence management's opinion of you. This is not an uncontroversial bit of advice, since it can make advancement within the company difficult, but if you don't do it you may be giving someone free reign to abuse you indefinitely. At a minimum, you should be aware of the existence of HR in a large company and their relevance to medical or harassment cases, so that it occurs to you to go to them if you really need to.

share|improve this answer

I have two things to say to you:

  • Experience is your best teacher.
  • Check your ego at the door.
share|improve this answer

Adapt to the organization's programming culture no matter what you believe. If they have formatting rules, testing practices, reviews, etc., that you don't agree with, don't rock the boat at this point. Just adapt.

Also, accept that even if you know better or your design is better (and your TL/manager does't understand as much about your code), American managers tend to expect you to follow the hierarchy.

And be open to criticism of your code, and to taking responsibilities when you break stuff - you will.

share|improve this answer

Understand how your activity contributes to the bottom line. If you aren't sure, then maybe it's time to look for another position. Understand your supervisor's problems, and try to reduce them, rather than adding to them. Be sure you know how you are viewed by management -- a star, acceptable, or marginal.

Continuously assess whether the position fits your goals, and know your market value.

share|improve this answer

It is no longer cheating to get help from your colleagues. Find out who the best person is to ask for different topics, and ask for help before you spend too long spinning your wheels. We all remember what it was like to be new, and even the old timers go to one another for help more than you might think.

Have someone review all your code for a while, at check ins and at major design decision milestones, even if it's not required.

Invest some time in learning your tools really well. You probably haven't used a debugger or source control much if at all. Learn how to do more than the bare basics. Get a powerful programmer's editor and learn one new keyboard shortcut per week.

share|improve this answer

First, buy a copy of The Passionate Programmer from Pragmatic.

Don't think of it as your first job out of school, think of it as your last year(s) of school. You will likely learn more of the critical day-to-day skills of your chosen profession in the next couple of years than you did in school. Seek out good people to work with, and make the most of that opportunity to learn as much as you can.

Plan on only staying in your first job 2-3 years at most, even if you like it. Don't over-stay in one place just because it's comfortable. It's good sometimes to move outside your comfort zone. That's when you grow.

Part of what you'll learn in your first job is what you do and don't like in a workplace and job. It is important to get a range of experiences in different settings early in your career, while you have the flexibility and mobility to move around.

share|improve this answer
Sorry, it's been 2 months, and I just now noticed your question. It's really a rule of thumb, I think. If you're at a big enough company, moving between teams, departments, or locations could be practically the same experience as changing jobs. Above all, just don't get complacent. – Ryan Apr 27 '11 at 4:33

Know that at some point you will probably get laid off, (it sucks) Pay down any debt you have and build up an emergency fund so when it happens you can ride it out.

Also keep a spare t-shirt and pants in your desk. Sooner or later you will get soaked walking into the office by a passing truck, or spill a soda all over yourself (or something) and trust me having a set of dry clothing can make the rest of the day much less unpleasant! Having to sit at your desk and work all day while you are cold and wet is just not much fun.

share|improve this answer
  • Have an open mind. The best jr developers that I have worked with were open to ideas and suggestions. They listened and learned.
  • Ask questions. If you don't know something spend a bit of time doing research to determine if you can figure it out on your own. Then ask someone. Don't spend too much time spinning your wheels on something.
  • Don't cowboy things. If you are asked to do something and you think it is the wrong way to go about it ask well thought out questions about what you are supposed to be doing. Then just do it, even if you don't agree with it. You don't have the experience needed yet to really argue your case and if you just do things the way you "think" they should be done you will make people angry with you.
  • Accept that everything you have learned up to this point will pretty much get thrown out the window. It will provide a good base for your future learning and it will help you to be able to move forward but is close to useless in the everyday world.
  • You will have to prove yourself. Graduating number 1 in your class means that you were smart in school and good at book learning. The people you will be working with will most likely not care.
  • Keep learning. Once you get that new job find out what tools and technologies they are using and start learning about them. The more you know the better, some day you may be able to use that knowledge in a new project.
  • Don't get into the habit of taking work home with you or working long days. While you are young it is easy to do but it will start a precedent that you don't want to have for the rest of your life. If you really have that much spare time look into taking on some side projects to expand your skills.
  • Don't forget to work on your soft skills. One of the best skills a developer can have is learning how to write out what it is that they are trying to do in a way that non-developers can read. Practice this all the time. Even if it isn't needed write it down. The more writing you do the better you will get at it.
  • Learn good testing practices from the beginning. Learning to test your work in both an automated and manual way will get you farther along in your career than you may think. Invest learning and practice time in it.
  • Read books about stuff other than programming. Read about project management, version control, the SDLC, technical writing, and that kind of stuff. Every developer needs this knowledge.
  • Give any job you get a minimum of 6 months. If you get a job and think you will hate it give it 6 months to a year before you start looking. Things may smooth out and you may be surprised.
  • Don't be afraid to leave a job. If the job isn't working out don't be afraid to start looking for something else. If you aren't happy chances are the company may not be happy with you. This is your life, do what is best for you.
  • As far as reviews go, don't sweat it. Just do your job, keep learning, keep your head down, and focus on improving your skills. When it comes time for reviews a good manager will acknowledge your improvements and give you ideas on what to focus on for the next year. Bad managers will call you names and tell you that you suck. Neither one really matter in the long run. If you have a bad manager chances are that you will be job hunting anyway. If you have a good manager then the review process is just another sit down meeting in his office where you talk about what you are working on.
share|improve this answer

I wish I had known to ask more questions during the interview phase, just to get a better feel for how the company operated and the kind of atmosphere I would be working in. I wish I had known to take all the newbie mistakes in stride, and not let making a mistake terrify and stress me too much.

share|improve this answer

Find a copy of Code Complete and read it. You will be a better programmer for having done so. If you're working at a good shop, code is king and you will be better off. If not, you'll be in a better position when you decide to look elsewhere.

share|improve this answer

1/ If you have too much work, it is not your fault, there will always be too much work, that's the way it goes. Learn to pace yourself and do the possible. Don't try to do the impossible, nobody will thank you for it, you will not get a pay rise either. Try and be clever: learn to do the essentials that matter, learn to be efficient, learn to eliminate the chaff, learn to do the job in the time that you are being paid for, learn to leave early on bad days and do more on good days.

2/ If you have too little work, it is not your fault.
Four strategies (mix and match as you please):
2.a/ask the boss what else you could do while waiting for the main task.
2.b/ ask a colleague if they could do with some help.
2.c/ find of your own free will stuff to do or learn that will benefit both you and the company.
2.d/ find another job.

3/ I don't know how much of a social guy or geek you are.
If you are on the geeker end of the scale, find ways to learn and practice social skills:
3.a/ be kind to your colleagues (always smile at them, say hello, be friendly, even if you basically don't rate them - try not to judge, there may come a day when they'll be useful or kind to you in unexpected ways).
3.b/ be helpful to your colleagues (always offer help when they need it, don't offer unwanted help, leave them alone when they need their own time, answer their requests whenever you can or find a bit of time to do so, do find time to do so).
3.c/ Listen more than you speak, but don't let that stop you voicing your opinion when you think it is appropriate (judge it well). Sometimes you might say stupid things, who does not, just learn from those. Sometimes you might shut up rather than say something important, this is a missed opportunity, try and avoid missing such opportunities.

share|improve this answer

From personal experience, the number 1 piece of advice I can give, is make sure you find the right company to work for to start.

I started with a down on it's luck, large, dying, consultancy company, in the wrong country (my own!).

I wasted a year and a half of my career - biggest mistake I ever made.

Now, some might say a big consultancy is a great place to start, thrown in at the deep end etc, and they'd be right. But you need to make sure it's the right one.

Others may recommend, a small software house, where not a moment of your time can be wasted, and they'd be right too.

So research is key!

share|improve this answer

If you are asked to do something illegal its probably time to find a new job! That would be one of the few times I would say to jump first and worry about landing later. Really you don't want to go to jail over a job.

share|improve this answer

Improving the quality of your code is only one way to increase your value to your employer.

share|improve this answer
I doubt this. We are humans, not the machines we program – Moshe Feb 24 '11 at 6:38
I think Moshe and Nathan are actually on the same page here, but it was just a slight mis-read. – Panky Feb 24 '11 at 18:18

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