How To Behave At a Software Company?
dawilcox writes "I'm a recent grad and am going to begin work at a software company. I want to make a good impression on my boss and coworkers. I know that performance is usually tracked, but there are also innate personality traits of good software developers that bosses just want to have around. What are those personality traits? What should I be trying to do in order to make a good impression on the people at my work?" (Appropriate side question: What behavior traits would you like your co-workers to exhibit?)
Good hygiene and refraining from acting like a know-it-all are my two best pieces of advice. Nerd types are often (myself included) poor at those two things.
Be confident without being overconfident.
Know how to communicate and also when to leave other people alone.
Don't be too pessimistic or too optimistic when setting goals.
Don't be a pushover, but don't be a dick, either.
Be productive, positive, and competent.
Always work to improve yourself.
stop bathing
be awkward around the opposite gender
come in at noon and leave after midnight
be extremely condescending towards anyone at the company who is not an engineer
never admit that anything is your fault
drink 20 cans of free soda a day
claim to be a libertarian if you dont already
Also, read this: http://samizdat.mines.edu/howto/HowToBeAProgrammer.html
Eat lunch by yourself so that you won't be obligated to reveal personal information.
Quickest way to alienate yourself and become first on the chopping block. If everyone eats lunch in, bring your lunch too. If everyone eats lunch out, go with them. If you can't afford to eat out, make an effort; suggest Taco Bell, letting the gang know you're strapped for cash but trying to be part of the group. You're not obligated to reveal personal information at lunch, but in my experience, people who ignore any and all lunches with coworkers are viewed as snobbish loners, and their work ethic seems to be the same (they are the people that ignore meetings, ignore policies, etc).
Suggesting Taco Bell is ok... it's the aftermath that can be alienating.
Before you design for reuse, make sure to design it for use.
Uh, last software company I worked for and ate by myself... they thought I was anti-social and booted me. I'm like you though, I hate office drama so I avoid it like the plague, unfortunately... in an ironic turn, by not socializing to stay away from drama, you unfortunately can create it and draw attention to yourself.
Some random thoughts - I'm a Systems Admin/Engineer by trade, but have spent some time in the Manager's chair as well. Here's some thoughts that would have helped me for my first real job (i.e. why didn't someone tell me):
Don't act like a know-it-all, but don't be afraid to offer a concise answer if solicited. Us nerds tend to LOVE to elaborate to "make an impression". The only impression is "Thanks, now how do I shut this guy up?".
Don't be afraid to challenge your peers when your approach may be better, but know when to back down when you're out-numbered.
In a cubical farm, your voice or other odd noises carry much further than you think. Same applies for the office restroom.
Speakerphone is a privilege reserved those with an office and a closed door. (Ab)using speakerphone (esp. loudly) in a cubicle will earn many more enemies than friends. Consider a headset if you're going to be on the phone a lot and need to type or do other things with your hands.
Learn and understand your company's core values. Chances are, you hold some of these yourself or you wouldn't have been hired (at least by any competent manager). These values will help guide your management team's decisions, just in case you question their motives.
If you lied on your interview, you'll be quickly found out the moment you submit your first program. If it's a serious lie that you can't lie your way out of again, don't even bother showing up for your first day.
Learn how to comment your code, but don't do it so much that stripping them out strips 75% of the file.
Use sane variables that someone else can maintain. "a, b, foo and bar" are not sane.
Be willing to learn - always. This may involve learning OUTSIDE of your job as well.
You will be required to understand the business to a degree that helps you develop useful code. Don't be surprised if your first few weeks on the job involve training that seems initially pointless (stocking shelves, packing boxes, etc.). It will all make sense in the end, and may even help start the creative flow of "I could do that better".
Innovate or get out of the way. Complacency often gets you fired.
For some companies, continuous improvement is expected. For others, they prefer the tried and true. Don't be afraid to ride the middle if you aren't sure which one you're dealing with at first. Someone will set you straight.
Make sure your line of communication with your manager is wide open. Understand his/her expectations and deliver on what's asked. However, if the expectations are completely unreasonable, have a backbone and ensure they know why you can't rewrite Linux in a day.
This is hard at first, but employees who perform well need little management. Those who don't can expect constant management. Then again, some managers like to micro-manage anyway, especially their under-performers.
$ man woman *
-bash:
There is such a wide variety of office "culture" that general advice is hard. I think a lot of it is trial an error.. you're going to at some point piss someone off or at least do something/say something and hate yourself for it. When you do, just try and learn from it and minimize the damage as best you can.
I guess one thing I'd recommend though is that while you (being fresh out of school) probably have all kinds of great ideas on how you're going to revolutionize everything, you have to accept that companies can't just change their process with ever new graduating class. Not saying you shouldn't try to bring in new ideas.. but don't be "that guy" who spends every meeting talking about how the way things are being done is totally wrong and how pair programming and executable UML would be perfect. The guys with 20+ years of experience may be set in their ways.. but they also (probably) have a lot of experience seeing projects succeed and fail.. having some new kid throwing ideas from a textbook at them can ruffle some feathers.
If the "talk" is about work the "talk" is work. If the "talk" is about bullshit the "talk" is talk.
"Lifes too short to be the "lone wolf"."
Lifes too short to listen to bullshit.
Also, though this may be a catch-22, don't bring live things into work to eat either.
innate personality traits of good software developers that bosses just want to have around.
Have a positive can-do attitude, especially whenever the boss asks you to work evenings and weekends. What bosses love to have around are smart people who get things done and don't mind working 60 hour weeks standard (up from there whenever anything surprising happens or is badly panned) for a 40-hour salary.
Appropriate side question: What behavior traits would you like your co-workers to exhibit?
A little self-respect, and enough spine to refuse to be exploited into giving up your personal life to further your bosses ends. Every time you work long hours, you create expectations that your co-workers should work long hours too, and they will despise you for it.
Do not bring any food containers that smell like something died inside ...
But, but ... Almost all my food consists of something that died.
Yeah, there are exception, like the lettuce, tomato, etc., that are technically still alive. But, for example, the bread was made from a pile of baby wheat plants that were ground up (while still alive), then mixed with live yeast and a few other ingredients, then baked at a temperature guaranteed to kill everything in the loaf. Then we slice that up, fill it with slices of dead animals and other things. Only the lettuce leaves and the seeds inside the tomato slices are still alive; the rest is quite dead.
I've found that people tend to think that such food is very "fresh", whatever that might mean, but they're clearly wrong. It's mostly made up of things that have died in the recent past. Some of them, like the baby wheat plants, died a rather awful death by being tossed live into a grinder. Others, like the yeast in the bread, died a horrible death in a bath of steam slowly getting hotter.
Those who do study history are doomed to stand helplessly by while everyone else repeats it.
Completely right. You can socialize with your coworkers without engaging in gossip and other destructive stuff.
The concept of keeping your work separate from your life is BS. Your work is a big part of your life. You spend more time with your coworkers than with your family and significant others so you're just setting yourself up to hate your job if you avoid building relationships. I've had some annoying coworkers and I've had some great coworkers that have become good friends both inside and outside of the office. If you're office discourages you from having some fun during the day with your coworkers then I'd look for another place to work before you burn out.
The important thing is that while you can control who you hang out with after work, you don't get to control who you work with. Show the annoying guys in the office the same respect you give the coworkers who you are good friends with.
We hope your rules and wisdom choke you / Now we are one in everlasting peace
The first day, what you need to do, is find the biggest, smartest, most awesome software developer they have... and kick his ass.
No one will screw with you after that.
If you are a software engineer, and you can't afford going out for lunch, you might consider the chance of having been screwed during the salary negotiation.
I agree. At one company that I worked for, there was one programmer who just never joined the group. He was a good programmer, and a decent enough guy, but he just didn't socialize. When the company started going under, and layoffs started, he was the first to go. I'm certain it was because the Powers That Were felt (correctly) that would have the least impact on morale, compared to firing any of the rest of us.
Lots of great stuff here already, but as a corporate executive in charge of R&D, I'll put in my additional two cents worth... The first rule of business: don't take it personally. It isn't all fun and games. You're not there to make friends or have fun - you're there to do a job. Yes, ideally, on the whole, you should enjoy it - if not, you're in the wrong line of work; but there will be times that the job sucks ass no matter where you work. There will be assholes that rip on you, rightly or wrongly. Don't take it personally. Keep your spirits up and focus on the work at hand. This will get you way ahead of the rest of the crowd. Act as though time is of the essence - it is. You'll be amazed at how quickly you go from being a green kid out of college to being an old geezer like me. Don't waste your time on piddly bullshit. Work your ass off at all times - not for the company's sake, but for yours. Your life is ticking away by the minute - the only reason it doesn't seem that way is because you are young. Youth is wasted on the young - the sooner you understand why, the better off you'll be. Don't be afraid to make mistakes. Take on the hardest work you can handle, then ask for something even harder. You don't grow by taking it easy; strength comes from adversity, not comfort. If you're comfortable, you're dead. Ask for help when you need it - there is no shame in admitting that one is in way over one's head; real achievers always are. Good luck!
My advice: Do not drop references to literature you've never read.
Ironically, since he was the first to go, he probably got the best severance deal and a chance to look for a job before the rest of you guys flooded the market with your down-with-a-sinking-ship stench.
XML causes global warming.
I have been a team leader at different times so maybe I can give the bosses perspective:
There is a lot of overlap in the above. It comes down to "don't be a dope". Posting here suggests to me that your biggest problem is a lack of self confidence. Work on that by being open with people. Maybe by telling them you were the guy who posted "How to behave in a software company" on slashdot. That'l get some laughs.
The only other thing is to look out for sociopaths. Don't assume everybody you work with has a perfect personality. In practice a great many do not. I can't help you deal with these people. Sometimes they are hard to spot. A good skill it to learn not to reply to trolls. Don't let people wind you up. Getting somebody angry is a great way to beat them at something. If you are good at something you will likely get picked out for treatment early on if this kind of person is around.
http://michaelsmith.id.au
That certainly would be a white whale, to be sure!
The concept of keeping your work separate from your life is BS.
Hear hear! Your coworkers are a part of your life. They are your family at work. Just like your family at home, you weren't allowed to pick them, but you're stuck with them, so you need to learn how to like them.
I've lived and worked in Japan for most of my working life, and I just have to say that most places here get that right. Westerners wonder why Japanese workers are so loyal to the company, and there are a lot of reasons, but one of the strongest emotional/psychological ones is that many places really try to foster a real kinship. You very well might think that Kinoshita-san from 2 desks over is a jackass, but when push comes to shove, he's your jackass. Also, thanks to the boozy parties the company throws (that everyone pays for equally), you've chatted with him over beers and know that he is a super-involved dad who takes his kids out on the skiff to go fishing every weekend. You can't see him as just a jackass anymore; now he's a neat dad who happens to be a jackass at work.
At first, I resisted this culture with all my BS American individualist might, but before long I came to get it. They aren't forcing you to go to the party because they want to see what kind of stupid thing you'll say when you're drunk; they want to hang out together, and if you don't go it'll be a bummer for everyone. It's not a trick. People actually want to get to know each other. They probably won't be BFFs or anything; and the relationship will probably disappear if you transfer to another department or office, but for the time that you work together, you're doing it with people you know, and that makes all the difference in the world. When Sayama-san is going through a tough time with her husband, you cover for her--not because she's having a hard time with her husband, but because she's Sayama-san. And Sayama-san is having a hard time with her husband.
Finally, though, so much of this is predicated on the assumption that you're not going to be fired at the drop of a hat with a simple "oops, we can't afford so many people; bye." But that's another post entirely (and again, not really a socialistic post--one about not handing so much goddamned money to the people at the top so you don't have to panic every time the market changes, because you have money in the bank and tons of wiggle room in the budget).