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
I've been in two companies that have two completely different approaches.
One just wanted to get things done. They didn't care how it was done, if it was appropriate, well-kept or even how flexible it was. They weren't very forward-thinking and technology was not really frowned upon, but they didn't seek it out or how it could help them. When new tech was introduced, at that point it was frowned upon. They also wanted things done their way. Traits? Conservative.
Another company I've seen wants your stuff to be well-kept, correct, flexible and they welcome new tech. They also are very keen on new ideas and input from everyone. Traits? Fresh and future-thinking.
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
Test your code vigorously - even after you make small changes. It's easy to develop a rep as a sloppy guy when you're new. Be sure to observe proper code versioning and deployment/staging processes.
If you find bugs in other peoples code, try to be a diplomatic as possible. Downplay them and ask if they are indeed bugs. Don't be a computer nerd with a superiority complex - even if the shortcomings you find are obvious.
Ask questions about how code works. First it shows that you care, and second most people generally like teaching. of course there are limits to this. You only ask when you can't figure it out. Ask too much and it just makes you seem lazy.
Ask to do the shit jobs.
Generally just be humble and eager to learn.
Wheaton's Law.
I have a co-worker that knows all of the ins and outs, and is able to fix most anything.
His skill is not at all appreciated because it seems like it is more impressive that somebody was able to survive his self aggrandizing "you couldn't do this without me" bragging than it is that he was able to solve the problem.
Yah, don't be that guy.
And don't be such a kiss ass.
If you mod me down the terrorists will have won
Find a good and novel lunch place, social is very much more important than ability, this goes for any company really
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!
You're a programmer - what the hell do you care?
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.
Be open minded, no matter how stupid a suggestion or opinion is, take it seriously, listen and ask questions. This will allow you to catch your own mistakes and it will garnish the respect of the person making the suggestion. You may also be suprised how fast stupid ideas can get on track towards being a good idea.
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
Be humble. Be nice. Be neat. Be punctual.
Follow the guidelines (you will soon find out there are unwritten ones; learn them and follow them as well).
Be proactive. Work hard. Help others get their job done. Ask for help to get yours done (but try not to make a habit of it).
Find out who are the ones that can teach you stuff, and let them. Find out who are the ones who will syphoon off your productivity for their benefit and leave them alone.
Do leave a paper/email trail of the work you have done (I'm assuming here you will work a lot - if you want to be a chairwarmer, forget that last part). Do not leave a paper/email trail of your opinions on someone else's work or, worse, life (better yet, avoid gossip entirely, work-related or not).
Don't suck up to people, but don't be a pushover either. Respect your co-workers. Stand your ground but remember that you make mistakes too; keep an open mind and be ready to acknowledge your errors.
BE RESPONSIBLE.
Be patient with non-geeks, they are often nice people (believe it or not!) and they probably know way more than you do in their area of expertise (which might not be obvious at first).
Keep track of everything you need to do (a TODO list, marked emails, list of tasks, whatever); keep all this info readily accessible all the time.
All I can think of right now.
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.
Rule Number Two: "It's more important to get along with others than to get your work done." See also "How to Win Friends and Influence People" by Dale Carnegie. Yup, it sounds corney, but it will change your life (and future career).
(BTW, if you're wondering what Rule Number One is: "If we can't have fun, by God, we're leaving.")
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.
My personal experience is that, if you work hard and give respect to your coworkers, You'll be Welcome anytime, despite any bad traits you may have.
;-)
You're on the right track because You are asking yourself how to get better at work, do that with your colleagues and you'll be good! "What can I do to help You with that?" often do the trick, if you are looking for a starter motto.
After 12y in this I actually have two mottos:
1- that above, the standard one
2- "Sounds impossible to me" if I don't like the project/ideav
nop, nop, nop #VBLANK
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
There are two opposing forces in this discussion (possibly three, depending on your perspective).
The company perspective:
They want you to be quiet. They want to to take orders. They don't want you to ask for a pay raise. They want you to go out and learn things on your own time so you can contribute them to the company. They want to promise you equity that costs them little and sounds like it gets you a lot. They want to minimize the cost to them that you incur (in the form of new hardware and software tools). They want you to do things that look good, not that are actually any good from an engineering perspective. They want you to buy into their marketing and business hype because any sort of true engineering rigor takes too long for them. Not that it matters any, since they have no idea what it is you really do.
The engineer's perspective:
You want to learn. You want opportunities that, by their nature, will teach you by experience. You want a taste of new ways of working and new tools that don't take up all of that time you want to spend with your family, significant other, or friends. You want to do things the right way, not just because a timeline that was set by some manager who either has never programmed or has not done it within the last five years has you working towards a deadline. You want to spend the time to learn how to do it right, so you do less work and better things later. You need to realize that what you do is closer to an art than merely stringing a set of components together, the errors that come out of which you are solely responsible (because it can only ever be your fault, right?). You want to believe in your product, in the threads that bind it together, in the ideas that maintain the appeal of it, both from a user and creator perspective.
The way I look at it is you can be a drone or a diva, or somewhere in between. As a realist, I'm happy basically in the middle, but I wish I was more on the diva's side of things without being so full of myself. That said, you must always be vigilant that others do not take advantage of you. What you do is not the best, it's not perfect, but be damn insistent that some Joe Blow out there couldn't even do half of what you do. You are not "just an engineer."
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.
Dress one notch above your co-workers. This will subconsciously cause your co-workers and bosses to have a better impression of you. Don't out-dress them to the point that they consciously notice it. This will be a distraction and have negative results. Just one notch above the rest.
Don't underestimate the effect this will have on your career. You only get one chance at this -- at the beginning of each job. Trying to crank it up a notch after you've been at a place for a while doesn't work.
Test building any code you write on all supported platforms and configurations before you check it in. Nothing pisses off other developers like some newbe checking in code that doesn't compile and breaks the build.
Just in case you missed the point, Don't break the build.
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.
to answer the side question, i don't like when people make a vague critique to my work right away. it leaves the possibility of them being careless in their review and it sticks in my head for hours to figure out whether it is my ego or they're being stupid.
also, i don't like people who takes responsability when they don't want it just to show they're "cool" (unless they do it with as much effort as they would when they are really interested)
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.
This is all you need
http://www.codinghorror.com/blog/2006/05/the-ten-commandments-of-egoless-programming.html
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
If this is your first IT job, relax. Nothing very difficult is expected of you. It will come in a few years, but you can relax for now and just do a good job.
Rule 1. Don't be a dick or a c***. Every other expected social convention with come with time. People talk and it will get harder to work at the company once one of them moves up into management. You can only be a dick if you have top-notch technical skills unmatched by someone who is not a cyborg. Otherwise, you will find yourself working on a 20-year-old system written by a chimp.
Rule 2. If your boss is a dick, most people will think the same thing. However, that does not give you the right to say it around the office. There will be some kiss ass who will repeat it and you will suffer the same fate as rule one. If you don't have anything nice to say about someone then it would be best to keep your mouth shut.
Rule 3. Cubicles have ears. If you find yourself needing to take personal calls, take it on your cell outside or in your car. I worked at a company and a coworker was taking calls for other jobs at his desk. The management became angry and fired him for it. I have seen it happen many times since, as those people were no longer "team players". In addition, people don't want to hear about you mom's surgery.
Rule 4. Relax. If you worry about situations that are not going to happen, then you will just give yourself an early grave. So Relax.
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!
Don't use any products made by Apple.
Isn't it a little to late, Bill?
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".
I've been in one form of I.T. management or another for the past 10 years. And in one respect, I.T. is no different than any other occupation: the people who care, who put forth an effort, and want to really succeed, are less than 5% of the total population.
In other words, keep going down the path you're already headed.
... or be someone's bitch.
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
First, dress the part. Get some threads.
Be a bully, push, shove a bit. Do not allow anyone to push you around, practice verbal karate. Software design places are antisocial and you can expect to be dealing with all kinds of egos, politics, etc.. you have to be on the side that does NOT get kicked in the head.
Software people are rude and egocentric.
Get used to being interrupted mid-sentence, you have to sort of learn to ignore this and talk right over people as if they're not there.
Be a know-it all, but be terse and succinct. Convey concepts in 8 seconds or less.
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.
That was depressing advice.
Is work REALLY that scary and dangerous that you have to turn yourself into a personality-free, boring, lonely robot to survive it? Is that really worth while?
If you have to work that hard to avoid being a target, maybe you should find a more human career or company.
* 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...
1) SHUT THE FUCK UP. You are not paid to talk. You are paid to code.
2) DO WHAT YOU ARE TOLD. You are not paid to think. You are paid to code.
3) IF YOU DISAGREE WITH YOUR INSTRUCTIONS IN ANY WAY: See rule #1.
4) YOU CAN BE REPLACED AT ANY TIME - Always remember this and act accordingly. Making personal sacrifices is ESSENTIAL to maintaining your employment.
5) GET USED TO BEING MISERABLE. It will happen sooner or later. There is nothing you can do about it if you wish to stay employed. Happiness is all well and good but it won't put food on the table.
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.
Translation: I've moved out of my mother's basement, and the world above ground is all bright and shiny. What do I do?
I want to delete my account but Slashdot doesn't allow it.
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:
It appears that you will not have anything to worry about. Any graduate so willing to compromise the very essence of their personality and being in favor of total assimilation as an automaton code monkey shall be duly rewarded by the soul-less creature that is the American Corporate entity.
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.
- Look for the most neglected and unpleasant chore on your team's docket, offer to take it on, and do it *with a smile* (there's no point if you're going to piss and moan the whole time.) You'll be hugely popular for doing something that the rest of the team dreads, and your bar for success will be REALLY low, since the project was a disaster before you got there.
- Don't let the perfect be the enemy of the good. The perfect solution delivered after the product was supposed to ship is much less useful than the good-enough solution delivered on-time.
- Don't participate in toxic conversations about how much your company sucks, or how management can't find their asses with both hands, or how stupid the direction of the product that you're working on is. Even if those things are true (in which case you should be on the lookout for a chance to jump ship), it doesn't help *you* to participate in the complaining, it just makes it harder to get out of bed each day. Until you can find something better, do your best to re-direct toxic conversations with something like "OK, I suppose that's true, but given where we are, what can I do to make it better for us." Then do the best work that you can with the situation you're handed.
If you are in anything but an anal-retentive religious GPL workplace, using vi (and putting down everybody that uses a *gasp* IDE) just makes you look like an ass. Use the appropriate tools for the job. Most developer jobs are *not* productive if all you use is vi*.
*though I've never used vi unless nano wasn't installed. Seriously, I have better things to do with my life than learn vi.
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..
Well, I see that having an ethic code is irrelevant to you. I do not use any kind of privative software. How about that? Explain to me how is that ethical choice not a respectable one?
On the other hand, I wasn't trolling on my previous post, or even talking about the specific "use this os" issue. I was talking about doing whatever is asked from you at a job. If you are a professional, or plan on being one, you'll do what you consider to be the right thing. If you'll just do whatever your corporate overlord demands from you, then you are not a professional, you are a highly trained prostitute.
WTF am I doing replying to an AC at 5 A.M on a Friday night?
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..."
If you're on the clock, find some work to do. If you get it done, do some more. There is always something useful and productive to be done that will further your job and your career, even if your boss is too busy for you right now or didn't give you enough official tasks.
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.
1)Be NICE to *EVERYONE* , even if you hate them UNLESS:
a)You are a UNIX sysadmin
b)You are actually the top 1% of the top 1% of the best in something.
Being nice always gets you your next job.
Focus on customer service and support whenever possible - and don't talk bad about ANYONE to ANYONE you work with.
It's a social game and nice guys do get ahead. (They don't win, the psychopaths win.)
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!.
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.
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.
Work Hard!
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
Life is too damn short to be shoved into some dumb-asses idea of a bottle. If you know your stuff, then try to get along with people. Its just that I've worked at too many places where you get treated like shit. They want free labor, they want to to carry a baby monitor with you 24/7 but without compensation. They want to wake you up in the middle of the night and then tell you "Oh, it just fixed itself, or its all better now". FUCKIT! There are wayyyy too many companies that don't give a crap about you. The fact is that you are easily replaced. Even though you just started, you need an exit strategy. Set goals for what you want to do while you are there. If at some point that their goals are being met, and your's are not, see if you can change that situation. If you can't. Use your exit strategy. Note: be certain you have a place to land before pulling the pin. Also, DON"T TELL ANYONE that you are pulling the pin, about to pull the pin, or even that you have an exit strategy. DON"T TELL ANYONE. DON"T TELL THEM! If you tell them, the exit strategy won't be yours, it will be theirs, and when its convenient for them, not you (and likely sooner than you want). Many of them will go out of their way to make sure your soft landing is broken if they find out, and then you will be outed, without a soft landing, and you WILL have to become an independent contractor. They will not give you references, and WILL put bad words in for you all over town. Understand that software companies are malevolent creatures. Watch your ass at all times.
Use vi to compose all documents you will be required to write on the job. Make sure everyone in the office hears about your use of vi at least once per day and expand on how they are stupid !1337 lamaas for using MS Word.
Don't do any work, spend the day reading slashdot, downloading movies via bittorrent and picking your nose.
Go out of your way to make your coworkers miserable and unable to complete THEIR work. If they get work done and you pick your nose all day.. their actions are making *you* look bad.
When you are given an assignment tell your manager in no uncertain terms your displeasure with their behavior and suggest in the future they not ask you to do something either they or other bottom feeding morons in the office could just as easily complete themselves.
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.
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.
1. Keep consistent hours. I don't care if you're an early bird or a night owl, just make it possible for someone to figure out when you'll be around.
2. Don't be afraid to admit you don't know something. Ask questions if you're confused.
3. Be nice to everyone. This includes the janitorial staff, the receptionist, the sales guys, everybody. You never know who might be able to help you with something later on.
4. If you say you'll do something by Friday, and you know by Wednesday that you aren't going to make it, let someone know right away.
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.
Don't stay late unless you are playing an online game on the company paring station, also, try your best to continue playing said game while you try to help out with a critical production-delaying issue... yeah, that always wins points in my book... also it helps to spend all day long programming on a Linux paring-station, but not know the first thing about symlinks, ownership, etc. and ask the system's guy for the most rudimentary help. Yeah, follow those rules and you will go far, as long as you don't want to get along with the guy who manages your workstation & is the guy who has to take the first look at all the trouble tickets that might come your way.
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.
What an idiot:
Not just two kinds of Portuguese, but Polish and Russian too, as well as the mysterious “Spanish (International Sort)”.
There are 21 countries that speak this language, there are all sorts of Spanish, and it isn't as easy as it seems to understand each other. The "Español Neutro" which is the same as "Spanish (International Sort)", is one which tries to use words common to all countries(Hard when speaking, not so much if written). From what i heard it's a similar story between Portugal's Portuguese and Brasil's Portuguese.
Leaving that aside, in Argentina we have only the app store(Since the iTouch) and iTunes U, but no songs, movies, etc. It's kinda sad the online music stores that are available here. For example(IDK if there are others): http://www.personalmusica.com.ar/, full of sick DRM, dled a song just for testing and it didn't work, also, noone helped me to get it at their call center. As i was just testing, i didn't care to get the song(It was just a random song anyway)... I'm kinda tired...
Bye
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."
then good luck
From my own experience. I would say don't try to fix coding errors on a project if it has been around for a while and several programmers have worked on it. More than likely someone coded around that error because they were lazy and didn't feel like fixing it in the first place or know where to fix it. Simple point is, fixing one thing can break 100 other things.
I have seen several projects like this and they are more common than I would like to think. If there is still a programmer around that worked on the original project ask them. They can generally tell you why things are the way they are.
Coding comments are not for ranting. I can't name how many times I've been going over some code and run across some rant by a programmer, about how they fixed all of these problems, what was wrong, etc. Make comments relevant to your code.
Oh and look out for the one upper. They will always exaggerate there abilities and make the simplest code overly complex and not understand what they did. (I.E. copied code from a bunch of places to do what they wanted.)
The first thing to do is to value yourself. Soon or late you have to reach the equilibrium with your coworkers and bosses. If you are working too much to impress your bosses, then maybe your bosses will be impressed, but your coworkers will be jealous at you, because then they have to work that much too, or are lazy, or don't have your skills etc., and then try to marginalize you. Ditto if your skills are higher or try to do every task they may ask (at cost maybe of overloading, overworking, etc.), because soon or late you'll be drained out of your energy by your boss and even your colleagues, asking more and more (and most often for sure they won't do the same, bacause maybe they can't or won't change their rituals), and you'll get frustrated and angry.
Whenever you write any code, think of the person who's eventually going to be maintaining the code after you leave the company or focus on different areas.
Try to look at it from the perspective of someone who doesn't know the history of the code or any undocumented hidden knowledge like "before calling function X, you need to set the global variable Y to Z" or "these 3 lines don't seem to be doing anything useful, but removing them will mess up something in component W".
That should be all you need when deciding how much to comment, how to name your variables, etc.
For countless times I've had to maintain code where the previous developer hacked something together, saw that it worked and then left it at that without any cleanup.
Another thing to keep in mind is the debugability of your code. Consider a line like
Record rec = Factory.createRecord(ModuleCollection.retrieve(DatabaseConnection.CreateDefault(), 'BillingModule'), RecordType::INVOICE, stateHandler.getCurrentState().getIndexData().getIndex());
and imagine wanting to know the return value of getIndex() before going into createRecord() while debugging. And then consider refactoring it to this:
DatabaseConnection db = DatabaseConnection.CreateDefault();
Module module = ModuleCollection.retrieve(db, 'BillingModule');
IndexData indexData = stateHandler.getCurrentState().getIndexData();
string index = indexData.getIndex();
Record rec = Factory.createRecord(module, RecordType::INVOICE, index);
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..."
Don't drum on your desk and tap your feet in time to the music you're listening to on your headphones.
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.
The bad hygene one wouldn't be good, but in large companies it helps if you are known for SOMETHING.
Even a massive screw up isn't all bad :)
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.
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..
You'll get a Personality quiz http://en.wikipedia.org/wiki/Personality_quiz which will reveal any Personality Pathology http://en.wikipedia.org/wiki/Personality_pathology and Personality Disorders http://en.wikipedia.org/wiki/Personality_disorder and you can't do a thing about it.
But more seriously, it's who you _are_, too late now, it's almost impossible to change or fake it in the long run.
"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
Mirror the behaviors that you see in others at the same location.
- Dress about like they dress - look at your boss, not the coworkers.
- Shower as often as your boss showers (less than every other day is pushing it in the USA)
- Don't cuss more than anyone else and never at inappropriate times - I actually started looking for a new job due to profanity getting out of hand
- Work hard and a little long, but not too long. You are setting a standard this first year.
- If you like your office mates, have fun outside work with them. Join the company softball team, go drinking, meet their families.
- I think you'll be surprised that measuring your productivity really isn't done. Companies make up an annual review process so they have a way to reward and give feedback for the things you are doing right and wrong. I always appreciated the honest feedback.
It is just a job, so after a few months, start thinking about what you'd like to do next and next and next so you can get to work on gaining the skills required.
Like a PIMP
Don't take credit for other peoples work and more importantly don't let others take credit for your work.
(Appropriate side question: What behavior traits would you like your co-workers to exhibit?)
Complete and utter obedience to my will, slavish eagerness to satisfy my slightest whim and groveling submisson to my overwhelming animal magnetism. I'd really like that.
However, I have to settle for hoping that they'll keep the annoyance level to something almost tolerable and that they don't fart in my cubicle.
Be yourself. Don't try to be fake, or, eventually, people there will find out, then see you as a liar.
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.
What bosses love to have around are smart people who get things done and don't mind working 60 hour weeks standard
Oh bullshit. If you are regularly working more than 35 hours per week on average your manager is completely incompetent either for hiring an incompetency or inappropriate skills or for being incompetent manager of time and priorities.
You shouldn't have to destroy your life, health and income to cover someone else's incompetence. Pardon my French, but that's just plain fucking wrong. If you actually want to work longer hours, fine, but at least get paid. There is an established rate schedule saying when you go over 40, you get time-and-a-half and when you go over a second threshold it goes up to double pay.
Besides, if you've spent any time in industry at all, you already know that extra hours mean lower productivity.
> 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. ... ]
[
> 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.
Your advice seems to contradict itself...
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.
...Is obvious
NO: I can't believe it, Jim. That girl's standing over there listening and you're telling him about our back doors?
YES: [yelling] Mister Potato Head! Mister Potato Head! Back doors are not secrets!
NO: Yeah, but Jim, you're giving away all our best tricks!
YES: They're not tricks.
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.
General office etiquette applies regardless of the department you work in. My daughter recently got her first office job and I've given her the following advice:
1. If someone is willing to talk to you about someone else then they are willing to talk to someone else about you. (the long version of "avoid gossip and office politics")
2. Never pass up an opportunity to shut up.
3. Be professional.
4. Be on time (actually, be 5-15 minutes early).
5. Fess up early when you don't know.
More specific to programming would be:
1. Coding conventions you learned in school were for the "generally accepted practices" and are usually a few years behind. Go with whatever your new employer uses and ask why they don't do it a different way instead of telling them the need to do it a different way, :P
2. Always check your code into VSS (or whatever code back-up program your company uses).
3. Use full, properly punctuated, properly capitalized sentences in all electronic correspondence. Ambiguity costs money in the long run.
4. Don't take your company's prototype(s) home with you and accidentally leave it in a bar for a blogger to find and dissect.
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
I have one indian co-worker with anger management issues
Be polite.
Be efficient.
Have a plan to kill everyone you meet!
.. have failed.
Otherwise you would not be asking this question.
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.
If you are asking questions like this go into management. IMO, the 5 "good traits" all software developers should have:
1. Write good code.
2. Don't be an idiot. See 1.
3. Do what you know is right. See 2.
4. Work hard. See 3.
5. Don't allow people to waste your valuable time on administrivia and corporate nonsense. See 4.
At the end of the day, that tie, bonus, promotion, corporate reputation, etc is all nonsense. Either you've built something useful to humanity and the business, or you haven't. If you happen to make it to 60-80yo, are you really going to look back and be proud of the clothes you wore? the butt you kissed? the compromises you knew were wrong?
Or are you going to be proud of the clean and efficient code you wrote? The projects you completed? The capabilities and services that you gave the breath of life?
If your answer is the former, go into management, we don't need you. If it is the latter, welcome to the club. Go change the world. --Pete
Are you suggesting that software companies are run by normal people?
IMHO, one of the best things you can do to impress your bosses is to have the bollocks to own your mistakes.
Always be the first to admit you cocked up (and dont wait for someone to ask you).
the movie Office Space.
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.
NOTHING.... know this one thing and I'm serious, school likely didn't teach you one thing about this new job so go in with an open mind and you'll learn more on your first day than you learned in 4 years of school
Two words: liquid lunch!
Be communicative. If you have issues with something, tell your boss *now*.
The following situation looks like slacking-off and finding an excuse:
"Boss: why did it take you so long to do that?
You: "
A "Boss, I'm having issues with that thingy so it's going to take a little bit longer than expected" will really be appreciated.
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.
The people who get ahead are the ones who brown nose the holy living hell out of the boss. Just don't admit it's brown nosing. Don't call it "sucking up." But it really is "yes men" who make it to the top. Always be the second best dressed person in the office. Don't outdress your boss. Play golf. Go to the beer blasts. Don't touch the women at work.
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
in your first few weeks put forward a good effort but do not put forward your best effort.Whatever effort you put forward in your first few weeks will be the standard set for you. So if you can't consistently code 1000lines/day, do not code 1000lines/day in the first few weeks.
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
Don't get upset, swear at your computer, or otherwise show emotions that might put off others. If you are frustrated, keep it to yourself.
Be careful how you speak around women in the office. If at all possible do not date anyone in the office.
Some personal details are better left unsaid. You can't unsay anything and it might follow you for years!
Be mindful of badmouting. Try to avoid doing it and if someone is doing it of you, don't be afraid to defend yourself but be diplomatic (Ex: this is why I did such and such....)
Take responsibility for what you are doing. If you don't know what you are doing, don't just throw up your hands and push your work on somebody else. Ask questions, follow up, ect.
Generally speaking, I've found techical talent is less important than knowing how to talk to people and carry yourself.
Be professional
HTML is obsolete. It's time for a new, simpler and richer markup language.
Wow, this *entire* thread shows the Nugget Of Truth(TM, Patent Pending) that is the basis for the socially inept engineer/programmer/techie.
Asking "how do I fit in at work" is no different than asking "how do I fit in at school/home/the gym/etc". Your entire life has been filled with rich experiences that teach you how to behave around other people. If you are entering the professional workforce and still don't know how to read a social situation and interact with it in an appropriate manner, then the only advice is "be polite, respect others, and demand the same in return." No one can tell you how to make your boss like you anymore than they can tell you how to be the life of a party. You just do it.
On the plus side, if you were hired by a semi-competent manager then they already decided that your personality will work ok with the existing team. Some of the work has been done for you.
be nice to people - say hello, engage in chit-chat, at least pretend to care.
keep your desk tidy
the 'keep the coffee full' thing i saw from someone else is really good. while your at it, top off the printer paper
ask people advice (technical, non-technical doesn't matter)
remember, everyone knows something you don't know - even the person that vacuums the office
do your part for the overtime and weekend coverage, but don't do too much - just your part
have a ~few~ personal items - pictures, kids drawings, ... but just a few, enough to give people a superficial idea of who you are
be honest
don't engage in politics, you will lose. you'll be surrounded by people that are way better at it than you will be for years and years.
you will have a timekeeper, office manager, secretary, receptionist, ... keep those people happy. they can't really help you much, but they can torture you mercilessly.
don't think you know how to manage workstations better than the local IT (if you have them) You may be a wiz developer, but they know the environment from a totally different angle.
First of all, it is possible to be a jackass AND be a know-it-all.
My biggest concern is that I don't work more than 40-hour work-weeks, but I am as efficient if not more-so than those doing 60 hour weeks. I can do more in 40 hours than most can do in 60 hours. Your boss will notice this, and you won't burn out after a year or two. I've gotten 6% raises the last 4 years because of this, and the people working 60 hours a week are getting less, the boss knows that they want to do good work, and the only way that they can get their job done is to work 60 hours a week. Sure, if it's crunch time, put in some extra time now and then, but don't make it a habit.
PLAN
I plan my code on a white-board. I don't use stupid techniques to help auto-generate code for me. I find those to be a bigger waste of time when there is an error. If you need a ton of set and get functions for a single variable, then you're doing it wrong. Pass a structure or an array of data. Don't just sit down and start hamering away on the keyboard.
A typical day at a typical company can be something like this:
1 hour email (beginning of day)
1 hour email (end of day)
1 hour phone calls
1 hour lunch
30 minutes planning lunch
2 hours programming
1 hour debating politics
1 hour discussing progress with colleauges
Do everything by hand. Be 100% knowledgeable about your code. If there is a library you don't understand, find the code and read it. Understand it. Understanding is under-rated these days.
DON'T BE CLEVER
If you write functional code that is 50 lines and elegant, you win. Someone in the future won't curse your name. If some other programmer can write the same thing in 10 lines that takes more than a glance to understand, then they will be remembered as the jackass, and a future programmer having to maintain the code will re-write everything, so the company gets no benefit from having written the same code 2 times.
DON'T WASTE TIME COMMENTING
Comments are always going to end up wrong. You inevitably will maintain code, but neglect the comments. It's not cool to maintain comments, but it is cool to maintain the requirements specification. Instead of int x; for the number of mL of a fluid in blood, try naming the variable int bloodConcentration_mL;. This is definitely what you want to do with variable names. I constantly curse people who name variables a, _a, aa, _aa, aaa, _aaa, etc. Bloody buggers!
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!
Don't be afraid to say "I don't know" to a question, show them that you can figure out how to do things on your own.
Walk around your desk/cube and mark all exposed areas with urine, preferably your own. Then put a dead animal at the entrance of your work area to prove to the others you have the killer instinct.
That should do it.
The best tips I can give you are:
1) Always think first in what is best for the company business
2) Always think in long term situations, problems and solutions
3) Always be honest and transparent with what you do and you didn't do
4) When you face a problem (and I'm sure you will), work as doctors do, first apply a fast patch to stop the problem, second analyse the derivations from that problem and fix them quick, and third, create a long term solution so that problem never happens again
5) At some point, you will start to feel comfortable with your work, that is the time to keep the eyes open, because is probably the moment when you will make your big first mistake
I hope this helps you!
If you want to code video games, you will be expected to work 60 hour weeks standard and accept a lower salary than people who write some kind of business software. If you aren't willing to do this, you simply won't get the job. It is true that you will be a pushover with no respect from management, and also you will have low job security (the companies that actually write the games frequently disband between major projects), but that's how you get the job.
In the business applications world, there are more businesses that expect more reasonable hours for more reasonable pay, but there will always be the dance; management will always try to get you to over-commit and overwork to meet those commitments, while you try to under-commit. Much like a good stripper, you must tease management with what it wants without actually giving it.
In a few special cases (like one guy I know who develops software for the government) you will be paid a wage instead of a salary, in which case you will be ordered not to work extra hours without clearance (which is hard to get), and will have to sit through days of long post-mortem analysis meetings any time a project takes longer than estimated.
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
Find a place that is using SCRUM. If they are in a highly effective state, the interaction between team members and management is assured to be functional and it should be very easy to observe and adapt to the teams standard mode of operation.
In addition, interaction with management is the opposite from non-SCRUM shops. In SCRUM your "manager" or SCRUM Master is specifically their to serve the team as opposed to the team serving management.
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.
Watch what they're doing. Stand behind their left shoulder and watch every move. Breath heavily while you're doing it. Bonus points if you didn't brush your teeth this morning.
In conversations, when someone tells a story tell a better one. Same story, just BIGGER. When someone caught a fish, you caught a bigger one. Someone did a 78 round of golf? You did a 65 same course.
And people love to have someone knowledgeable about. When someone is wrong, let them know. Publicly. Even if you're not sure what you're talking about. It's for their own good, they'll thank you for it.
Okay, so you have read the rest, now watch the best. In this video I provide detailed instructions on how to become the ultimate developer.
http://www.youtube.com/watch?v=jhz-RdohR8U
I saw a post suggesting that you need to express a can-do attitude and work late and weekends. That's BS. If that's what makes your boss happy, or he requires everyone to be can-do when the task is can't do, you are working at the wrong place. Proper project management will avoid those requirements...so its a flaw in your boss if he requires that and you will be paying for it. So if that's the requirement, unless you can't find other work, don't bother. Find a dream job that you love with people who don't expect you to work overtime to compensate for their deficits.
The key to keeping a job is not being a Yes man. Its being confident in your abilities without being too cocky. Being cocky to a degree is necessary because its a sign of dominant mastery of your skillset. If you are the best, you know it. Its speaking the truth in a way that doesn't offend and acknowledges tough decisions and compromises. And its also about being fun to work with. If you're a stick in the mud, you're not going to be the last one to go.
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.
Personal hygiene and business dress are very important, but the #1 trait that has moved me up the ladder is:
To be able to explain technical details in plain language.
I cannot stress this enough, most upper management, including the PHB, are usually business/finance/accounting majors with no understanding of the technical jargon.
My boss recognized this and I was soon in front of many of the executives explaining what our department was doing and how we were going about a particular project.
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".
If you want to make a carrier there (but make little bucks): perform in the average, spend a lot of time at the cofee machine, always smile at the stupid jokes of your collegues, have extra activities out of the companies with company employees. Help them and never show-off yourself.
If you want to make money (but be fired soon): perform like a king, outdo everybody in the company, work work work. You will eventually be fired (one can't make more than the boss without paying a price for it) but at least you will have gained experience -and you will be ready for the next step.
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.
I like my co-workers to have breasts. It makes the day go by better. And no I don't mean chubby man-breasts.
Just don't be a cunt.
Of course, if you are a cunt you probably don't realise it, so here's a quick question that will help you determine if you are:
Which would you prefer: A pint of cold spit or a pint of warm piss.
If you chose the cold spit, you're a cunt.
If you chose the warm piss, you're a cunt.
Watch the movie Office Space. That will teach you everything you need to know.
Who are you?
Is your plan to collect the tips, form a grand strategy, and spend 40+ hours a week doing an improv act?
Mostly -- be yourself. Use the suggestions where they are things that you don't care about either way, things that you hadn't thought about, or hadn't considered the implications of.
There are a ton of different business cultures out there. Either you are a reasonably close fit, or you aren't. If you aren't, move on.
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
you are going to do, if you need help, ask for it, know how to communicate, be honest with yourself and others (not the same as "do not lie"), do not be a mess.
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.
Know the limits of your knowledge - when you need to take training, perform research, ask someone else, etc. Don't assume you know everything.
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.
(or so I think) is that a good company/manager won't really care about your habits so long as they don't interfere with your project or co-workers. They'll be FAR more interested in your contributions, and if they're not, time to start looking for a new job. (Unless the current one pays too well and has too good of benefits to blow off just yet... but this can be self-defeating in the end as your morale will undoubtedly plummet along with your performance eventually.)
Life's too short, period.
Solve more problems (both work and relationship) for your boss and coworkers than you create.
I really really LIKE a guy that walks around with a banana peel on his head and sociopaths are always well liked, YOU should do WELL !
A diaper instead of shorts is good, how about flippers for shoes ! Flippers, diaper, and banana hat IS THE WAY TO GO !
I remember when I gave that talk to the execs when I had this big wad of tape rapped around the bridge of my glasses, let me tell you THEY LOVED THAT !!
Big brown stains on the diapers would be a BIG enhancement ... ... try spreading some pomegranate juice around in your cube, THAT will make everybody feel REAL COMFORTABLE !!!
Although, I worked at a company that was OFF THE CHARTS with CREATIVITY they might be a little DIFFERENT from everyone else.
Oh, yah, there was that guy that wore a dress, falsies, and used the woman's restroom, HE GOT AWAY WITH MURDER !!!!!!
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.
Smell good, make a good cup of coffee, laugh at his jokes, redesign software (bug free) in minutes and increase company's earnings, clean boss's swimming pool, don't seem smarter than boss.
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.
"Making it Big in Software: Get the Job. Work the Org. Become Great." does a great job at answering this question by interviewing star software developers (even Richard Stallman!). Link to Amazon: http://www.amazon.com/Making-Big-Software-Become-Great/dp/0137059671/ref=sr_1_1?ie=UTF8&s=books&qid=1273828623&sr=8-1
Book recommendation: "Never Confuse a Memo with Reality". It's short and has a lot of useful, simple ideas. There are a lot of books out there that offer advice, but simply:
Don't diss the boss, to anyone except your spouse (and not around any kids you may have, unless you'll be hiding them from the boss during visits). Accept the work you are given; when the work is hard or the tech hard to understand, ask him/her if there are any hints s/he has to offer. (Unless the boss is non-technical, of course.)
Respect your fellow workers even when they don't deserve it; stick to your principles but be civil when arguing. Help others whenever you can afford the time, and don't be afraid to ask for information that will help you do your job. Build alliances within and across your teams; again, don't diss people at work -- you'll be respected and liked by most people, and no one will have to wonder what you say about them behind their backs.
Do your job as enthusiastically as possible. When the workload is too heavy, talk to the boss about letting you finish some things before s/he gives you others. When you have down time, go ask your boss for more work or recommendations on what to study to be ready for the next project.
Don't be afraid to apply for career-advancing positions, once you've been in the current position at least a year. Even if you don't get the job, you'll get the notice. Avoid lateral moves for the first two to three years in a position, unless you're in an extremely toxic environment (or you're talking about a move to something that's a _really_ good fit for you for some reason).
Don't dress more informally than your boss.
That's all I've got at the moment.
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?
wear sweats and old tshirts everyday, if its winter a hoodie too