Well I'd be glad to know some advice from more experienced users so I can fit in smoothly :)
Stuff I wish I knew before starting my first job
Working in The Office for the first time can be overwhelming. And you'll find a ton of do's and dont's advice plastered all over the web. And most of it is good. However keep in mind the golden rule of Office politics:
Every office is different. Your mileage *will* vary. Exercise good judgment and be smart about your behavior
The first days
Most new hires feel a sort of unfounded pressure to "show talent". I think it's misguided. You don't need to swipe everyone off the floor with your awesome dev chops. What's most likely going to happen is in a couple of months or so, the big boss will ask your immediate boss "So, how's scorz?". Most likely immediate boss will answer based on how much he likes you.
It's okay if it takes you several months to become productive. If the project is difficult to get into, your teammates are perfectly aware of it.
The first months are about meeting the team and trying to fit in. For most people this is easy, but if you don't know how to go about it, here're some tips:
- Don't be the last to show up in the morning, don't be the first to leave at night. The more you spend time with them, the more you'll become one of them.
- Be present in the coffee break. Be there and talk about your life. Interact as if you're around friends. It's okay to be goofy, it's okay to be shy, it's okay to be awkward. As long as you learn to be comfortable around them.
- Go for beers/juice/arguileh/dinner with the colleagues after work. Don't wait for them to invite you. Send a team-wide email asking "Who's in for sushi after work this week?".
- Do *not* participate in office gossip. It may seem like it's a way to get accepted, but it's never healthy. Did you know that we saw the boss flirting with that waitress last thursday? Did you know that the hot secretary and Yousseff from accounting have a thing going? Just shrug and get away from the conversation. Keep it classy, and you'll avoid making the wrong enemies.
The first couple of months are more about you becoming part of the team, than they are about you showing them your ninja rockstar programmer mad skillz.
Tech stuff
You're young and impetuous, you have a lot of ideas, and spending several hours a day on Hacker News has taught you that C#/Java is your granpa's language and that all the cool kids these days should be using Erlang/MongoDB/AWS-cloud-devops-Ansible-CI stacks. This is great but
keep it to yourself. Nobody likes a new guy who starts criticizing the existing work since day 1. You will struggle with the code, you will find that some (or all) parts are horrible, there's a lot of legacy code the team is dragging around.
Do not start criticizing their work. First of all they understand the context of the app better, they have more experience with the specificities of their customers, their market, etc. And finally, nobody wants to be friend with the new obnoxious kid.
You will have the opportunity to show the team that moving to NoSQL is clearly superior
only once you've earned their respect. This time will come. And it's important you learn to identify this time when it does. But it won't be until you learned the team's way, the team's struggle, the team's crappy tools, ...
Learn to read code. One thing programming school doesn't focus enough on:
You will spend so much more time reading code than you will writing it. You will have tons and tons of lines of code to read. I've worked on patches that consisted of changing one word, but it took me reading over 1000 lines of code to identify this one word. If you're used to be the sole author of your projects, your biggest technical challenge is going to be code collaboration, and for that my advice is
Learn to read code!
Reading code:
- Is more difficult than it seems
- Takes more time than it seems
- Is the best way for you to really understand the project
- Is generally overlooked by crappy programmers, and highly valued by the senior programmers on the team
Read code, ask a lot of questions, ask some more questions, talk about the code pieces you read, and then read some more code.
Human behavior
Every office has its own share of internal politics, and I assume that you're looking for ways to avoid it. Nobody wants to be a brown-noser, and if you're not interested in licking the boss' butts all day long you have to figure out how to get out of it. The quality and quantity of office politics you need to do vary greatly across different companies and different offices, but there's always the same rule:
Technical excellency dispenses you from office politics
Be
excellent at your job and you'll never have to kiss anybody's ass. You still have to be careful around a boss, or be friendly to your team (that's human decency), but you'll never have to worry about doing anything you don't want to please anyone you don't like.
Focus on your mentor
You're assigned a mentor. This is a godsend. If you guys can develop a strong bond, you'll have such a good time there.
The good news is that everyone wants to be a mentor to a young new hire. But nobody wants to be dragged down by the lazy new bum who doesn't even try to work. So as long as you're being a good
mentee, everything should be fine.
Here are some random tips about this:
- He'll likely dump a lot of info on you the first days, it can get difficult to keep up sometimes. It's okay to forget an info he said before. It's okay to ask again. However be impeccable with the tasks he gives you. Every time you guys agree on doing something, note it down and make sure you do it on time.
- It's okay if you don't know how to do something. It's okay if some task you wanted to do is taking too much time and it'll be late. As long as you warn your mentor early enough so they're aware of it. I am never mad if a team member is struggling with a task. I hate it (with a passion) when I have to find out on the day of the deadline.
- Constantly ask for feedback. If he has formed an opinion on you, you want to be aware of it. If he thinks that your weakness is X, you want to know that as early as possible.
- Be proactive. He probably doesn't have the time/energy/will to have a full course of actions tailored to your profile. Instead he'll probably give you enough tasks here and there to cover about 40% of your time. It's your responsibility to take initiatives. When you're done with your tasks, you don't sit around the office and wait. You open the issue tracker, you pick one, you start reading, you take initiatives, you ask questions, you review proposed code, you ask people how can you help, ... Everyone appreciates a new guy who takes initiatives. Be prepared to be shot down most of the time, it's fine. As long as you show the team (and your mentor) you're hear to learn and to do stuff.
Last highlighted rule before I leave you:
There are 2 kind of people in an office: Those who are spending enough time in the office to justify their salary at the end of the month, and those who go in the office to actually work. Everyone knows which category you're in, and trust me, people in the second category generally are happier.
Text got too long, ideas are disorganized, would've loved to be more concise. Hope it helps and I don't mind extending the discussion if you have more questions.