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.
Do not bring any food containers that smell like something died inside to work and eat it at your desk.
disclaimer: the following is common sense
I'm an electronics tech and not a programmer, but generally people adapt to the subtleties of their employers' corporate culture. First, read Dilbert and The Art of War if you haven't already.
Second, most importantly, do not participate in gossip and compartmentalize your work and play behavior. If somebody says, "man, person x is a dumbass," just respond with a disinterested neurtral "hmm." and keep an element of mystery to yourself. It will have a snowball effect -- people will see that you aren't a loudmouth, and so they share increasingly damning information about your coworkers and the company in general. They will respect you because you know how to keep your mouth shut, and you will know more than anybody else because you are the only neutral person on the floor. Bosses will also see that you are at work to work, not jabber, and they like that. Eat lunch by yourself so that you won't be obligated to reveal personal information.
To quote the Grand Nagus from DS9, "You don't grab power, you accumulate it." Inevitably, you'll run across a player-hater. Wait for them to make a mistake and then show the boss what you did to fix their mistake. An example(I've described before) from my last job was a fellow turd of a technician who tried to boss the rest of us around while talking on the phone and doing little work himself. After he sent 2 units out the door with the same serial number, I wrote a program to throw a warning if duplicate serial numbers were entered(easy reading keystrokes using the Java robot and since all serial numbers followed a certain format). I don't like passive-aggressiveness in my personal life, but that tact is a necessity at work.
One more thing - it's helpful to mention during the interview that you're there to work, not talk. It looks good and your boss won't think you're a dick. Being unsociable may cause others to think you're a dick, so offset that by helping anybody who asks -- just watch out for the malingerers - they'll feign ignorance and ask your for help as a way to weasel you into doing their work for them.
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.
May not work for everyone
http://www.theonion.com/content/node/34387
Its the same as everywhere else in the world. Dont act like (or be) a douchebag. Socialization isn't some BlackArt.
It's easy, and requires no reconfiguration of your brain. Bonus: your current configuration drew you into studying this in school. Chances are, the same configuration is desired by software development managers.
Sincerely,
A Software Development Manager
Really, everyone knows that the best hackers are all insufferable assholes. Chopping up your wife is optional, but at least refusing to release passwords is key. BOFH is a good primer, if you're having trouble wrapping your head around the concepts, but if you need a primer, you really should reevaluate -- maybe you just don't have what it takes.
Use notepad or nano and write down everything. This way you won't have to ask more than once for something.
Admit when you don't know how to do something. Admit when you don't understand something that someone has explained to you. Most of all, admit when you have made a mistake (such as a bug in production being your fault).
I don't know what it is about software developers, but collectively we'd have to be amongst the arrogant people in the world. For some bizarre reason, we pretend that we know everything and blame someone else for our own mistakes. The best developers can recognise their own short-comings.
Always answer a request to do something unfamiliar to you with "I don't know a lot about that, but I'll give it my best shot".
And don't express your outrage at how horrible either Windows or Linux is. As a new-hire, it's not your business to make these kinds of decisions. It doesn't matter if you hate or love an OS. If they ask you to use it, USE IT and get over it.
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
Make sure the coffee pot is always full.
A lot of nerds value things like talent, transparency, and being tacit when there are no errors. And also are averse to things like small talk, self-promotion, and various shades of lying. These are all great qualities. But they are only valuable to nerds.
If you really want to get in good with someone, and you'll have to, since a work environment is a multi-faceted beast, you'll need to play their game. Am I saying you need to sacrifice the values that make you who you are? Absolutely not. Will you require some tweaking? Probably.
For instance, small talk. If you don't ping people every so often, even if you don't need them for anything work related, you will lose out on social capital. It's good to keep everyone in your sphere, so to speak, so that it's easier to ask them for things as you need. Having a purely work-related relationship with someone is so dry and inorganic. I'm not saying you have to be BFFs. But you can cultivate a personable in-work casual relationship with someone to smooth out those moments that you need them.
I'm sure a lot of other comments in this thread will elaborate on the things I've mentioned. In general, it's about working on your soft skills. To put it in RPG terms, you are an INT hero who graduated from the top of their class. You know all the spells. But guess what, this is a STR and AGI challenge and you need to work on your charisma to rope in some help. No one is taking your INT skills away from you. But you'll have to work extra hard on navigating this new game called office politics that nerds typically aren't used to, exposed to, or want in their lives.
Good luck and tread cautiously!
Do not familiarize yourself with them unless it's clear you have their approval. Take over the duty of caring for the cofee machine. If you make some snacks, doing more of them than just for yourself won't be a big strain. Show enhthusiasm in replenishing office supplies (that includes also local supplies of your coworkers). Etc.
One that hath name thou can not otter
Am I glad that I don't work with you! "I'm here to work, not talk". Ever hear of the concept of colaboration? You know, working together as a team to achieve a common goal? Normally involves this thing I like to call "communication", you do it with your mouth. The advise on avoiding gossip is good, but the rest of your post smacks of some severe personality problems. Many of my co-workers are now friends, and this is a good thing! Lifes too short to be the "lone wolf". As another counter-point, you will never get anywhere if you don't socialize. It's half gaining peoples respect for your technical ability, and half gaining their trust because they know you. Get your head out of your arse, and join in!
Those three things would put you immediately ahead of me as a coder (and ahead of 99% of the coders in the industry). And, for fucks sake, let go that stupid stapler.
Now, jokes aside, it all depends on what company you are working for. I own a small software (and hardware) company. We develop several solutions, including DVRs/NVRs, digital signage server/client solutions, and other video capturing/processing/streaming/recording/analysis devices. I look for smart, creative people that can truly think out of the box and work in a non-conventional environment. I look for good multitaskers, eager to get things done. I look for good hackers, and good hackers aren't good employees by definition.
There are companies that look for just good employees, other look for the best employees they can get considering they are looking for smart, creative people. There is no recipe for this. Working at Apple-like, Microsoft-like, Google-like, or ID-like companies is radically different.
My advice is: If you are worried about making a good impression, you will end up in management. I am the kind of person that on my first day would be worrying about what new challenges I will face, and what great problems I'll get to solve. If you are truly worried just about making a good impression, and job-security is your main concern, you belong with the soul-less bastards in management, not in IT.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
10+ years in development...
Here's what has helped me:
Learn to be more than a geek. Don't be another one of those guys that just wants to sit in his cube, write code, and be left alone. If you are, pretend you aren't. Learn the business-speak. Don't speak in acronyms all the time. Speak at stake-holders' level, but don't talk down to them.. they're not stupid, they just may not understand what you do.
What I wish I had been told:
Don't be a bitch. In other words, when you make estimates, don't be ridiculously low because you're afraid of what the stake-holder will say. And no, they won't always be nice when you tell them a number they don't want to hear. But stand your ground, intelligently (as opposed to defensively) explaining why it'll take so long/cost so much. This makes you an asset who "tells it like it is". The other way, you become a pansy with a bad rep because you're always so far off.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
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.
The answer to your question depends on your boss, actually. I've found that there are generally two types of bosses: The better kind that are intelligent, do things right, and get shit done; and the crap kind, whom are generally idiots, don't care about doing things right, and are only out to make themselves look good.
So, if you have an intelligent boss, here's your advice:
An intelligent boss respects good communication and honesty. If you inform your boss enough about the projects and solutions you are working on, he'll have a better idea of the status of whatever project you are working on. If he can answers basic questions from the 'customer' without having to bother you, you're doing it right. I find my boss greatly enjoys that I keep him informed enough about my projects that he lets me operate pretty much unsupervised. Second, always be honest, especially with your boss. If you're having a problem with someone's crap code, make sure he knows about your impediment. If you've run into a tricky problem that will take time to figure out, or you've made a mistake that's going to cause to take longer on your project, be honest with him. A late project with an honest explanation is so much better than a late project with no explanation or an on-time project that has subtle flaws that will inevitably cause problems. Lastly, be flexible. We all know it's difficult to drop what you're doing and work on something else, but your boss is generally not the one setting priorities. If he asks you to drop what you're doing, do it, and if the change of direction will cost time, let him know, politely.
Now, if you have a crap boss, here's some advice:
Keep your mouth shut, keep your head down, do what you're told, and if your boss hasn't been replaced with a better one after two years, get those resumes out. A shitty boss will do everything in his power to make sure you can't advance.
That's all I got.
~Aero
Please stop hurting America -- Jon Stewart
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.
A few life lessons that may help...
- No matter how smart you may think you are, there are others who are smarter
- In almost all cases, software provides a service to those who need to use the software for their job. So when the customer/user asks or suggests a change, resist the urge to say "Why would you need to do that?" Listen to their needs, take the advice in stride.
- Managers have their own goals and methods that often work against engineering quality (specifically cost, schedule and award fee). No matter how "right" you think you are, you will probably not change their motives or methods.
- Your career and time are valuable. Choose who you work for carefully and don't misplace your loyalty. (See previous point).
Be yourself, otherwise you'll come off as fake and no one will like you.
The most important quality of a good worker, at a software company or anywhere else, is that you show up. It doesn't matter how good your skills are if you aren't working. Wasn't it Woody Allen who said that 80% of life is just showing up?
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.
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!
And really, when it comes down to it, that's about the only way to learn how to behave in any job.
S/he can be offered all the advice in the world, and truthfully, I don't think it'll make a difference. You don't learn job-related interpersonal skills until you've had to deal with very different types of people and situations - on the job.
I don't know why s/he is sweating it... it'll come if they want improve their work life and stay employed.
But then, I'm and old coot.
Find out what you didn't learn in college but the company expects you to know and start learning. Fast.
You've probably learned a lot in college, but there are plenty of things you weren't taught that you'll eventually need to learn in order to succeed. Some of them are related to programing, a few are related the the corporate culture of the place at which you're employed, but a lot are just people skills that are acquired the hard way.
Most importantly, don't be afraid to ask for help if you're in over your head. If there's something you don't understand, ask someone else for help. It's a good way to make friends/acquaintances within the company and saves you the time of wandering around clueless. Personal initiative and a good work ethic will get you far, but when you first start out there are a lot of things you won't know or have any experience with.
Best of luck to you on your new career. Hopefully you do well and can impart some advice of your own to future generations.
Try JamesPad, it's a quick and dirty app I wrote that saves the notepad when you close the window, like old-school Mac Classic's notepad program:
http://blakeyrat.com/jamespad/
Requires Windows and .net 2.0 (I believe... some .net version.)
Comment of the year
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
You know that performance is tracked. That's only the the first step, though. You need to know how your performance is being tracked. Are you being graded on the number of bugs you solve? On the number of variances in the product? On what new features you implement? This is even more critical to know if your manager gives you a non-answer like, "We take into account a variety of factors." Ask around. Try to discover what those factors are. This isn't so that you "game" the system. This is so that you'll know what to spend time on, and what factors are of lesser importance. Spending a few hours writing great documentation isn't going to help you if your boss doesn't recognize the effort. That effort can be spent where it will be recognized, like getting started on the next bug.
Yeah, in an ideal world, you would be recognized for every activity that contributes to the product, whether its writing documentation, or fixing a bug. But you and I both know that in the real world, some things count more than others. Its important to figure what those things are and optimize your efforts for them.
We all know what to do, but we don't know how to get re-elected once we have done it
You're going to be part of a team, there's no getting away from that. How well you do depends on how well the team does and how well you fit in it. As someone who's been a dev, a team lead and a tech lead over the last 15 years (including hiring and working with many greenhorns) here's what I look for/appreciate:
1) Be confident. We hired you because we think you're smart and can do the job. Don't be afraid to speak up, and have some faith in your instincts. Show us we were right.
2) But if you need help, ask for it. Have a go at figuring it out for yourself (that's initiative) but if you're up against a brick wall come ask - most devs are never to busy to show how smart they are ;)
3) Don't be cocky. You were probably the smart kid all through school, you went to a good university and got a good degree (otherwise you wouldn't be here). We all did. Plus we have many years of experience. This might seem to conflict with rule 1, but it doesn't really - it's all about balance. What I love is someone who comes up with suggestions, what I hate is someone who won't take criticism of those suggestions or ignores advice.
4) Don't wear yourself out. There's often an instinct in my industry to try to prove yourself by working all night and trying to get more done than anyone else. In my experience it's not worth it, there's a limitless amount of work available so it'll never all be done, and even if you do get thrown a little extra cash at the end of the year it won't be enough. Set yourself some limits to protect your social and personal life, maybe it doesn't matter so much right now, but if you set those limits early in your career you'll thank yourself later - it lets those above you know what they can and cannot expect from you.
5) Be a friend. We spend more time with each other at work than we do with our families. That can really suck if you don't get along. You won't end up best buds with everyone but try to be social, get to know everyone. It makes things go more smoothly, reduces stress and gets you better reviews at the end of the year. And that means promotions :)
6) Be flexible. This is the hardest one for me personally. As somewhat of a perfectionist I hate being taken off a project before I consider it "done" - I hate having requirements change under me so my solution ends up being suboptimal. But you know what? This is the real world. Suck it up and deliver the best thing you can for the people paying your salary.
---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"
do the opposite
#1 write good code because you will someday want to look back to one thing you did 'right' (whatever that means)
#2 arrive at work immediately after your boss and leave sometime after (s)he has said 'goodbye'
#3 wake up each morning with the thought that 20 million Asians are after your job at a third the cost to your employer
#4 know that coding for someone else is like building a BMW 750Li and watching some rich guy buy it from them
#5 Ritalin is better than caffeine
#6 listen to everyone and nod appreciatively, but do what you think is right
#7 most importantly, don't pay attention to this idiot
Never set an expectation that you cannot exceed. Do that, consistently, and you'll do well.
Nobodies Prefect
Tidbits for Techs Technology Blog
I know this was mostly a joke, but here is a serious bit of advice on tooth care.
0) Floss at least once per day. If you need an incentive, here is one: your breath will smell much less bad if you do this. I don't really like to floss, but I absolutely hate my breath after even one day of skipping the flossing. It makes a difference.
1) I highly recommend a good electric toothbrush. I use a Sonicare, but presumably there are other good brands too. I just happened to start using a Sonicare one month before a cleaning/checkup at the dentist's office; the dental hygienist took one look at my teeth and said "I can already tell you are doing something different, and whatever it is, I like it." I have noticed that tooth cleaning takes less time and is less unpleasant now that I have started using the electric toothbrush. There is just less tartar attached to my teeth. Also, my gums are improved; I'm not sure what the "pocket depth" means with gums or why deeper is worse, but mine improved after I started using the electric toothbrush.
2) You might even want to use a flouride mouthwash. I use Act Restoring (stupid name, but the one I use is the one that is alcohol-based; the other Act has no alcohol). I figure killing germs in my mouth is always good, and the flouride can't hurt.
Dont break the build... EVER!
If you break the build fix it immediately (yes its 11pm, fucking well fix it)!
The uniform is:
* Sandals, with socks
* Shorts with pockets
* A T-Shirt preferably with a Tech related theme or something from popular culture. Sports themes are right out.
* Beard - if you don't have one, try to cultivate one. If you are unable to grow one, try to grow a "soul patch"
* Shaved head is optional
* Shower only on days which have a T in the name
Now, you may be too young for this approach, but aim towards it, start (I would guess, as I *am* too old) with sk8t3r-chic and work your way into the above as best you can.
"The first time I got drunk, I got married. The second time I bought a chimpanzee, after that I stayed sober" Arian Seid
Don't take credit for other peoples work and more importantly don't let others take credit for your work.
I prefer antiperspirant to avoid developing smells in the first place rather than simply trying to mask them..
which is totally what she said
Be polite.
Be efficient.
Have a plan to kill everyone you meet!
Try to be curious and helpful without being arrogant.
Curious: when someone takes time to explain something to You, listen, even if You believe that You know already. Each new explanation may bring interesting details. Additionally listening is a way to be polite.
Helpful: When a teammate of Yours is struggling with a problem, take time to understand it and try to find a solution on your side, if You come with something that works (test to be sure), offer the solution: "look, I've got something interesting here, what do You think about it?"
The key here is be sincere and modest, especially when you're the youngest in the team, consider that for a senior it is not a very comfortable situation to be rescued by a rookie. Getting your help accepted is not always easy,
Free bonus: as time will come, You shall get a reputation of someone who can solve hard problems, those everyone else given up, You'll get opportunities to work on more interesting (and challenging) parts of projects and so on.
Good luck
Too easy to ignore the loaded question there. I'll take it at face value: just work, and fuck everything else. Seriously.
Athy, athier, athiest.
I've been a programmer at the same company for 18 years now. I'm a full time employee, but work with a lot of contractors. Here's my advice: - Find out what time you're expected to be at work, then show up on time, every day. Don't arrive late and work late thinking that you'll make up for it. Your teammates might need your expertise early in the day. It's incredibly frustrating when you're in at 7:00am and need something from a coworker who "might" show up around 10:00am. If you want to work late that's fine, but do it in addition to starting early and you'll go far. And don't make a big deal about how late you worked last night. We'll all notice how late you worked from the timestamps on your emails. - Be honest about your progress. If your code is 20% complete, don't tell your boss it's 40% done. If extra help is needed, it's best to get someone else involved early. - Dress appropriately. An untucked shirt may be fine at home, but it's not going to work in the corporate world. - Act like a professional. Throwing curse words around in meetings or even in your cube really doesn't get you very far. - Own the problems that you cause. If a program abends in production due to a change I made, I'm quick to acknowledge and own the mistake. Don't throw blame somewhere else. A buddy and I once took down the entire ATM network for a large bank because we forgot about the referential integrity on one of the main tables in the database. We went straight to our boss and told him what happened. He thanked us and asked us if we'd be making that mistake again. We said no, and we never heard about the issue again. There's lots more, of course, but most of these things are common sense. The corporate world doesn't care how 'cool' you are, or how far you've gotten in whatever the latest game is, or how much beer you can drink and still write functional code.
Do not be a part of gossip.
Ensure that you use good hygiene.
Dress a little better than your counterparts.
Be quiet and withdrawn, but friendly (in other words, when you are heading to the bathroom, acknowledge coworkers with a smile and a nod, just don't go in there carrying a newspaper)
Lunch alone until someone invites you, then you don't have to go all the time, but go occasionally - same with after work engagements.
Be there before the boss and after the boss leaves.
Be positive, but not a kiss ass.
If you must bring in something to decorate your desk, keep it minimalistic (a picture or two and maybe something from your alma mater) making your desk into something that resembles a toxic waste dump crossed with a Nerf Factory is bad.
Be organized.
Read Dilbert books.
Read the Art of War (Sun Tzu)
"Be polite, be professional, but have a plan to kill everybody you meet." General James Mattis
Actually it's really, really simple.
Find out who is doing your annual review, and who is responsible for promoting you when the time is right. This is generally the same guy. Then find out what his goals are for the year.
Do whatever it takes to make this guy hit his goals, with respect to anything you are working on. If you are working on something that isn't one of this guy's measured goals, you are wasting your time (and possibly adding negative perceived value to yourself.) If this guy has a goal to get a certain package out the door, working correctly and delivered to production, by December 31st - then that is your goal.
Your goal is to have the code production ready and in the hands of the customer by Dec 31.
Not to schmooze with the cool kids.
Not to make pretty code.
Not to refactor working code code or database tables so they conform to J2EE inheritance standards or 3rd normalized database standards or whatever.
Not to come up with a cool way to reduce CPU utilization of the application by 4%.
These are tasks you may or may not accomplish on the way to your goal, but your goal is to deliver code on time, and make the manager and team look good in the process.
You do that and you will do very well in your professional pursuits.
Glonoinha the MebiByte Slayer
Im a pen clicker. It drives me mad too. I fiddle with whatever comes to hand. I often drop things when 'twirling', which can make an almighty racket when its a ruler, coat hanger or office chair.
My solutions:
Maybe clicky colleagues could be given stress balls and told to use them instead of pens./P
**TODO** Steal someone elses sig.
1. Attention to detail. It's amazing that new guys here who are veterans don't have that. A requirement will come in and they'll get 90% of it done, but either gloss over or not notice the 10% they didn't do. I take pride in my work and I would expect others to at least pay attention to detail in theirs.
2. Extra effort. I work in a small company so each cog that contributes to the team translates to a stronger company. If a customer who uses our software has an issue and it's critical, we expect someone to handle it in a timely fashion even if it means working on weekends or late into the night/morning.
3. Team player. We work in a team where I am at, and no single developer stands on their own. Everyone has their own area of expertise and we often go to each other looking for insight or help. People shouldn't be afraid to ask for help and others, time permitting, should give assistance to others. Also a big part of being a team player is offering *constructive* criticism. Don't be negative or if you do, have it lead to a positive outcome. I know a lot of developers may have foot-in-mouth syndrome (even if they don't know they do) or more destructive than constructive, but it's important to try to reach a positive result with everyone feeling better about the situation than before. Nothing destroys morale than a fly in the ointment or a nay-sayer... I do agree in logical discussions and hearing everyone out, but once a decision is made, people need to move on and not be petty.
4. Curiosity. It annoys me when someone asks for help without even trying. My general rule of thumb when it comes to helping is if you've tried solving a problem for an hour and have no measurable progress, outside help is advised. But curiosity also serves to improve something or to gain more knowledge.
5. Thoroughness. If a bug should resolve itself with a bizarre fix, why did it fix it? What is the real underlying cause? I've worked with people who say they've fixed an issue when they've just fixed the symptoms or have put a bandage on a wider problem. If you know the problem is bigger and it is important enough, why not spend the time (time permitting) and fix it the right way?
6. Take Notes!!! Nothing annoys me more than having to tell someone how to do something over and over and over again. I can understand once or twice. But beyond the 3rd or 4th is a waste of my time. If you know you're going to have a tough time remembering, take notes! Write something down or do something! Be creative!
Anyways, that's what I've come to value in developers here where I work as a lead developer.