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.
Be sure you're shaved, clean and don't smell. Don't wear wrinkly clothes even though they don't technically increase your compile times. Also, don't be a know it all. I learned the hard way that telling everyone their product is a piece of shit, on the first day, is not the way to win any friends. And neither is crushing your lesser educated colleagues for sport.
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
And don't be such a kiss ass.
If you mod me down the terrorists will have won
It depends a lot on the industry, the demographics of the work place, and the company's customers! All of the above are great tips. Try to get a feel for other people's interests, their work ethics, their dress and appearance, and their level of self-expression, and try to emulate it. I've worked at ma and pa telcos where ties and sparkling clean desks are unspoken mandatory, trading firms where just talking to another employee can spark a random stress meltdown, as well as government contracting companies where people wear jeans and have nerf gun fights. Be yourself - just get a feel for how much of yourself you can be.
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?
But anyways:
- Try to keep your trap shut and listen instead
- Volunteer for shits people don't wanna do
- Put some extra hours, but just a little so that it won't piss off others
- Try to be dependable, rather than brilliant
- Don't even think about the hotties at the marketing
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
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.
You can't fake a whole different personality, it's simply not possible to sustain for any length of time.
Of course a bit of positive self-evaluation does everyone a bit of good - don't dwell on your mistakes but try to learn from them. Try to identify your personal pecadillos, and try not to let them act against your own self-interest.
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:
- Don't be a know it all!
Biggest one socially dysfunctional nerds have a problem with. Just because you have perfect memory of an API doesn't mean you should start correcting people. Memorizing some shit correctly is not the same as being able to architect a system or delivery a project. The little bit of knowledge you have has very little value. An older guy may not know python but he certainly knows how to get something done.
- Don't complain
- Take initiative but learn when to ask for help. You gotta figure out the balance between giving something a good faith try and aborting wasteful activity in order to find out the proper way to do something.
- Have a sense of humor. Know one will work with you, talk well about you, give you good reviews, push your for promotion if they don't like you and can't stand to work with you.
Being pleasant to work with is more important than technical skill. Being pleasant to work with is more important than technical skill. Being pleasant to work with is more important than technical skill.
That has to be repeated.
- Hygiene. Just don't smell bad. Shave and dress up if meeting with a customer or higher up
Adapting to a new work environment is tough for me and even to maintain it. I have asperger syndrome and the main part of that involves being socially inept. Lacking in certain social skills which are necessary in today's corporate environment. Teamwork is one of the big ones
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.
Be yourself, if they don't like you, chances are you don't like them either and should be working somewhere else anyway.
Don't lie about what you know. I.e. it's better to say "I don't know but I can find out." rather that pulling something out of your ass.
Don't complain about anything unless you can also offer a solution to the problem.
Do good work. Figure out what the company considers "good." I.e. some companies value speed of development, others value high-quality.
Never, ever take offense when someone points out a bug in your code. If there's a 'real' bug thank the person who found it, after all they are improving on your work. If it's a not a real bug work with them to figure out why they were mistaken (bad documentation? Not trained enough on what it's supposed to do?)
Social skills help. But don't be a phony.
Manage up. If you think you deserve something from your boss, and they won't give it to you, work out a plan to get it. (If you want a promotion, work out with your boss what he needs to see before he can promote you. Work out a plan with you boss to meet those goals.)
Hopefully you get the idea. Basically you should always try to improve the situation for everyone, not just yourself.
Until you reach middle-management. And then the knives come out and it's best to be a complete sociopath.
Corollary to Hanlon's razor: Any significantly advanced stupidity is indistinguishable from malice.
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.
I always like when staff show some initiative in looking for solutions to problems themselves instead of waiting to be told what to do. Also don't be afraid to speak up when you come up with better solutions than the ones currently known to the team. There is always room for improvement.
Not being a know it all should be easy, you'll need to become familiar with the culture, tools, and goals of your team. But try to maintain high energy. If you finish your work early, ask someone nearby if he or she has time to pass off some of their work on to you, so you can (1) help him or her and (2) improve your skillset. There's nothing more frustrating for me than trying to work with someone who's stuck in their role and refuses to improve.
Keep your distance, but don't look like you're keeping your distance.
Fly casual.
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!
it almost sounds like you're asking how you should pretend to be. Nothing wrong with adapting, just don't try to be something that you're not, or give people a false impression of yourself. If your true personality and behavior don't mesh with those you work with, unless you can make permanent changes, it's a waste of time.
I work for the Department of Redundancy Department.
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.
http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html
...leave your bias at the door. This is a problem in all tech companies and IT divisions, so consider this generic advice. You will find that many techs have a strong bias against some tech or for some other tech; don't fall in to this trap! You limit your options when you begin making objective decisions with subjective data.
Instead, accept all input and evaluate it for yourself. This is something many old timers seem to have lost the ability to do. Sadly, many of the kids we get out of college don't understand the distinction and thus, follow the old timer's leads.
But I'll tell you right now; you make objective decisions with objective metrics and data, you will really set yourself apart from your peers. You won't always be right, but at least when you are wrong you'll feel better knowing your decision making process is sound.
Mod me down with all of your hatred and your journey towards the dark side will be complete!
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
:( First of all: I know how I felt when I was in your place. My first real job: a 1500 people company, which was part of 3 large companies who all had 5-digit internal phone numbers.
But I will take the shortcut and move right to the end:
Don’t ask others how to behave and how to be. Don’t let others define your sense of reality, of right and wrong, and of morale.
Build your OWN system of values. This is extremely important. But somehow we geeks are expected to be the beta humans in school and everywhere. So we act like that. But that’s completely arbitrary. We don’t have to. Just define what you think is right and wrong. What you think you are and want to be. How you want to behave.
But beware, since everything we start out with, is usually socially conditioned into us. So before deciding on something, give it some thought, and do a reality check. Often you will find that physical reality is very different from what we thought was right all our life. (Like this “geeks are not the cool guys” thing.)
If you have build your own system of values, you do not have to ask others for right and wrong anymore. You know it yourself. And you know what you accept and what you don’t accept. And they can’t mold you into their “cattle”.
This “standing by your rules” is very important, if you ever in life want to be dominant in anything at all.
So learn to say no as early as possible. To establish what you accept.
And don’t fear that they would not like you anymore, if you don’t go on your knees and suck their dicks. As people who have a spine are always the ones who are more respected and successful.
Now of course this doesn’t mean going into the other extreme and being a dick, or telling your boss to go fuck himself over irrelevant shit.
Just establish an equal relationship of fairness, and acceptance for each other.
One example: In summer, I usually wear good looking airy clothes, and either wear expensive flipflops or go barefoot. I make it look good and clean. (Ok, I also usually work in clean areas.) So my rule for the summer is that I walk barefoot, at least indoors. Except maybe when clients come in who would be prejudiced and this risking the deal. I want our company to succeed (obviously). But other than the exception, this is a rule. And I stand by it.
The reason I could do this, was that I established value. I was valuable.
And now guess what made me valuable: The fact that I didn’t do everything for my boss, and didn’t do anything for free.
Someone who always says yes and amen, IS going to be abused, because one can take everything from him for free.
Especially dominant people (like your boss) understand other dominant people. And in a job this creates a bit of a friendly/jokingly “fight” for power. As long as you see it as fun, and respect him, he will usually do the same. Which is why the fear that he might hate that he can’t abuse you, is just a misunderstanding.
Oh, and don’t worry too much. Only if you accept that you are valuable and that things will become great, can they become great. :)
Any sufficiently advanced intelligence is indistinguishable from stupidity.
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
Make sure you socialise across any groups that are in your workforce. Do not hid this fact from fractions that dont get along, both sides will still respect you so long as you do not gosip about them.
Never be caught agreeing to or patcipating in gosip, just a quit 'uhur'. Plausible deniability works wonders, espicaly across the above mentioned fractions. Baicly listen to, but keep your mouth shut. This bonds you to the speeker of said gosip in your favor.
Where ever posible share in socal activeis with coworkers, even if its just lunch. *Do* talk to other staff mebers about your life and thier own.
However at the end of the day, you will not get along with everyone, dont push your self on that one person who for what ever reason dosn't like you, they will either come around or not. You can not make them like you. But by behaving and acting at lest nice, you can earn a usable amount of respect.
In one job I worked 3 years next to a staff member who if they where on fire, I would of run to the nerest gas station and goten more fule for. This lady left on her fianly day not knowing that I hated her guts, and infact after she left and still visited it took over 9 months for me to let it slip that I hated her guts.
That was a minor mistake, and thankfully didnt come back to haunt me.
You have 5 Moderator Points!
Which Helpless Linux zealot/MS basher do you want to mod down today?
Particularly technology news and discussion sites.
Just sayin'.
.
Prisencolinensinainciusol. Ol Rait!
assume that at any point, you, in fact could be wrong. be prepared to back up anything you offer as "truth". be prepared to analyze what other people offer as "truth".
Always keep in mind you might be talking to a future boss. A person at a previous employer started next to me when they came out of training. Eventually they became my boss. Then they moved up even further in the leadership chain. It always helped that they liked me.
I have bad news for you... Workplaces (any workplace) have people inside. :-) And each person is different from the others.
Your workplace will be the sum of everyone involved. Of course it's not an arithmetic mean - it's a weighted one, where your boss, your boss' bosses and some other people have a higher rank, but where you still need the input of everyone else to succeed.
Yes, for sure there are a lot of things that are similar in every place. It's not that simple to me, as a brazilian, to tell you what these things are, because our cultures are similar, but still very different. Our values, things that are socially accepted, are just not the same. But I saw a lot of good advices up there: be a nice person without being dumb or used, avoid gossips at all cost, be careful to not reveal things you could regret later, learn to know people well before saying too much. Respect everyone - from the cleaning guy to the president / general manager / whatever. And remember that you are in a workplace, not in college anymore - so you need to work more and play less, and depending of the company climate, don't play at all.
Another question is the size of the company... I've worked for a big, big american multinational here in Brazil - I just changed jobs for a stable, long-term public job because I'm approaching the 40's and it's time to be sure I'll have a job until my retirement - and a good retirement too. But in the years I was at that company I've learned a lot, because my previous jobs were in small companies, where you can be yourself all the time and you know everyone. But in bigger (or enormous) companies, you must settle down first. Know the people around you, know your manager (this is a keypoint!!! ) and try to please him/her, but NOT by getting your nose brown in the process, but by just learning to work like he thinks you should. Remember, HE is your "real", immediate boss, he will be the one who will give your evaluations. So, if he wants to be informed more often about the project, inform him; if he want you to document the project better, do that. It's simple when you just try, and it makes sense - after all, you work for him. But, at the same time, if he seems to be open for that, express your opinions in a respectful way. Suggest things, ask him what he thinks of this or that idea, and learn to show your potential. As I said, it depends on the people around you, and you need to know them first.
And as a no-no, I can point you some weird advices I saw in some previous posts, and one in particular. Do NOT avoid contact, do NOT avoid socialization, do NOT try to screw someone. You will be seen as a smart-ass, no-teamplayer, social-impaired person in the first cases, and as a dangerous, vinditive person in the later. Anyhow, people will soon try to get you booted becuase you add nothing and poses a threat to them. And your manager, too, will see you as a liability to the team's integrity.
But, as you will see, in the end you will not follow any advices here, because you, too, is a person. And as such you will act as your personality tells you to, because it's impossible to be someone else all the time. :-) With the time you will change, adapt, grow and be a more mature professional. This is how things work, or at least as they worked for me.
Good luck!
--- Illogical Spock
What do I mean by "act like a consultant"?
I mean having the attitude that you are in business for yourself and the customer is always right. If your immediate supervisor brings a superiority attitude and gives you menial work, your attitude should be simply one of clarification and commitment, "OK, so you want me to do X in Y amount of time. Did you want me to do it using the A or B tool?" Thinking as a consultant, you just made a sale. You just got "rehired" in miniature and you have an opportunity to demonstrate good work in order to get "rehired" again.
A common trap is to start believing that you must work on a project using technology X or else your skills will be out of date and you'll never get another job. This is a vicious trap because then you try to start negotiating with your supervisor with this hidden agenda of personal career advancement, which is at cross-purposes of getting the job done. It also rarely pays off. Any technology that bleeding edge is going to become commonplace within a year anyway, and you have to start over with another new bleeding edge technology, in a vicious cycle. Or, if it's an old but highly niched technology, OK, you might be able to command a high rate, but then you'll be flying across the country for three-month gigs because no one is willing to sustain the high pay rate. So what if you become a dinosaur? There's as much money if not more to be made working with old technologies.
Think like a consultant. If you need X time to complete a task, stick to your time estimate. Or ask if you're expected to work overtime, intonating that you are willing to. If you need Y people to help you, say so, but not unless you really need it. That's how you move up to team lead -- by taking on and successfully completing increasingly more complex tasks until eventually you need a team, with you as the lead, to do it.
By acting like a consultant, you avoid office politics, death marches (or at least being held responsible for death marches), and emotional and verbal abuse from supervisors and peers. When, as a consultant, you give honest time estimates, honest assessments of your capabilities, and frequent and timely status updates, there is no such thing as failure. At worst, your skills might not "fit" with the company's needs, but you won't be blamed in an insulting or humiliating way. And usually, you'll get the job done and your honesty and communication will create a memorable positive experience for your supervisors, and your professionalism will do the same with your peers and team members.
Don't be afraid to say "I don't know."
Corollary: If you don't know, make sure you say "I don't know."
If you going to be an advocate...don't regurgitate the marketing material of the company producing the software/service/hardware that your advocating.
You will progress in your career according to your social skills.
Many years ago (back when they made test instruments and work stations) HP did a survey to see if they could figure out what were the best educational qualifications for their employees. Should they insist on Masters degrees, should they be shopping for PHds? Should they insist on high academic averages, were certain schools better? They found no correlation between employee performance and educational attainment. In fact, they found that a high IQ was often bad for career advancement. Once employees had the minimum qualifications to do a job, it didn't matter where they went to school or what their marks were or if they had higher degrees. The only thing they found that mattered was that the employees who hung around the water cooler did better.
Study after study has corroborated the above findings. The first one I am aware of was done by the US Navy during WW2. Some later ones are cited by Malcolm Gladwell in his book Outliers.
Work on those social skills, develop them. Socialize widely. Try to know everyone and try to be on good terms with all of them. Try to develop contacts within the industry. Be a team player. If you (as I suspect) have poor social skills and don't know where to start, you might try "How to Win Friends and Influence People" by Dale Carnegie wiki. See a shrink, get a counselor. If you have no clue, find someone who does.
There is [organizationally-dependant almost] as much variation in bosses as there is in workers. However, the things you might find interesting or bothersome in a co-worker change emphasis in a boss.
Two important vectors in a boss are how much are they concerned about pleasing their superiors and how much are they concerned with helping/protecting their people. Look-up versus look-down. They should not be mutually exclusive, but sometimes are.
How you deal with a boss needs to consider who _they_ are, particularly where they are on the look-up and look-down scales.
* Most real code is depressingly ugly. For the most part this is something to note, try to do better at, and not comment on. Commenting on it is typically at best futile -- no one is going to pay to refactor shitty code if it works, and at worst you might comment to the guy who wrote it, or his best friend . . . and even when I KNOW I've written ugly code, I don't need a kid pointing it out when he wasn't there at 3 AM the morning of the delivery. And if I'm bad enough as a coder that I don't know that, pointing it out won't make me better, and will make me dislike you. If it doesn't work, offer to work on it, and refactor it if it seems time efficient (if its really ugly it may be, but usually its not) but still don't diss someone else's work publicly, ever.
* Software engineering is fundamentally speaking a process oriented task. Software engineers typically aren't. If you are process-oriented, that's great, if you're not, deal. Never cut corners in the development and configuration management processes until you've been there at least a year and understand why they're all in place. And hopefully by then you won't be tempted to anyways.
* Different companies have different cultures. This said, in general a senior engineer would much rather help you get over something you're having trouble with, or answer a question, then have you sit in front of your computer and stare at code dumbly for several hours of the company's money. Everyone gets stumped by bugs, and in general trying to do everything yourself to show off is not helpful. Your time costs money, and lots of it -- this isn't school, and there's no virtue in hard work unless it helps in the short or long term to develop the product. Granted the senior engineer's time probably costs more, but if 15 minutes from him can save you several hours, its almost always a good deal (unless you spending the several hours will genuinely help you understand something you need to understand in the long-term, but not everything falls into that category) Be prepared to get told to shove off if they're busy, but ask the questions.
* Finally never, EVER, write code to a requirement you don't understand. Nothing is more frustrating (speaking as a tech lead) than an engineer coding something based on a requirement they didn't understand and doing it wrong, thus pushing out the delivery when they could've cleared everything up with a half hour discussion about the requirement.
As a Quality Assurance employee at a software company I can tell you that at least in my experience, they will go to QA to ask which developers are doing good development projects. This isn't based so much on the number of bugs in projects that go to QA (although anything that's DOA or has obvious major issues does reflect negatively), but more importantly, make sure to have good documentation for what to test with, necessary setup steps, and any special variations you know of or spotted in development. If QA comes to you with questions about what they're testing, reply to them within a reasonable amount of time.
The worst projects that get to me in QA usually have one of the following problems:
1) Come into QA before they're actually ready to go due to an "In QA" deadline. This does depend on company policy but I'd rather have it just stay under development for an extra day or two so it doesn't prevent testing in other related areas if its totally broken.
2) Poor documentation (or sometimes none), or worse, documentation that's completely wrong (ex: it has instructions to test workflow X, but it should actually be workflow Y)
3) Instructions that are too general or vague, like "Test everything in {functional area A}". If it was a general change like a library function change, tell QA the various code paths that will hit that function so they don't waste time on related areas that will never touch your code change.
Some of these you'd think would be common sense, but they bear mentioning nevertheless:
1. Exhibit good hygiene. Shower at least every other day; wear deoderant; wash any clothes that directly touch your skin between wearings. Body odor does not make a good impression.
2. Dress professionally. This doesn't mean "dress up". For many environments shorts and a t-shirt is fine. If you work in such an environment, don't wear t-shirts with unprofessional logos or slogans, or that are falling apart. A good idea is to err on the side of caution during your first week or so, then adjust your casualness to whatever climate you observe.
3. Show up on time and work a full day. "On time" is usually flexible for software jobs, as long as you work a full day. Generally speaking if you're there by 9:30 nobody will look at you funny. If you must miss time unexpectedly then make sure to email your manager.
4. Don't be a jerk. There are so many ways one can be a jerk that it's not feasible to enumerate them here, but use your own judgment and err on the side of caution. Don't be unnecessarily harsh when you must offer criticism. Give people the benefit of the doubt. Don't be stingy with your time when it comes to helping coworkers. Etc.
5. Be proactive with regard to projects. If you've finished everything you've been assigned then go ahead and ask for more. As tempting as it is to sit on your ass and enjoy some "free time", eventually somebody's going to notice.
6. Do good work. Don't be the guy whose coworkers look at his code and think to themselves, "WTF?"
7. Be humble. Even if you really do represent somewhat of a local maximum. Bear in mind you are not a global maximum.
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
Being yourself is only really good if you're really good.
Trying to be better than yourself is better.
You need to be someone that the other people on your team want to work with. So, what does that mean?
For me, the #1 thing I try to do is: ask how you can help the team. This is something that not a lot of people do. If you have some extra bandwidth, ask your manager or your coworkers if there is any tasks you can take up that will help your team out. This instantly sets you apart as being not only pro-active, but a great team player as well.
Don't be the team's bitch, but if you're finished your bugs early, go through the buglists of your coworkers, and see if you can pick off any low hanging fruit. Of course, ask them first because they might have already started working on them. But how nice would it be if someone on your team said "Hey I finished a bit early, I think I can fix bug 2431533 for your if you want."
Do not ask slashdot on how to act... about anything. If you are THAT pathetic that you have to come HERE to find advice about being appropriately social... your already screwed. Badly.
20th century Marxism is not progress...
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"
Spend your first six months learning how *they* make software before you start suggesting the big changes. It's not about being a know-it-all. These guys have reasons why they do what they do the way they do it. Some of those reasons are good. Some are bad. Some were just never questioned. But until you've been around long enough to understand the underlying choices, you won't have a solid basis for recommending change.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
What do I look for?
1) Do quality work that's needed in a reasonable time frame.
2) Present a reasonably professional image. Most days, I'm totally OK with T-shirts, shorts, sandals, but if you are actually unclean (smell bad?) I will have trouble with that. And you'd better be wearing nice slacks, leather shoes, and a button-up collared shirt when we're making a public presentation.
3) Be courteous and work with others. We are all working on the same thing, solving different problems that are often interconnected. It's commonplace for a single change to impact everybody's sphere of influence, so reasonably getting along is a requirement. I understand that your co-workers aren't your drinking buddies, but a little bit of courtesy can go a long, long way.
4) Suggest ways to make things better if you have a better solution, but be OK if your suggestion gets turned down due to other circumstances.
Notice that, for my needs, I'm not looking for punctual. Generally being available when needed ranks high on my list, but if you show up at 9-ish instead of 8:55 sharp every morning, I'm not going to be any less inclined to give you a raise, and I'm pretty liberal if you want to take a few days off to go to the coast with your family for an extended weekend.
Bottom line: get the work done that's needed and/or make it easier to get more work done. When work gets done, we have stuff to sell, and when stuff sells, that is the bottom line, and that is why I'm here!
I have no problem with your religion until you decide it's reason to deprive others of the truth.
The first half of comments were all about personality, socializing, and tricks. Above all you need to be trustworthy. If someone asks you about X and you have a rough idea, tell them you think zzz, but you would need to look into it since it has been a while or you aren't sure or whatever. Make sure you DO look into it and follow up, especially if you find out you were wrong. If I hear you say something in a factual tone, I need to trust it as if I had done the validation myself or it is useless. Did you run tests, validate your numbers with a good scientific method, etc? If you are repeating something you read on a blog, don't repeat it as fact until you are sure of it. One slip up where your facts get iffy and I suddenly won't trust anything you say for a long time and will re-validate myself until you start telling me your facts and your methods in the same breath.
Here is the secret to advancing in virtually any endeavor you pursue, with the possible exception of politics: always take the blame, never accept the credit. If something goes wrong and you had the slightest smidgen of responsibility for it, step up and say you messed up. Don't mention anyone else's culpability. Bring up solutions for how to fix it. But if something goes well, credit the whole team, even if you did 99% of the work. When describing a success, get used to using the word "we." Believe me, people will figure out how much you were actually involved in both successes and failures.
Just because you sold your soul to the devil that needn't make you a teetotaler. --The Devil and Daniel Webster
I'm an application engineer who started off as a validation tech and I can tell you that helping people out and making my resources available have helped me keep my job in uncertain times and be accepted as a peer. There's a tendency among a lot of programmers to keep their "magic sauce" to themselves (and no I dont mean anything dirty by that, I mean those little tools and scripts that you accumulate to make your own job easier). Some guys seem to think that it makes them more valuable, but in my experience sharing your "magic sauce" lets those around you appreciate your skill set and gives you an informal peer review process that can correct/optimize your own tools. In my experience helping people out always pays long term dividends, but can cause short term heart ache. There will always be some jack ass that will try to take credit for your work, but (generally) it'll bit them in the ass in the end and those guys/gals that do appreciate your help will often surprise you with what they have to offer at a later date.
America needs fewer laws, not more prisons -- James Bovard
While freely sharing information about the software/processes may seem like it makes you more vulnerable to losing your job, it pays dividends:
Companies look for go-to people: those who can be trusted to do the important work.
Be punctual, focused, energetic.
And, you may have done well in school, but remember that you are a rank novice compared to your co-workers. Be ready, willing, and eager to learn all that you can. Be a sponge. Find a mentor. Learn the "company way" to do things: coding styles, etc.
do the opposite
presumably, you really wanted to be an engineer AND you interviewed at a few places and got the job you wanted. few people are lucky enough to do what they want in life, and fewer still have the privilege of making things. you do. be excited.
appreciate that you get to be around people who are as excited about software engineering as you are. ask people about what they're working on. learn from them. if there's an opportunity to propose a good idea, do so. accept the feedback you get if you find that your idea wasn't perfect, but don't give up. keep in mind that you work in the software industry and not the mafia: you're not being paid for your silence, you're being paid for your ideas.
read every single line of code you can get your hands on. learn the system inside and out. be ready to pitch in and work on code you're responsible for.
i've been coding professionally for a while. everyday i get to collaborate with colleagues who are dedicated to making great software. i've learned so much from them, and i've been given many opportunities to contribute across the project i work on.
be kind to your colleagues: the industry is small, and you're going to be working with these people for years even as you switch companies. the colleagues you get along well with will help you find work when it's time for you to change jobs. that said, don't be a pushover either.
in short: play well with others, speak up, be curious, and do well.
Do good work, keep your commitments, and don't be a dick. That should get you through your first six months. After that, inertia will do the rest until you're laid off or are sick enough of the place to leave.
That is all.
A good effective manager is going to select for talent which is not something that can be faked. The personality traits that are important to a team (and there are several types of person who are going to help the team, not just one) are going to the kinds of things that are innate to you, they're the way your brain works. Maybe for a certain job it's detail orientation, maybe for another it's extroversion...you can't fake or learn those things really...they're just part of who you are. They're the brightest pathways in your brain, well worn with repeated use, formed by your early experiences, that make you very efficient at a certain kind and style of thinking.
Don't try to figure out who you need to be to do this job. Instead figure out who you are and figure out the best job to exploit your tacit innate talents/personality traits. Luckily, on a software team there are roles for many different personality types (tester, coder, analyst, designer, project manager, tech writer, coach, etc).
Your post was properly moderated as a troll but I'll bite anyway because the OS or the language in use is not selling your soul.
It isn't the programming language, nor the operating system that makes a project interesting. It is the project and the challenge of the project that is interesting. Doesn't matter if the tools required to solve it is C# or PHP, mysql or a real database like PostgreSQL... what matters is the challenge and the problem.
Only a total jackass would think the language or the OS mattered. Only a jackass or a douchebag zealot would pass on a project because it required C# over GCC compiled C. Course, even I have my limits. Unless the project as the most awesome project ever, I would pass on a VB gig almost always.
Nobody but complete jackasses care about Windows vs. Linux. Nobody but idiots care about "free as in freedom". Pick the most interesting problems you can find and solve them. The tools (unless it is VB or Access) are irrelevant.
PS: If you think your OS or your language choice makes you sell your soul, you are an idiot. End of story.
Contrary to popular opinion, it's okay to be abrasive from time to time. It's important that you time your abrasiveness well, and that you produce results that significantly outweigh the pain of dealing with your abrasiveness. What this creates is a situation where people will go through great pains to stay on your good side, and will only argue with you when they have a factual leg to stand on.
Anyway, it worked for Bill Gates, and it works for Steve Jobs. Learn from the best!
No, I will not work for your startup
#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
I am not working in a SW company, but observe people who try to pretend a certain personality probably fail at that. Whats worst, they will probably fail completely at "exhibiting the right personality" in a stressful situation. If my co-worker/collaborator wants to mock on my work, i prefer him doing so *not* just before the deadline while swallowing his thoughts before.
The rest of the personality problems has to be solved by your attitude to the job. A usual and reasonable attitude as a beginner is: a) You are new and don't know how it works there. b) If you have good ideas, they are probably welcome at some team meeting or the coffee break, but not at a discussion about some specific problem. c) If you have a different opinion from the rest of the team or your boss, remember: you don't get money for following your own opinion. If you feel you opinion is constantly undervalued, then leave.
I have seen many people buying one "soft skills"-book after the other and learning how to shake hands correctly etc, but after five minutes of talking you found them the same self-centered insecure pricks they always were.
Since you are the type of person to ask this question, it means you have a very valuable asset -- an awareness of how others see you and how that it can affect you. The rest is common sense and experience. Best of luck to you.
Anybody want a peanut?
Seriously. You'll learn quickly enough whether or not your job is the place you should be.
Run quickly from any job that forces you to be someone you are not.
... in the yard and shank him.
Here are a few things to work toward:
- Show up. Being reliable is the #1 trait any company looks for in an employee. /. stereotype is to be lacking somewhat in social skills, but try to adapt to the corporate culture of your company. This means going to the social events (picnics, dinners, events, whatever) and (gasp!) talking to the people on your team (not just about the job, but about hobbies, activities, etc).
- Have some hygiene. Shower, brush your teeth, comb your hair, etc. (this sounds like common sense, but "I've seen things you people wouldn't believe.")
- Look at what your co-workers are wearing and wear the same type of clothing. If they're in long-sleeve button-up shirts and khakis, don't come to work in a Metallica t-shirt and ripped jeans.
- Always be willing to learn new things. Just because you graduate college doesn't mean that you stop learning. I have an M.S. and 13 years of experience. I learn new things just about everyday.
- I know the
- If you get stuck at something, ask for help. Don't flounder around for weeks without letting your supervisor know you're having difficulties. They are depending on you to get your work done on time so they can schedule releases. Letting them know you are having a problem lets them plan for slipping schedules, reassigning the workload or whatever it takes to get the release out.
- Since this is a software position, ask your coworkers if they have a coding standards doc you can follow.
- Read up on any domain-specific literature that applies to the work your company is doing.
Don't start sentences with, "Here's an interesting question" or "Here's a funny thought"... let others determine whether what you have to say is interesting or funny.
Never set an expectation that you cannot exceed. Do that, consistently, and you'll do well.
Nobodies Prefect
Tidbits for Techs Technology Blog
1) communicate (this is hard for ESL, but it's really REALLY necessary) ... the old "Im working from home" is ok sometimes, but dont make it a habit.
2) love what you do
3) dont cook seafood in the microwave
4) dont clip your nails at work
5) show up
You're obviously asking this question because you've got pause about your ability to conduct yourself appropriately.
A "software company" has developers. Obviously you've had interaction with students who will be trying to become developers themselves, given you've completed school. Perhaps you noticed that they behave differently than you do and that you do not fit in.
There is very little tolerance for "divergent" personalities unless the other people are likewise divergent. I'm talking about off-color humor, sarcasm, and various other "socially misunderstood" behaviors. Unless you get in with a bunch of similarly-humored geeks, chances are it will be greatly unappreciated.
Even if it is appreciated, keep your head down and pay attention. There can be a lot of pressure to feel like you're being accepted in a new environment, but it's better to play it safe and feel your way out of the box slowly. Take it from someone who learned that lesson the hard way.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
Why I always come to that sort of threads, when there are hundreds of advices already..
In the cubicle farm, DON'T
- whistle or hum
- play a radio
- use a speaker-phone
- smoke anything
- throw a football
- raise your voice
- bang your head against something hard, like your desk
In general, DON'T
- touch another employee
- show up for a meeting after it has already begun
- park in a space labeled "Reserved for..."
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.
I woudln't work at a place that used what I assume you meant was pirated software because places that pirate software are the kinds of places that will bounce your paycheck--not to mention as a software developer, your asset is the intellecutal property inside your brain and pirating software devalues the very thing you sell.
Aside from that, a professional *is* a highly trained prostitute. You offer your services, suggest your best ideas, but at the end of the day, you do what they want you to... because that is why you get paid.
Now if you actually meant "private software" as in "non RMS compliant software", then yes, you are a total religious zealot, nobody cares what you think (including me), and have zero relevance to 99.99999% of the world. Software isn't a religion. End of story.
Dont break the build... EVER!
If you break the build fix it immediately (yes its 11pm, fucking well fix it)!
Find out what the core hours are for your office. While you feel like a newby, however long that takes, your hours should be a superset of those hours. I know we all just did our best design work in the shower prior to getting in to the office, yadda yadda. It is impossible to overstate just how important it is to be seen in your chair, doing what seems to be your work. There's a certain element of this that's fake, of course, but there's a certain "real" to having your CTO come by and ask why it was impossible to have blue colored widgets, and have him walk away with a better understanding of your design decision *from you*. It is an understatement that half of all work is ... wait for it ... showing up!.
Ooops, forgot to add the smiley ;).
Personally I use vi for things it does well for me (mainly working on remote servers, but also ad-hoc edits on local files), and mainly emacs for developing, though I happily use IDEs if they do the job better for me. And OS X's notepad equivalent (Textedit) for notetaking.
There, that wasn't so blinkered was it ;).
It depends on the company. Company cultures vary, so look around and act like other people. If they hang out with each other, then try to hang out with them. If they wear suits, maybe you need to as well. Gauge the boss. Is he chummy? Professional? Act similarly, unless he's an asshole. Don't be an asshole.
then you are forgiven my good sir. Please go about your daily routine knowing you have been blessed :-)
Do a good job. That's pretty much the only criteria I use to evaluate my fellow developers. As long as you don't make my job harder with your shitty code, you're OK in my book.
Oral sex is often a good way to show your boss and co-workers how much you care about them. Offering to clean the nastier parts of their houses is also effective, and can sometimes afford you a shot at those "private files" that can contribute so much to your advancement in the company.
Being really, really good at your job helps, but only if your boss isn't threatened by that. Otherwise, he'll steal credit for everything you've done and portray you as a useless slacker (see paragraph one).
Cynically,
H1
I've calculated my velocity with such exquisite precision that I have no idea where I am.
But internally (i.e. to yourself), always set an expectation higher than what makes you comfortable. You should always, *always* under-promise and over-deliver externally (i.e. what you promise to deliver), but always make sure to sell yourself slightly outside of what you are comfortable with. Always push your comfort zone. If what you promise makes you a little nervous and afraid inside, it means you are forcing yourself to grow as a person. If what you promise makes you say "no problem", it means you are stuck in a rut.
Work, don't talk. Deliver quality code.
Cooperate. Share.
Don't act like a know-it-all or "try to impress" just be yourself, track your deliverables and always over-deliver without making a big scene about it. If you have time, help others if they need it.
I think this is one of the best questions asked on slashdot.
The answer I've always used for myself and family, is that in any job you do, your primary goal is to make your bosses job easier. If you can make your bosses job easier, then doors will open for you, that may have nothing to do with your immediate talents or job.
The second answer is do the job you want (and that needs doing) as well as the job you were hired for. You will eventually be moved to the job you want.
These two answers usually go hand in hand.
Best advice I can give is to be honest. Screwing up and trying to hide and lie about it is the worst thing you can do. By being honest and owning up to your mistakes always calms bad situations. You don't have to socialize but don't put on your headphones and ignore a little conversation near you. You don't have to say anything but listening in will help you become familiarized with people. Ask for help but don't become needy. Look for solutions before asking for help. I have had a few people who ask for help only to start asking for help with very easy things, I normally become ignorant at that point.
I don't know what "privative" is supposed to mean in this context.
But upholding an "ethic" that's meaningless to people besides yourself is very self-focused. Jobs and workplaces (which is the topic) are almost always team efforts.
So your ethic may be important to you, but to everyone else on the team, it just means you are failing to do your part. You might as well be failing because you're drunk or playing solitaire. They don't care. All they know is that, when they needed you, you failed them.
This is rarely the right choice.
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
Practice Active Listening from day one, and be humble about your own skills and abilities. Yes, you're smart. But over the years as you learn more you will discover that you know less and less, until you are absolutely confident that you know nothing.
You will find some people who do not seem to be very smart, but they are there for a reason. Dismiss them at your peril. Instead, try to learn from them.
Active listening will help you learn faster, gain respect among your colleagues, avoid misunderstandings, and build valuable relationships quickly.
If you're on the clock
Software developers are NEVER on the clock, as they are salaried employees.
This doesn't change the fact that it's usually necessary to work at the hours when other people are working, so you can communicate with them, participate in meetings, etc.
Contrary to the popular belief, there indeed is no God.
Large companies typically have manuals. Sometimes the manuals are hard to find. Or, there are so many that you can't figure out which ones are important or up-to-date. But usually it is not so difficult. They are ofen found in your manager's cubicle, or on the company intranet. If you read them, you'll gain amazing insights.
They might be business books, such as something by Geoffrey Moore. If you read them, and quote them every now and then when appropriate, you will get strange looks, but you will be considered to be a player.
The general practice of manual-reading also works in other domains. Once you get used to it, you will find that it is a great 'secret-weapon'. Don't spend time at work reading the manuals except to look something up - this prevents you from casting the illusion that you are always doing 'real work'. Take them home, read them, or at least look through them to understand what is covered on every page, and then bring them back. Expect to spend something like five to ten hours a week on this.
There are also amusing books such as "AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis" that are better than just reading Dilbert.
As an older person, this question makes me a little sad. No-one should need an extra persona for their job, although, I know the reality is somewhat different.
Try and find a decent company [really hard, I've had at least two bosses who were actually mad], work hard [but don't kill yourself] and support and be sensitive to the people around you. There's usually tons of cues about dress, formality/informality, approach coming in every moment, so look listen and learn.
Actually I've often found that really talented anoraks [I don't count myself as one, incidentally] are good people to work with, because they like what they do and get to do it every day. The ones with loads of attitude aren't usually the talented ones.
On y va, qui mal y pense!
Relax, you're going to be fine.
1) Do _Excellent_ work.
Re-check your assumptions. This includes not only your code, but your emails and what you say during meetings. Infact, being precise in conversations is probably more important than writing good code. Nobody expects you to write perfect code. Everyone expects you to tell the truth.
The problems that you solve, by yourself, in isolation, that do not impact or educate other employees, are simply not interesting problems.
When you write emails, when you aren't sure, SAY SO. When you merely THINK it works like this, SAY SO, or, better yet, READ THE CODE and PASTE IT FOR CONTEXT.
What you don't want to be is a guy who makes mistakes casually and carelessly. It's fine to not know -- infact, it's wonderful to not know, because then you [and others] know what to do next [learn]. But it's awful to be wrong and to mislead others merely on account of intellectual laziness.
2) Become interested in your co-workers problems.
When a co-worker asks me about something, i HATE not knowing. I want to be indispensible. I want to be the go-to guy. That takes a lot of time, knowledge, and experience [some of which you may have already developed as a hobbyist or student]
A lot of what your co-workers ask you about isn't specific to their domain and their problems [after all, why would they ask you?]. Give them good answers, but make sure you understand the "real" question. Understand what they're trying to do. Very often, people have already taken 3 steps down the wrong path, and are asking you how to complete step 4. Your job is to help them back up and take 2 steps down the RIGHT path. Some of your co-workers will _always_ be taking the wrong path. Learn who they are and how to gracefully guide them.
When you cannot answer a question, you have two choices:
- drop what you are doing, and try to pair-research with them to investiate the answer
- tell them that you don't know any more than they do. Suggest who they go talk to or ask next, if at all possible. Coming to you needs to provide them with SOME value -- even if it's a "here's what I'd do next if i COULD work on this". Additionally, express interest and curiosity in the problem. Capstone the conversation by asking them to share the answer with you when they find it. This does a few things
-- expresses confidence that they can solve this problem
-- shows that you are interested in what they are doing
-- when they return with the solution, you get some very cheap knowledge
3) try to keep things focused on your customers and your business
You will argue with people. Sometimes, both of you are smart and right, and perspective and context creates the distance between you.
Nobody gives a shit about your pride or need to be right all the time or anyting like that. Mostly, that will piss people off. Channel that energy into doing #1 and #2.
When it comes time to make decisions, it's all about what's best for the customer and/or business objectives. This ties into #1. Don't grand stand about what people want -- go to the data. When there isn't data, be as precise as possible about your anecdotes. Plan on losing some battles. Don't spend all of your political capital fighting for the unimportant victories.
Understand when you are on flimsy ground and retreat when appropriate.
It's ok for other people to be wrong. You want to work with strong minded people who have good ideas and are confident. This means you'll disagree sometimes and it will get vigorous. Don't be vincidctive if you are right; guide them to that conclusion.
When you are a zen master at this, people will start repeating your ideas as if they were their own.
4) Utilize your manager effectively. Raise co-worker concerns that you cannot resolve comfortably to them in private, so that everyone can have the best chance of saving face. Understand what makes her successful, and what your role is in acheiving that.
Understand that from her perspective, the rest of
My opinions are my own, and do not necessarily represent those of my employer.
The best qualities are pretty much the same no matter what work you do. Be honest. Accept responsibility if you screw up. Defend your co-workers when they deserve it. Be helpful, not competitive. Share knowledge and show others how you learned what you know so that they can find it next time. If you do these things, you'll be the "go to" guy that people respect and trust.
Nitewing '98
Everything works...in theory.
While that may sound silly, in 15 yrs you will look back at my comment and laugh sadly
Other good ideas?
Try to be consistent. Realize that everything you create is an opportunity to impress. Know that sometimes wisdom is showned by NOT talking. Yes, even if you ARE right.
You will once some day loose a job suddenly, plan for it, don't fear it. Often it's for no reason you have control over.
Do what you love, you will do it 10x better than stuff you don't.
Try to error on the side of yes, you wan't to be seen as helpful.
learn how to say NO otherwise you will end up on drugs, prescription or otherwise
. . . would a post discussing good hygiene neglect to mention deodorant.
My sister opened a computer store in Hawaii. She sells C shells by the seashore.
If you have an administrative assistant (admin) for your group, whatever you do, DON'T piss him/her off! Show respect. They can make your life a living hell if they want, or a lot easier.
You should suit every aspect of your personality, your hobbies, and your personal life so as to make a good impression on your boss - bosses love that you're willing to go to great lengths to be fake in order to please them. You should also be completely neurotic about pleasing them - ask them every five minutes if they're happy.
Above all, don't be natural. There are too many sane, well-adjusted, natural people in the world, and in order to compete, you need an edge (thus, neurotic and fake is your ticket to stardom).
You owe the Usenet Oracle a tweed jacket and a pair of expensive shoes.
For every problem, there is at least one solution that is simple, neat, and wrong.
Only talk about software development, gadgets, trends, Facebook, iPad, whatever is currently hip. Don't do *anything* besides writing code, even in your spare time. Never do anything out of the ordinary - don't have hobbies, or friends. Don't travel much. If you follow these rules, you should fit in just fine.
I'm gonna assume you want to build a career, develop a great reputation, be able to change jobs easily (because you're references are all amazing), and make lots of money.
Write unit tests for your code. Even if nobody else at the company does the same, you'll never have to worry about whether your code does what it's supposed to or not.
You have to fit in with their culture, this might be very difficult but consider your objectives and what you are prepared to do to achieve them.
For example, for a new grad gaining 2 years of solid experience is probably worth swallowing wearing a suit, being at your desk at 7am and kissing arse daily. After 2 years of doing that you may well be able to leave and find a better job on more money with a fun culture that suits you if you are into that kind of thing !
People are saying that you should socialize : definitely true. But the big reason to do it is not to appear to be someone who is social and good at communicating, but actually to develop sources of help for times of difficulty. You will have screw ups, you are human, you will need someone to give you a pass on occasion - the guys you go to lunch with may do that. They may also feel comfortable enough with you to tell you what you did wrong and what you could do right instead. Your co-workers are a seminar like source of knowledge for you - build that resource and use it.
--------------------------------------------- "In the end, we're all just water and old stars."
Software developers are NEVER on the clock, as they are salaried employees.
Because consultants who have to bill their hours certainly are not software devolopers.
Learn to say NO
Isn't that what the last 20 odd years of your life were supposed to teach you?
Everyone seems to have had fun with their 5's for funny posts. Sort of like the real world. What companies really need are coders who put code out there. Maybe not perfect the first go-around... But infinitely more useful than stooges with road maps, project plans, PowerPoints, and good meeting manners.
"Knowing everything doesn't help..."
Realise that some of what you learned in college was bullshit, but not all of it. Don't go around preaching shit like you're the smartest guy there when you have almost no experience. Try to learn from other people's experience even if they're wrong - usually they have a reason for being the way they are after so many years. Have a can-do attitude but not too much. Just because you can do something doesn't mean you should. Often times when someone requests a new feature the best thing to do is say "I'll look into it" and start by figuring out just how much effort it will take. Many problems are more complicated than they seem on the surface and if something will take a long time to complete communicating this early is a very good idea, or more thorough analysis may reveal you don't fully understand what they were asking you to do. Use this experience to learn to judge how long different tasks take to complete since your estimates will be completely wrong at first. Also work on communication skills. Before you go designing some complicated system it's a good idea to make sure that's what your customer or boss is expecting.
Also, understand your boss and your co-workers. If I think someone is approaching something wrong I will generally tell them. Most people appreciate this, but some people just can't take criticism. Learn how to nicely communicate criticism and when you're dealing with someone who can't handle it, but I guess that comes a year or more later when you actually know what you're doing.
And ask questions. Nobody expects someone fresh out of college to know what they're doing and hit the ground running, and it's better that you ask questions than sit around wasting time. You probably won't be very productive for at least the first 6 months or so if you're working on an existing project or doing something you've never done before.
He's not saying a code of ethics is irrelevant. He's saying a code of ethics which features software freedom prominently is not a worthwhile code of ethics. There *is* a difference. Consider replacing "software freedom" with your pick of "sexual purity" or "sexual prudery", etc. -- hundreds of millions of people place it at the utmost importance (apparently including you, given your use of prostitute as an insult), and hundreds of millions of others make an evaluation and don't think that either has any moral weight. Then compare "racial purity" and "racial equality". Then compare "Sega Genesis" vs. "Super Nintendo". Some of these have clear places in morality. Some don't! I certainly think you'd be kind of an idiot to make Genesis vs. SNES a quitting point in 2010.
Anyway, the person you were responding to was talking about the "use this OS" issue, so you kind of were talking about it too.
Reading between the lines, the point of the root AC was to not waste everybody's time ranting about irrelevant personal preferences. If you refuse to use privative software, you probably shouldn't have accepted a job at a shop that does not explicitly avoid using privative software, because every other one can and should at times (if for no other reason than that the law of large numbers guarantees that sometimes privative software is the best tool for the job on every technical and/or financial measure, as opposed to political). If you didn't at least tell them of this character quirk before hiring, it's very much a way to make a bad impression and possibly get yourself fired. It's different if you signed up under the explicit or implicit agreement that you wouldn't have to do that sort of shit and they reneged. Or if you had good reason to believe it would never come up. But using Windows vs. Linux? A software company is going to use and target one or more OS-es, and it might not be only your favourites.
If the company you work for says Allman Braces throughout, and you like K&R, use Allman (automated refactoring tools make that easier). If they demand hungarian notation, use hungarian notation. If they demand C++ standard library smart pointers, don't muddy it with boost smart pointers (without a valid technical reason). If they standardize on return-code error handling in triangle structures, and you like exception handling and cleanup routines, use return-code error handling in triangle structures. There's no soul-selling in this, there's some practicality. Later on you can make the case for some changes going forward, civilly, and it may or may not happen, and you should abide by the greater consensus. You'll probably just get used to at least the trivial stuff, though.
Consultants are not employees like the original poster (and they still don't work on the company schedule).
Contrary to the popular belief, there indeed is no God.
that when you write code, you must not use GOTOs
Well I have on occasion called my Managing Directors of the company lazy to their faces, shout insults across the room to my senior developers almost on an hourly bases and repeatedly inform my manager I am going to sue her for sexual harassment.. I recommend if you do not have a cheeky personality and boyish charms to get away with it.. not taking this root..
"Bosses" are so different as you and me. But you sound like someone who really wants to give up his own personality, views and opinions to keep a job, so I am sure your natural talents to adapt, subordinate and kneel will be sufficient. Your question sounds as if you would be a good working slave already.
To answer your side question: I like it if my co-workers and bosses show some backbone and personality, stand up to their views, know what they are talking about, are able to discuss and change their mind as a result of intelligent discussion and, ah yes: do not suck up to their own bosses and superiors.
Simply asking the question kinda states you'll be a pleasant co-worker. From listening to youngsters around me, I'd say:
- Be reliable. That goes both ways: try to do what you've been asked to, and also to warn early and often when you're running into difficulties: learn to say no to impossible schedules/requests, and to ask for help when you're stuck/lost...
- Your boss/company is neither the devil nor god. There's reasons for what they do, even if they are stupid reasons or if you're not aware of them. Suck the idiocy up, try to empathize but not too much. OTOH, I also see some first-timers thinking the got The Perfect Company / boss, only to have a hurtful epiphany a couple of years in, when they realize beauty IS in the eyes of the beholder.
- Work is neither a popularity contest nor a rockstar-ish ego-trip. You won't mesh with everyone one, and co-workers, as a rule, aren't and won't ever be and shouldn't be friends. On the flip side, you're not The Shit, and using personality/musical/appearance quirks to get noticed is childish and ultimately counterproductive unless you're very good at it.
- Strive for balance. Don't give up your personal life due to stress/long hours. Hobbies sleeping, daydreaming are important.
- This a just a first job. Build your skill set and personal network, and try to work out what you like and don't, what you want to work in later, with what type of people, in what type of setting. Some like very structured environments, others more free-form... Beware not to get pigeon-holed into a very specific job with very few social interactions, you'll wake up feeling trapped 5-10 years from now.
- Work is like school: there's nice people, nasty people, helpful people, bullies, cheats, busy people... Try and find out who's what, avoid minefields, find if not allies, at least helpers.
And, finally, success is mostly about appearances. Dress for it, smile for it, speak about it (not too much though)
Have fun !
The Cloud - because you don't care if your apps and data are up in the air.
Don't try to change who you are for a boss. If you are happy and treat others with respect, your personality will be fine.
Charisma is an elusive quality. I don't know if it can be learned.
Fit in
Don't take credit for other peoples work and more importantly don't let others take credit for your work.
Your post is mostly along the lines of "if you don't agree with me than you are a jackass". Convincing.
It isn't the programming language, nor the operating system that makes a project interesting.
Maybe not, but bad ones can really make it dire. Unless you have a thing for COBOL.
Only a total jackass would think the language or the OS mattered.
I suppose you've never worked on anything except basic desktop or web apps on a PC. And you have absoloutely no personal preferences over enything whatsoever? The former sounds likely, the latter not so much.
. Only a jackass or a douchebag zealot would pass on a project because it required C# over GCC compiled C.
I would. I don't know C#. I also don't like working on Windows, and I am in a position where I can choose the projects I wish to work on freely.
Course, even I have my limits.
Ah, so everyone is a jackass except you because your limits are sensible. Or, perhaps you're the jackass?
SJW n. One who posts facts.
Listen more than you talk, at first. One of the biggest mistakes I have made when starting new jobs is trying to make a good impression by offering my opinion when I didn't really understand how or why things were done the way they are now.
I read a few of the above. While the dental flossists seem to have taken over, here is my advice to a young real engineer- /will/ sound lame. Trust me, you need to be enthusiastic before you'll get accepted.
-Yes, fair enough, wear clean clothes, shower, brush your teeth. You'd have to be VERY clever to make up for being stinky
-carry a notebook. When you ask a stupid question (probably all of them) note the answer down. That way you'll never ask the same person the same question twice.
-enthusiasm- we're fucking good at being cynical. Your attempt
-sense of humour- you will need one
- stupid hours- I regard people who work long hours as people who can't organise themselves, or production-workers. Others may differ.
BTW, computer engineers aren't real engineers. There may be different rules for them.
A lot of the comments here focus on the professional side of what you should do. I think the social side of work is just as important. Go to lunch with your team, go have a smoke or a coffee break with people, just talk to them and find out what their interests are or discuss some problems you are currently working on. Having to describe your problem to somebody can itself give you new ideas how to solve it or their suggestions could be helpful too.
Get to know the people who are working there, their professional and their personal side.
Also, if the guys there are doing any activities outside of work together then you might want to join in. Or join them when some of them go grab a beer in the evenings!
Don't be afraid to put your foot down if you ever have to but just generally be yourself, be authentic and be a likable, sociable person without sucking up of course. Plus do your job. Then you should be just fine.
"Only one thing is impossible for God: To find any sense in any copyright law on the planet." - Mark Twain
There is no harm in learning about http://en.wikipedia.org/wiki/Wage_slavery
I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
I spent a bit of time in a software development company, as well as worked in offices in general, and as a freelancer. And, I own a (very) small company now myself, so I know how I would want others to act if I hired them.
Basically, it comes down to this: be professional, and a good human being. That's it. How you do it is up to you. Anything else is commentary.
Robert B. Marks
Author, Demonsbane in Diablo Archive
Priorities tend to change frequently, so when you are asked whether you can do something, just say yes. It doesn't matter if you think it might be hard or nigh impossible, just say yes. It usually turns out that you can, in fact, accomplish said task or that the requirements mutate into a form that makes life easier. In rare cases where something ends up being overly difficult, it's easier to appologize later. Again, priorities will have changed and most likely what you're working on isn't the thing the boss cares about.
Know what you know (actually, quite hard when you start out)
Know what you don't know (ditto)
Sun Tzu said something to the effect if you know yourself and not your foe, you will win 50% of the time. If you know your foe but not yourself, also 50%. If you know neither, you are borked. If you know both, you can't lose.
This turns out to be fairly accurate in a technology field.
Don't try to convince people you can do things you can't (nor convince yourself of that), but do try to do what you can and know where the boundary of that ends.
One of the things that takes the longest to learn in programming and software design is to recognize when the (as yet unattempted or uninvestigated) task before you is beyond your expertise to deliver quickly and well. But that's also the most critical skill from a perspective of being managed or managing someone - knowing what you/they can or cannot manage.
If I think you can manage something and you can't, we've got a situation for sure. If I know you can't manage something quickly/well, I can use my management skills to find ways to resolve that issue. I can bring in someone to mentor you and oversee you and assist you. I can reallocate the task and find something better suited to your skills. I can accept a longer timeline and more challenges in the production and let you dig away and learn as you go.
But if I think you're going to do something well and you suddenly tell me at the last minute we won't be hitting our deadlines and the project is pooched... then you will be up against a wall (figuratively) because I as your manager will be as well.
I've screwed that up once, badly, in 15 years of good delivery of software for complex real world systems. It was not good. If I hadn't had a long track record, I'd have been gone. I didn't know enough to know that I didn't know near enough. I didn't know enough to know how far I was from done. And so I never threw up the flags management needed to see. So they were blindsided and the customer was pissed.
I don't recomend that. But if it happens to you, it'll be something you'll never want to repeat. Try to really come to terms with what you know, what you don't know, and don't be afraid at the outset not to say 'yes I can do this' when you haven't a schmeck if you can. Say 'I can look at this and quickly try to get an idea how involved this is and how easy this is going to be to manage and get back to you ' or else 'I don't have the information at the moment to know how challenging this will be - any estimate I give you now won't be based on a good understanding of the task'.
Don't be afraid to ask for help. It's better to have someone senior roll their eyes at you a bit but straighten you out than it is to spend two weeks trying to do something you're clueless about. A can-do attitude is important, but so is a realistic impression of what you can do by yourself and what you can do with a bit of guidance. If you are reasonably educated and a smart individual, with some guidance, you can probably manage a lot.
I've been doing this a long time and have delivered over a dozen large scale projects in different domains (public safety, defense, cellular, on-line gaming, enterprise web apps, point of sale, and VOIP of the ones I remember). The best skills I've developed are knowing how to speak and understand the language of my managers or senior company execs (so you know what they want and how they need to have it parcelled) and knowing what I can do immediately (and what I don't) and how to say "I need some time but I'll find out what you need to know".
-- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
Have an opinion and keep it to yourself. Always be ready to defend your opinion if contested. But always be open to the chance that you're wrong. Have a backbone, but don't go looking for a fight. When right, handle yourself with grace. When wrong, own up immediately. Don't gossip, but offer an ear to a co-worker if they open up to you. Do good work (that should be obvious). Don't stop playing, otherwise the job part will dominate and you'll burn out in ten years.
Some of these people could become good friends. Some of these people you'll barely learn their names. Just like the rest of life.
Be polite.
Be efficient.
Have a plan to kill everyone you meet.
I guess that was the point.
Note the following emphasis:
[...]
The Tao of math: The numbers you can count are not the real numbers.
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?
Don't attempt to game the system with false personality traits. You will be seen though very quickly. The working world has seen quite enough people who misrepresent themselves, don't do it.
Do everything people ask of you to a high standard and try to learn interesting new things both at work and in your own time.
Don't wait until immediately before before code freeze.
Your code will have to interact with the rest of the system and by waiting
until the last minute you are potentially introducing integration issues into
the mix at the worst possible time.
First and foremost, avoid slapping your boss on the ass, especially on your first day there. They seem to frown on this.
Oh, and if your boss is female, do not--ever--compliment her boobs, nice and firm as they may be.
Remember these points, and you'll probably do well.
-dZ.
Carol vs. Ghost
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.
Learn the names of the people you see every day. Say hello to them the first time you see them each day, and say goodbye as you leave.
It's a very basic bit of social etiquette, but often neglected at work. The simple act of verbally acknowledging the presence of others can have a dramatic improvement on your work environment on several levels.
the movie Office Space.
vi is part of the Single UNIX Specification, so if you need to deal with UNIX systems then it's worth learning because it's the editor that you can guarantee will always be available. Beyond that, it's worth learning at least one text editor very well. It doesn't matter whether it's Vim, EMACS, or something else, but if you can't easily jump around between various points in a file, move blocks of text, reindent blocks, and so on then you're wasting a lot more time than you'd be wasting learning to use an editor properly.
I am TheRaven on Soylent News
Mostly just be yourself, and try to be helpful.
I recommend not answering any emails or voicemails or any kind of mails. If it's important, they'll call or come around in person. Then when they do, no matter who it is, or what they need, be totally proactive, help them get it accomplished. You'll have time for it because you're not answering any bullshit mails. Pretty soon everyone will have a story about the time you pulled their ass out of the fire.
Also, learn the favorite cookie of everyone on your team, and from time to time, bring in a bag of fresh-baked cookies and give everyone their favorite. People love this. Friday afternoon is a great time for a cookie break.
Your boss has a job to do. He/She may not like it any better than you like yours, but that's the job (and why it comes with a paycheck). Figure out what they are trying to accomplish and help them do it. If you do this, everything else mentioned above will fall into place. If you don't know what their goal is, ask. If you can't help them achieve it you need to either change yourself (maybe a little less ego) or find another boss.
Every boss has a hobby. Online Poker, theatre, Warhammer, something. And the bosses often share a hobby, potentially a different one as they move up the ranks. For those occasions when you have to get help to overrule your immediate supervisor, it is _immensely_ helpful if his boss or the corporate president know your name from somewhere as someone at least socially competent.
This goes both ways: finding out the janitor's name and the helpdesk people's names and sending them and their supervisor's thank you's when they go the extra mile for you helps them remember you in office gossip. Finding out if the people above you, and below you, have kids and helping cover if they have to be home with a kid is paid back a lot at annual review time.
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.
Nuff said
If I ask a "Yes" or "No" questions, give me a "Yes" or "No" up front before launching into the diatribe with the massacre and the four party harmony. Sometimes, you don't need the rest.
Also, as a boss, I want you to really tell me "I don't know" if you really don't know. I hate, hate, hate people who aren't willing to man up when they don't know the answer to a question. Tell me, "I don't know but I'll find out." or "I don't know and I could use help to find the answer." Don't tell me you have it under control when you really don't. That just makes everybody look bad.
Don't be over the top and just observe what it's like at the company for a while. Once you're settled in then you can join in, have a laugh with your work colleagues if they do that.
Each company is different, some people can be really serious, others can be really relaxed. It all depends on the management culture there.
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
It's not the same program as Notepad.exe. Christ, it would be nice if people would download and try it before spouting off in the comments here, but I guess that's not going to happen.
Thank you for pissing me off with your ignorance.
Comment of the year
Be professional
HTML is obsolete. It's time for a new, simpler and richer markup language.
You cant go wrong by acting professional, even if you are a easy going friendly person. As you ease your way into your new job/career, you will be able to get a feel for your coworkers, bosses and clientele (if you interact with them, which many developers are quite happy not to :).
Once you get to know people you can "loosen up" to as much as you are comfortable. In a lot of companies this also means a loosening up of the dress code. Usually the newer employees are expected to stick a bit to the dress code proper, as you gain experience you will know when the limits can be pushed.
I like to get to know some of my cowokers quite well, to the point where we are good friends outside of work. Obviously this does not take place for everyone, and some people would prefer a strictly professional relationship. Always respect this.
If you are lucky (or unlucky, depending on your personality); you might even find yourself at an extremely relaxed environment. You might even hear friendly jabs from management that you should "loosen up". Never be offended by this. Instead claim you want to make a good first impression; even "loose" managers will eat this kind of stuff up! (and it is the truth too, double bonus)
I'm a good cook. I'm a fantastic eater. - Steven Brust
I've been a brand new programmer just out of school and I have been a hiring manager. I think I have something to offer.
First off. If you need advice on personal hygiene you most likely would not have gotten the job at all. But, if you do have problems with bad breath, find a good dentist and get your teeth cleaned on at least twice a year, get the cavities fixed, and learn to floss and brush. I'm allergic to an ingredient in pretty much all toothpastes so I use good old salt and soda and a high speed electric tooth brush.
The simple truth is that you will not advance, and you will not even get good work assignments if you stink.
Before you start at the job read everything you can get on the rules of conduct at the company. As a noob you *must* comply with all the rules. This is not a matter of "try". This is a matter of *must*. During your first 6 moths to a year are being evaluated and your ability to comply with company rules is part of what you will be evaluated on.
Dress properly. Most likely your company has written rules about how to dress. Comply with those rules. But, you can stretch them a bit. I always used to were highway patrol trooper boots. Many corporate executives are ex-military and a nice pair of shiny boots really makes a nice impression. If the company allows you to wear jeans, were them. But, wear black jeans, maybe with a crease. Do not wear worn faded jeans until you are a senior developer. The higher up you get the worse you can dress. I remember a top VP at a major telco who came up from the technical side who would show up for meetings with the president of our division wearing jeans, and a denim jacket. It is a way to assert you authority. As a noob you have no authority.
It is a good idea to watch how your boss's boss dresses and dress in the same style, but make sure to wear cheaper clothes.
Always show up before the normal start of business. Never leave until after the normal close of business. If possible be the first one there and the last one to leave.
Work. Do not use the Internet for anything that is not directly related to work. Do not stand around talking in the halls unless you are stopped by someone senior to you. Then talk to them as long as they want to talk to you. Work. Get to your desk and start to work.
Do not ever start a sentence with "In school we were told to...". Everyone their went to school. They most likely have the experience to understand why what you were told is bullshit. They also know how easy it is to mis-understand what you thought you learned. If you see something going wrong talk to your boss about it in private. Do not send emails screaming about the problem to everyone involved. When you have that talk with you boss start the conversation with "I don't understand why we are doing this this way. Can you explain it to me?" In fact, when ever you think someone is doing something wrong tell them that you don't understand that approach, can you please explain it to me?
You will be given some projects that seem really stupid. You might even find out that other people have been assigned the same project. You might feel that being assigned such a simple project is demeaning. You might think that assigning the same project to two people shows distrust. Well, you are right. They do not trust you. Do the projects as quickly and as well as you possibly can. You are being tested to see if you can do the work. You are also being tested to see if you are willing to do what is needed no matter what. No one wants a prima donna. Sometimes the most senior people have to do the equivalent of sweeping the floor. If you are willing to do it, then you will be loved, trusted, and highly valued. If you do it, but give off a negative vibe your value will be greatly reduced. If you you refuse, you will eventually find yourself without a job.
Ask a lot of questions. You do not know how things work at that company. You do not know much at all. You have a degree. If you are lucky and worked as a programmer before and duri
And with this idiotic rant, my foe list grows by one.
The soylentnews experiment has been a dismal failure.
Because you should only take software developers serious that have a beard.
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
Just be personable and don't be a pain in the ass. Be someone who can disagree without being cantankerous or uppity about it.
It's really that simple.
Slashdot requires you to wait longer between hitting 'reply' and submitting a comment.
If someone says here is a problem and they want you to look at it, get into the code and look at all the issues you can before asking questions, but don't spin your wheels too much. Nobody likes to have to hold someones hand all the time. Companies want free thinkers, unless you are in india, in which case they want worker bees that do as they are told.
Only 'flamers' flame!
Does slashdot hate my posts?
A lot of people have made the obvious comments about not being a know-it-all and about having good hygiene, but this all leads from the golden rule of "Don't be a dick." Accept help where you can get it, give help where you can get it, and in general, do your job well.
Contribute to your co-workers having a 9 to 5 day ... no one likes to work with people they have to clean up after ... basically just do your job!
Is more people to speak up and point out that most software sucks.
In all projects most developers know that what they are working on is a huge mountain of garbage, but few dare to point this out to management, of course this might get you fired, but you don't want to spend your life working for a company like that, as it will suck your soul and you will end up feeling like you wasted your life.
"When in doubt, use brute force." Ken Thompson
If for no better reason than because no one else has managed to post the obvious.
Really, I'd take the pen from the guy break it, and give him a pencil!
I've had people come over to my desk and start writing their notes on my documents, and expecting to walk away with them! Then they are surprised when I stop them.
I get so much more done per hour during off hours, without annoyances and distractions, the boss would freak if he found out.
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
You have asked a bunch of people with (on average) poor social skills what to do to interact well. It's not that there isn't good advice here (I recognize several VERY good posts) it's that you'll have no idea which are right and which lead to death.
So don't read the responses. Go to a talented ex-boss that you've had (if you've had any) and ask him or her. Have a conversation.
Then with that answer in mind, go back through these posts and find the ones that sound similar.
Ignore the rest. We're mostly troglodytes, here.
Don't assume that your degree or university taught "best practice" is the best way to do things at your employer. NO ONE likes a (freshly university educated) know-it-all who really doesn't know shit from chocolate in the real world. You may well have been taught "best practice" but in reality compromises often need to be made. Be helpful and be willing to learn how things work at your company before spouting off how everyone there has it wrong.
I run: Windows, OS X, Linux, FreeBSD. Just because you have a hammer, doesn't mean everything is a nail.
awesome. I'll friend you just for spite.
Communicate in-person, by phone, snail mail, email in that order. And share essential talk and not exciting or exotic stuff with your boss.
I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
The IT biz is full of micro-Nazis, mostly people in management who have no business managing anything. Developers (generally somewhat socio-pathic) end up getting promoted to managers and their ineptitude with people then becomes a major problem. Just do your job and let your managers think they're smarter than you.
Watch the movie "Office Space".
Seek out the smart people in the organization, avoid the idiots, and listen more than you speak. You're a newb, no matter how smart you are, so shut up and learn.
According to Larry Wall, Randal L. Schwartz and Tom Christiansen:
1. Laziness - The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.
2. Impatience - The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.
3. Hubris - Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.
There are the easy ones already provided that go along with being a human being people like being around like hygiene. Most of the rest is completely relative to your employers environment. Behavior that will make you popular with you co-workers where I work would get you fired in a corporate environment and vice a versa. I think what you really want is a good resource for behaviors that will lead to success in your career. You should pick up a copy of Apprenticeship Patterns by Dave Hoover and Adewale Oshineye. It has also been made available online as creative commons through O'reily's site.
1) Good personal hygiene - shower, brush teeth, wear fresh clean clothes comparable to others around you, as mentioned many times here already.
2) Be a team player.
3) No "pride of ownership." You'll be much more successful by building on other's ideas - adding to rather than fighting against.
4) You will fail if you don't help make your boss look good.
5) You will fail even worse if you stab your coworkers in the back.
6) Don't be naive. There are backstabbers out there. Avoid taking a knife in the ribs yourself.
7) Be nice and fun to be around. Work isn't always dull and "nose to the grindstone." Every organization relaxes and lets their hair down after a major accomplishment or during a breathing spell.
In short - work is just another set of relationships. Think about how your actions affect your relationships with the people with whom you work.
- Cardhu
1) No matter what assignments you are given, make sure you understand what is required before you start work. 2) If at first you think you are being given tasks that are beneath your skill level, hit them out of the park nevertheless. These early successes will establish your brand as someone who can be trusted with assignments, and that will lead to more challenging ones. 3) If you are working on a team and you have a choice of seating locations, choose the one that will place you closest to your teammates. You want the lowest barrier to communication you can get as you come up to speed. Your own office, or working from home, will mean you will come up to speed slower and your career progress will be slowed. 4) Ask your teammates for help when you need it, but do not ask them to do your work. Remember or document their answers so you never have to ask the same question twice.
Best advice: Listen to the others working there. THEY know what's going on, you don't. Don't talk unless you're asking a question for the first several months and LISTEN to the answers. DO NOT speak ill of anyone.
Now, the first guy to start telling you how things are and offers lots of unsolicited advice is probably the office blowhard. Take all his (and it will be a male) advice with a large grain of salt.
Life's too short, period.
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.
This reminds me of the Brady Bunch episode where Peter decides that he has no personality and starts talking like Humphrey Bogart.
Don't be arrogant; show some modesty or humility in regards to your skills no matter how 1337 they are. The other side of this is be open to new ideas, even from non-technical people.
Try to have some empathy for people, especially non-technical people you may have to work with. No matter what you know now, we all started out knowing the same thing: nothing. People will have a lot more respect for you if they know you are trying to engage with them on their level.
"You never know when some crazed rodent with cold feet might be running loose in your pants."
-Calvin
Hi,
There will inevitably be someone there that won't like you, and no matter what you do they may continue to dislike you. No matter how careful you are you will inevitably make some bad choices, miss opportunities, and be on the wrong end of an argument and that is how you will be defined. People far less deserving than you will be your superiors and promoted ahead of you. You will be blamed for mistakes you didn't make, and have credit for your successes stolen from you. You will be driven to the point of doing things you know are wrong to stay competitive. Ultimately you will be sorely tempted to give into despair and cynicism and simply try to exist with as little pain as possible.
If you want to be well liked, understand this. Understand it when you begin your career and wonder at your coworker's lack of enthusiasm and reluctance to take chances. Understand it when you work 60 hours per week to save the project and it fails anyway due to reasons beyond your control. Understand it when you are promoted and people you thought were your friends become your enemy. Understand it when you are in the boardroom and your colleagues snicker at the thought of those below them. Understand it, but do everything you can to free yourself from it.
Basically, be modest. Never complain. Two ears, one mouth, use in proportion. Don't criticize other people's code because there's often a reason for something looking hacked. And even if something is hacked without a good reason, don't belabor the obvious. Remember people's names. Dress conservatively. Smile.
Software is a team effort, so there's a lot of importance in getting along with teammates. If you end up in a dysfunctional group, don't bitch about it, get another job.
Don't take blame or blame yourself. When things go wrong, you usually don't know why at first. Wait it out to see what the real matter was. Good luck.
Best regards.
At a hiring event at a hotel, I overheard a hiring manager of a large defense contractor in the restroom ranting about the college kids he was interviewing. Paraphrased, "They're all technically competent as engineers! But there are no social skills, no fit!" He was yelling. He went on to rave about a female engineering interviewee, who was "confident without being arrogant, funny, and personable" and how she would be a perfect hire, because she was sociable. I can guarantee the "work, not talk" line wouldn't have worked on this guy, at least.
Also, have you ever read The Art of War? It's not about avoidance and being a lone wolf. It is about facing conflict head-on, adapting to the environment, while stressing unconventional approaches (attacks). Eating lunch alone, cold shouldering coworkers, being an oblivious worker drone - this is exactly what Art of War warns against.
Hi, Rule #1 It's not about you, it's about them. Rule #2 Refer to Rule #1. This may seem overly simplistic however; it is true. You are there to perform a service. Period. Not to smooze, pickup girls or pick your nose. In order to perform this 'service' you have to understand what is expected of you at multiple levels, professionally, technically and interpersonally. The best way to understand what is expected of you is to listen, I mean listen, to your boss first and formost and then your co-workers. And I mean really listen. Not only to what they say to you but to each other. Then you will start to understand where they are coming from. I have an old saying: "You can't avoid being run over by the bus unless you first see where it's coming from." The same is true with people. The only way you can figure out what is expected of you is to understand what others expect of you. And the only way to do that is to put yourself in their place. In other words, you have to see where they are coming from. If you do this one simple thing it will save your ass over and over again throughout your career. Now, I did not say you have to turn into a Vulcan and act like Mr. Spock. It's exteremely importaint to have good interpersonal skills at work. The point I'm trying to make is that in order to do your job effectively you have to know what is expected of you and if you listen and observe others around you at work you will figure it out. Otherwise, the only thing they will think that you are good for is to be a 'Code Monkey' for the rest of your life. Like me...
In some instances a person would want to leave at their scheduled time every day.
When your ride home operates on a schedule, then you need to keep to that schedule. Transit riders have to deal with this because they can't control the timing of the bus or train. Car pool riders may have a bit more control, but at the cost of impacting the other people in the car pool.
Of course, there are advantages to having a tight schedule because of your transportation choice. You can have a definite stop point for meetings, encouraging people to get things done rather than waste time.
Dear douchebag who ripped through the thread about Argentinians and moderated everything off-topic: "Off-topic" does NOT mean off the topic of the article. Off-topic means off the topic of what the post is replying to. If somebody is talking about being an Argentinian and not living in the US, a reply about Argentinians living in the US is NOT off-topic!! It's mods like you, whoever you are, who make people lose faith in the /. mod system!
Now this post, THIS is a post to mod off-topic.
"I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
Many good and many funny comments.
My advice is to have an execution attitude. In other words, get things done. Your boss will love you if he knows that he can give you something and know that it will get done.
Just treat the others as you also like to be treated. Don't annoy people, try not too hard to bring always input into something where it doesn't make sense. Nothing is more annoying then somebody that always needs to say something to every topic. Also always keep in mind that your coworker maybe do things another way as you learned, try it first out before you say it is crap. In simple words: Be a nice guy, try to help and work hard.
For starters I'd recommend being adaptable, not every manager is the same and you should be able to react to whatever plusses your boss (if only to smooth out communication and process, not necessarily because they'll always be right or good).
I'm an engineering manager, and my expectations of my employees are openness, dedication, honesty, critical thinking skills, and either technical prowess or an honest acknowledgment of their limitations and a willingness/ability to grow. There's nothing worse than someone who doesn't know how to do something and is willing to allow the project to suffer rather than admit they don't know what to do. As a manager, part of my job is to make sure that I get the most out of you, limitations included. I don't want to fire you if I can avoid it -- hiring and firing are a huge pain in the ass. Reduce the opportunity cost of being fired by doing your best to contribute.
I will ask you them to work late hours sometimes, and I tell them upfront that it's part of the job. I don't try to do it often, because I respect my employees and I try to be fair -- but sometimes everyone's crunching, and hiring someone else isn't an option. I expect everyone to want the team to succeed, and I try to provide clarity on what "succeeding" means. I try to set clear goals for individuals, and let them know whether or not I feel they're meeting their goals on a regular basis. You should expect all these things too -- and if your manager is not doing one of these things, you should feel very comfortable telling her so.
Despite someone else's commentary on the subject above, flatly saying you will not work overtime or that you will not work on a weekend when I feel like it's absolutely necessary will reflect very negatively on you. Feel free to raise your objections or ask that I do a better job of preventing such situations from arising in the future. Take me to task, but don't refuse to do the thing that your leader feels is necessary for us to succeed.
If you don't respect your leader and you feel like you're competent, a strong developer, and experienced - establish yourself as being self-managing, take your manager to task frequently, and challenge decisions respectfully. You will eventually be left alone. If you don't respect your leader, and you're very very green -- you may just have to take the blows and try to make the most out of the experience. Most people have to eat a little dirt in the beginning.
If you accomplish something, don't be afraid to market yourself and pump it up. Lots of developers will feel as though they're unappreciated, but very few are any good at helping a manager understand the impact of obscure changes they've made. If it doesn't have a clear business impact, sometimes even a very good manager won't feel it was a big accomplishment unless you clarify it to them. Or, on the flipside, a good manager may be able to tell you "I don't think it was worth spending 8 weeks rewriting our caching layer for a 2% speed increase" and help you set yourself up for bigger accomplishments (or more impactful uses of limited time) in the future.
Somewhat valid point, except the people with those total "dead end" jobs are responsible for furthering themselves. The grocery store or janitorial service or landscaping firm isn't going to pay for their education or have any vested interest in helping them advance their careers and quit the jobs they were hired for!
The reason it seems relatively "more unfair" when people in I.T. get treated like crap is because they already did all the things society told them to do.... They got an education and invested a lot of personal time and effort in learning and keeping up with their field. They're *supposed* to be people earning a higher wage (just like those checkout clerks and ditch diggers were promised they could do too, if they'd apply themselves and get an education, etc.). And yet, here we are, demanding 60 hour weeks from them, and/or expecting them to be on-call over entire weekends or evenings, via cellphone or pager.
I'm not trying to exaggerate the plight of the I.T. worker by saying all of this, so much as I'm pointing out the grim "bigger picture" it paints.... Perhaps our country isn't in a position to really sustain more than a relatively small percentage of citizens earning jobs paying far above minimum wage?