Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
When do you know it's time to move on from your current job?

Problem: I had no prior experience when I interviewed, so I didn't know exactly what to ask them about the company when I was hired. I've spotted a number of warning signs and annoyances since then, such as:

  • Four developers when I started, with everyone talking about "Ben" or "Ryan" leaving. One engineer hired thirty days before me, one hired two weeks after me. Most of the department has been hiring a large number of people since I started.

  • Extremely limited internet access. I understand the idea from an IT point of view, but not only is Facebook blocked, but so it Youtube, Twitter, and Pandora. I've also figured out that they block all access to non-DNS websites (http://xxx.xxx.xxx.xxx/) and strangely enough Miranda-IM.

  • Low cubicles. Which is fine because I like my immediate coworkers, but they put the developers with the customer service, customer training, and QA department in a huge open room. Noise, noise, noise, and people stop to chitchat all day long. Headphones only go so far.

  • Several emails have been sent out by my boss since I started telling us programmers to not talk about non-work-related-things like Video Games at our cubicles, despite us only spending maybe five minutes every few hours doing so. Further digging tells me that this is because someone keeps complaining that the programmers are "slacking off".

  • People are looking over my shoulder all day. I was in the Freenode webchat to get help with a programming issue, and within minutes I had an email from my boss (to all the developers) telling us that we should NOT be connected to any outside chat servers at work.

  • Version control system from 2005 that we must access with IE and keep the Java 1.4 JRE installed to be able to use. I accidentally updated to Java 6 one day and spent the next two days fighting with my PC to undo this "problem".

  • No source control, no comments on anything, no standards, no code review, no unit testing, no common sense. I literally found a problem in how they handle string resource translations that stems from the simple fact that they don't trim excess white spaces, leading to developers doing: getResource("Date: ") instead of: getResource("Date") + ": ", and I was told to just add the excess white spaces back to the database instead of dealing with the issue directly.

Some of these things I'd like to try to understand, but I like having IRC open to talk in a few different rooms during the day and keep in touch with friends/family over IM. They don't break my concentration (not NEARLY as much as the lady from QA stopping by to talk about her son), but because people are looking over my shoulder all day as they walk by they complain when they see something that's not "programmer-looking work". I've been told by my boss and QA that I do good, fast work. I should be judged on my work output and quality, not what I have up on my screen for the five seconds you're walking by

So, my question is, even though I'm just barely at my 90 days: How do you decide to move on from a job and looking elsewhere, or when you should start working with your boss to resolve these issues? Is it even possible to get the boss to work with me in many of these things? This is the only place I heard back from even though I sent out several resume's a day for several months, and this place does pay well for putting up with their many flaws, but I'm just starting to get so miserable working here already. Should I just put up with it?

Edit: I appreciate all the responses! First: I'm in the United States, and I'm salaried, and I'm about 5 days away from hitting the end of my 90 day probation.

While it is my immediate boss sending out the emails I mentioned, I believe it is actually the department manager doing the majority of the arm-bending. He's also the only one with an office. My immediate boss is a nice guy, he is just complacent.

As I mentioned, the Facebook/Twitter/Youtube makes sense from an IT (and management) point of view. Some people do need to have these things limited, otherwise they would waste time on them. However, on occasion, I've come across Youtube videos that very well could be useful, such as when doing Android development (which I am). It would also be useful when it comes to the "research" part of the "R&D" department I work in. It could just be my naievity here, but I feel people should be judged on their work (speed and quality), not what they happen to be doing when you walk by. If I'm getting my work done, and the work is good, then does it matter what website I'm on?

Related to above, but I do understand the reasoning for limiting IM and/or IRC access while at work, and I do understand that they're paying me to be here and can dictate to me what I can and can't do. Though, again, judge me on my work not what's on my screen. Is this really so uncommon in a software development field? It is my understanding and my experience that staring at an IDE for 8 hours, typing all the while, is completely unrealistic. I can chat on IM/IRC, enjoying my time at work more simply because of this, without dumping my "short term memory", continuing to work on the problem in my head. I can't do that when Becky from QA stops to talk to me about lunch.

I feel I did luck out with this job, and I'm glad I have it. This place does have it's positives: Lax on the dress code, lax on when we have to be to work (before 9am ideally, some leeway here), great benefits. But, I'd seriously take less money if it meant that I could enjoy my day more just in the simple things that, I admit, are mostly me whining about. I just feel that if I'm going to be sitting behind a PC for 8+ hours a day, I'd like it to be as enjoyable as possible.

share|improve this question

marked as duplicate by Anna Lear Oct 22 '11 at 16:01

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

20 Answers 20

Run away, run very, very far away. And fast.

You can try to talk to your boss about the situation, but from what you've written, it sounds like there's a fundamental lack of understanding about the importance to programmers of communication with outside resources, general collaboration, and just taking your mind off your work for a minute or two. Frankly, it sounds like sweatshop for programmers.

In my city, we have a tech support company (they do tech support for a bunch of big companies, kind of a domestic outsource thing) that runs the same way. It's known as the "soul-sucking job from hell," because people are treated like prisoners and they were so crazy that you could potentially get fired for going to the restroom too many times in a shift.

Edit - Alright, let me make this a little more clear and deserving of the upvotes it (unexpectedly) got.

Four developers when I started, with everyone talking about "Ben" or "Ryan" leaving. One engineer hired thirty days before me, one hired two weeks after me. Most of the department has been hiring a large number of people since I started.

From the sound of it, there's a very high turnover rate. Turnover rate is actually a good indicator of the health of a company's environment. If people don't like a place, they're going to leave, it's as simple as that. While a revolving door is expected in places like retail, it's not so much desirable in an office environment (hence why places like Best Buy went through, and are going through, such radical changes as shifting to a ROWE). From a business perspective, turnover is bad, because it's costly. It costs quite a bit of money to go through the hiring and training process for each employee. Do this four or five times a month, without anyone actually staying, and you see how this can be a problem. If a company is expecting this to happen, then it's likely one that doesn't treat its employees well (one of the reasons why retail is notorious for high turnover rates, anyone who's worked retail knows what I'm talking about).

Extremely limited internet access. I understand the idea from an IT point of view, but not only is Facebook blocked, but so it Youtube, Twitter, and Pandora. I've also figured out that they block all access to non-DNS websites (http://xxx.xxx.xxx.xxx/) and strangely enough Miranda-IM.

This is, as others have pointed out, common in the corporate environment. Twitter is more or less as bad as Facebook. The non-DNS stuff is likely for security reasons, though I can see where it could hinder you in doing your job, depending on the details (one has to be able to access a remote web server via IP address if the domain name hasn't been set up/propagated yet, for example).

YouTube is more questionable, but I think falls under "block it all, because it's easier than trusting people not to waste their time." YouTube can be both useful for doing one's job, and a huge time waster.

Low cubicles. Which is fine because I like my immediate coworkers, but they put the developers with the customer service, customer training, and QA department in a huge open room. Noise, noise, noise, and people stop to chitchat all day long. Headphones only go so far.

Low cubes are great for fostering a collaborative environment (you're not physically walled off from others. However, sticking devs in with departments that talk as part of their job is a red flag. This indicates that management doesn't understand the need for allowing devs to have at least a quiet enough environment to be able to hear themselves think. If this was the most major problem, you could probably confront management about it and see about working something out, for the benefit of your entire department.

People stopping to chat all day is a typical part of the corporate environment. Depending on who it is, you may or may not be able to dismiss them, especially as a new hire. Do that to the wrong person and you could be branded as "not a team player" and effectively ruin your chances for advancement if you stayed.

Several emails have been sent out by my boss since I started telling us programmers to not talk about non-work-related-things like Video Games at our cubicles, despite us only spending maybe five minutes every few hours doing so. Further digging tells me that this is because someone keeps complaining that the programmers are "slacking off".

This is where I start getting to "GTFO" territory (with giving the OP the benefit of the doubt and it really only is a couple minutes in the day). It completely ignores the importance of taking your mind off your work for a moment and the productivity gains that come with it. It also shows that someone in company thinks that a programmer is supposed to do nothing but churn out code every second that they are on the clock. Anyone with even a cursory knowledge of how the creative process of programming works should know better. There are laws requiring employers give at least half an hour (unpaid) for lunch, and two fifteen minute breaks in a day, designed specifically for the benefit of the employee, to keep less-than-ethical employers from abusing employees.

People are looking over my shoulder all day. I was in the Freenode webchat to get help with a programming issue, and within minutes I had an email from my boss (to all the developers) telling us that we should NOT be connected to any outside chat servers at work.

This is, in part, why I left cubicleville. Shoulder surfers are common in a corporate environment, but that doesn't make it any less distracting. Again, I can understand, to an extent, the rules against chat, but developers should still be able to have the resources to do their jobs available to them. This should include some form of communication network.

Where I draw the line on this is that, instead of bringing you into the office and allowing you to explain what you were doing, as well as to explain why such rules are in place, there was a blanket demand from the top that any kind of chat was not tolerated. This says to me that management isn't interested in listening to what employees have to say, including business justifications for using such things as chat networks. When management starts getting a God complex and refuses to listen to the lifeblood of the company, then things start going downhill, quickly.

Version control system from 2005 that we must access with IE and keep the Java 1.4 JRE installed to be able to use. I accidentally updated to Java 6 one day and spent the next two days fighting with my PC to undo this "problem".

Regarding old software that's resistant to updates, welcome to the corporate world. Be glad you're not expected to work on Win2k machines.

That said, the way the version control is locked down, in my opinion, adds to the "they really need a lesson in tech management." While I don't expect cutting-edge tools, users shouldn't have to fight it to do their job. This fosters poor habits (who wants to use a version control system they spend more time fighting with, especially with people breathing down their neck to churn out ten thousand lines a day?), and also opens the systems up to attack vectors, because the software (particularly the Java RE) is not up to date and therefore still has security holes that would be patched if only they kept up.

Good luck getting management to understand this, though (no matter where you go in big companies). IT in general to them is that arcane thing that they occasionally call when they can't get their email. Getting them to wrap their head around the idea of making the company money by taking measures to ensure they don't lose money is almost impossible unless they, themselves are an IT person (which, in upper management, is pitifully rare).

No source control, no comments on anything, no standards, no code review, no unit testing, no common sense. I literally found a problem in how they handle string resource translations that stems from the simple fact that they don't trim excess white spaces, leading to developers doing: getResource("Date: ") instead of: getResource("Date") + ": ", and I was told to just add the excess white spaces back to the database instead of dealing with the issue directly.

This is a huge red flag, because this indicates that they don't actually care about the quality of the product that the company supposedly relies on. Even worse, they actively resist improving it. They also actively discourage anyone coming forth to improve the product.

Some of these things I'd like to try to understand, but I like having IRC open to talk in a few different rooms during the day and keep in touch with friends/family over IM. They don't break my concentration (not NEARLY as much as the lady from QA stopping by to talk about her son), but because people are looking over my shoulder all day as they walk by they complain when they see something that's not "programmer-looking work". I've been told by my boss and QA that I do good, fast work. I should be judged on my work output and quality, not what I have up on my screen for the five seconds you're walking by.

Again, welcome to the corporate world, where looking like you're being productive is often more important than actually being productive. Again, another thing that needs fought against, either by not working for the company (ideally, the equivalent of "voting with your wallet"), or by getting a movement going to abolish it (again, see note about ROWE). While it may be rather typical, it's a huge money waster for the company, because people often fall into what's known as presenteeism, which means they aren't actually doing anything productive, but look it, and may even be the first to arrive and last to leave, so they're the ones that get noticed as "the harder worker," "the team player," and likely the one on the management track.

I do agree with the others, though, that "keeping in touch with friends/family" should be kept to a minimum. You don't need to be talking with them all day, and many people are prone to allowing those chats to take over your work time. It is, however, a blanket rule, probably thanks to those that couldn't keep it under control (or at least the fear of people doing such).

One thing you could do is confront the person complaining (I suspect it's the same person that complains about programmers "slacking off"), and see what they think "programming" should look like.


Why I say run away, though, isn't just about the points, themselves, that you've mentioned. As others have pointed out, a lot of it is pretty typical (though, I would note, that it says nothing about whether such things should be that way). What I see are underlying issues that make this an unhealthy work environment.

Primarily, middle-upper management does not appear interested in talking with "the commoners," and their method of communication when someone does something they don't like suggests they aren't open to two-way communication. This causes a disconnect between employees and management, which will eventually lead to resentment and rebellious behavior (varying degrees, from individuals covertly doing things that are against the rules, to outright strikes/walk-outs) from the employees.

Additionally, management appears to be looking to micromanage the employees. This stifles productivity in just about anyone, but especially creatives (including programmers), and again, leads to poor working conditions. This also says they don't trust their employees, and thus have to treat them like prisoners in order to "keep them in line." This is bad for any environment, because employees aren't prisoners. They're adults, and should be treated as such. People will live up to whatever standards they are held to.

They also don't appear to foster actual camaraderie and collaboration, or an overall learning-oriented environment. Part of building good teams is being able to identify with your coworkers on some sort of personal level. This means talking about non-work stuff once in a while. This can also mean talking about things that don't appear to have anything to do with programming, but really can help solve the problem. This also means having enough access to the outside world to be able to do the research necessary to do the job (the key part of your department is research), which can include using nontraditional resources.

I still say it's probably a good idea to leave. You can still try to talk with your manager, but I still doubt that it will get anywhere (from my experience with large companies, getting them to change is met with a metric ton of resistance, even for people who have some clout). Even if your boss is on board, it still has to go all the way up the chain, and it gets progressively harder as the manager gets farther removed from the reality of your job.

Whether it's bad enough to walk out on is a decision only you can make. In my opinion, it's not the end of the world to walk out on a job, but it's still a good idea to only do so if the job is so bad that it's affecting your mental well-being. In the US, jobs are considered "at will," which means that unless you signed a contract, you have the legal right to leave a job, without notice for any (legal) or no reason. As I said in the comments, no employer is worth sacrificing your sanity over, and I stand by comment. I, myself, have walked out on two jobs in my life, and they were among the best decisions I've made.

Even as a new grad, you don't have to just take whatever you can get. Hold yourself, and potential employers, to high standards, and you can avoid places that aren't healthy for you to work at. It might take a little more time to find it, but it's well worth it. A lot of big companies like to abuse programmers, and that will never change as long as people are willing to work for those companies. Since it sounds like large corporations in general might not be your cup of tea, check out startups and small companies. They generally allow more autonomy, though you are generally held to higher standards and expected to learn quick (small businesses tend to be far more agile than big companies).

I recommend checking out the book Why Works Sucks (And How to Fix It). It talks a lot about how the way the corporate world is run is highly inefficient and not conducive to actual productivity (not to mention how it can be downright destructive to one's life). It also covers a lot of the things you've mentioned in your question.

(On a side note, we've been mod-hammered, so if anyone wants to continue the discussion, I created a chat room for this and it can be found here.

share|improve this answer

I had no prior experience when I interviewed

This sounds like it is your first job in the corporate world.

I like having IRC open to talk in a few different rooms during the day and keep in touch with friends/family over IM

Don't do this. There are a lot of companies who work in regulated industries where IM is totally banned. There is a time for work, and a time for play, and IM looks to "older" people too much like play. Leave it for home. If you work where they allow it, fine, but otherwise drop it.

Several emails have been sent out by my boss since I started telling us programmers to not talk about non-work-related-things like Video Games at our cubicles, despite us only spending maybe five minutes every few hours doing so. Further digging tells me that this is because someone keeps complaining that the programmers are "slacking off".
People are looking over my shoulder all day.

This is where you need to learn the skill of "managing appearances" or "managing impressions". The point is that they see one thing, and you think you are doing something different. Other people's perception of you is frequently far more important than what "the truth" (if there is such a thing) is.

I should be judged on my work output and quality, not what I have up on my screen for the five seconds you're walking by

America is not a meritocracy, no matter how much we pretend it is. Impressions and perceptions matter. Attitudes on work, and work ethics vary drastically based on age, sex, social class and political orientation. There is a huge impedence mismatch between what is openly stated what is wanted and what is actually wanted.

I was offered what I feel to be an extremely generous starting salary ($30/hr essentially + benefits and yearly bonus)

For someone with a 2-year degree, it is a lot of money.

Recommendations:

  • Pick up some books on office politics (and read them at home).
  • Pick up the book Corporate Confidential and read it (at home).
  • When the lady from QA wants to come by and talk about her son, learn to say something like "I'm sorry, I can't chat right now" and get back to work.

If you want a list of books that would help explain the corporate world, and why "they" think the way that "they" do, let me know and I can add a reading list for you.

edit: Per requests, reading list added. These are books I have and have read. I have omitted books on programming itself, as those tend to age rather quickly and (except for 1) books aimed at one technology stack have very little application towards other technology stacks. This list is not exhaustive, and I'm positive that many people have other ideas of what you ought to read.

I recommend you start with Corporate Confidential, Passionate Programmer and Making It Big, in that order. Then, pick the others in any order you want.

Being a better programmer/employee:

  • The Passionate Programmer. The first edition of this book was called "my job went to India". Keep your mind and skills up to date as technology and business move too rapidly to let things get rusty.
  • Coder to Developer. I think this is aimed better at junior developers than senior ones.
  • Death March. Any project where the schedule or resources are compressed too much is a death march. And in our industry, death marches are the norm, not the exception. Learn what they look like, what possible outcomes are and how you can cope (quitting is always an option) with them. Very quick read.
  • Making it Big in Software: Get the Job. Work the Org. Become Great. Some interviews, and lots of advice on how to work in companies.
  • The Nomadic Developer. If you've ever had to go through a recruiter to find a tech job, chapter 3 explains why those companies behave the way they do. In IT, you are likely to average one new job per year. Some will stay at a company for a decade or more (this is becoming extremely rare), and some will go from job to job every few months.
  • Spreadsheet Modeling & Decision Analysis. I have the previous edition. This is aimed at MBA students, so it is mostly about analyzing business situations mathematically (mostly Excel). There are 2 disks, and you can get a cheaper copy without them (one is a trial version of MS Project, the other has the exercises with a trial version of a solver program).
  • Corporate Confidential. Link above. HR is your enemy, not your friend. Gives a number of examples of what will destroy your career with companies, many of which you (and I) probably do without realizing the consequences.
  • Working Effectively with Legacy Code. You will work maintenance coding one of these years. This book helps with dealing with mountains of horrible code from the ancient past (some of which were written by you) that stare at you from the pits of hell.
  • Brownfield Application Development in .Net. Aimed at .NET developers, it gives advice on improving projects that haven't made it "to maintenance" yet as well as ones already there.

Dealing with other people:

  • The 59-Second Employee. This is the antidote to the one minute manager. OMM was an extremely popular style of mismanagement in the 80s and 90s (mostly because the book takes about 15 minutes to read, it was very popular in business journals, and no one can tell whether you're doing it or not) and when you've been "managed" by one, you will feel like a used dish rag.
  • Type Talk at Work. Based on Meyers Briggs, it gives some advice on how to communicate with other types of people. I found it useful, but I've had coworkers claim this is as useful as astrology, so your mileage may vary.
  • Changing Minds. Persuasion is important.
  • To Be or Not to Be Intimidated.
  • Looking out for number one.
  • Million Dollar Habits. I feel that these 3 by Robert Ringer are very important. If you think his first book was about to intimidate others, you only read the press coverage. If you think his books are about real estate, then you only skimmed them. There are a lot of people in the world who will try to intimidate you into giving up what is yours, and he shows you what some of them are like, and what countermeasures you can use.
  • Snakes in Suits. There are some evil people out there. You'll work for some of them.
  • Bullies, Tyrants, and Impossible People. One book on office politics and dealing with some of the worse sort.
  • The Gentle Art of Verbal Self-Defense at Work. Some folks are very good with verbal manipulation, this book and the others in the series, cover how to deal with such people.
  • Winning with People. Most of the books this author writes are about managers and leadership. This book is more about people skills. It will be focused more at managers, but I think it is a good one.
  • The 48 Laws of Power. They have it. You want some. Light read with anecdotes. I like his other books as well.
  • Games At Work. Office politics.
  • It's All Politics. Yes it is.
  • Moral Politics. Liberals and conservatives, why do they think that way? You'll work with some of the opposite persuasion some day, so understanding where they come from is a reasonable idea. Most books on this subject are insulting and degrading, but I think this one is pretty much judgement-free.

Dealing with projects:

Improving your own wetware:

Investing for retirement:

  • Engineering Your Retirement. Aimed at technical people, it gives plenty of advice (and equations) to help determine how much is enough. The checklist and advice at the beginning of chapter 8 is what you should keep in mind whenever you depart any employer (due to quitting or getting laid off). Some of the financial modelling will also be covered in the Spreadsheet Modeling book above.
share|improve this answer
20  
This is, sadly, the only answer that actually demonstrates any real insight and experience into corporate development (which is at least 90% of all software development). The complaint about IM and Facebook being blocked in particular is deeply naïve and just a little bit unprofessional. Some complaints are valid (like being situated next to CSRs) but I can't help but wonder if all these people saying "get out, get out, get out!" have ever had to work in a corporate environment, or really any environment other than a caffeinated dot-com or their terminal at home. –  Aaronaught Jun 23 '11 at 18:28
13  
@Aaronaught - I have worked in a corporate environment, and while I agree that doing a lot of personal chatting isn't a good idea, there appear to be a lot more problems going on than just not being able to IM your friends/family. If that was the only problem, I'd completely agree, but taking everything in whole suggests to me a fundamental misunderstanding of how programmers operate (not to mention some (IMO) bad management behaviors). –  Shauna Jun 23 '11 at 19:24
11  
A good company keeps its workers happy and reaps the benefits. A paranoid micromanger who doesn't trust anyone to put in an honest day's work restricts everything and anything in a futile need to force people to "work". One is the proper way to run a company; one is running it like a plantation or some barony in the Middle Ages. The smart businesses do the first one, the bad ones do the second. –  Wayne M Jun 23 '11 at 19:30
5  
@Shauna: Yes, there are some real, legitimate problems there (as I conceded). However, when you strip away all the fluff and noise and get to the root of the problem, it's not even close to matching the profile of a "soul-sucking" "sweatshop for programmers". It's bland, typical Corporate America, in which most people genuinely don't understand how programmers operate (if they did, they wouldn't need to hire them). A little assertiveness and, as this answer suggests, "image management", goes a long way, and has greater long-term benefits than just running away. –  Aaronaught Jun 23 '11 at 20:33
3  
@Tangurena: As a young programmer, I'd be really interested to have your list of books about the corporate world. –  Louhike Jun 24 '11 at 8:06

Always try to resolve problems rather than running away from them.

Leaving a job leaves a mark on your CV / resume and if I were hiring you (and I do hire) I'd be sceptical about someone leaving a place because it was all bad who did nothing to try to improve it. Seriously, what does it say about you if you're asked "so what was wrong with the last place?" and you list them and they say "so what did you do?" and you shrug and start talking about leaving. Is that someone you'd hire?

The approach to take is to try and understand things from your managers perspective and to choose your battles and your timing. So asking for Pandora to be unblocked in a bad start because there's nothing in it for him.

So pick one thing - version control looks promising (and hey, it's not all bad, they actually have version control), maybe implementing source control, maybe some basic standards or unit tests but make it something that will make a real difference and for which you think you can make a really good case.

Put your argument together in terms of time saved or increased productivity, improved reliability. Try and couch it in terms of real problems that have been experienced and that he'll benefit from not having happen.

If you make progress on that then great, you've got a win and you can build on it (on the same basis), if not you learn something and try again with something different.

If after two or three shots you're getting nowhere then reconsider your position knowing that you tried your best and that if someone asks about it in an interview you've got a really good answer as to how you tried to make things better.

But remember, the grass isn't always greener on the other side and the next place you pitch up could have similar problems and if that happens and leaving is your answer your resume / CV is going to start looking very patchy.

EDIT: OK, in response to the comments below, two things:

1) This isn't about being selfless and making the company better (though more on that later), it's about making himself better. Employers really don't like short job stints and tend to ask about them. This is a small investment in trying to improve some things gives him a better set of answers in the next interview when people ask why he left and what he did about it. If you want to see it that way this is actually completely selfish - it's a small investment which will potentially improve his chances of getting a better job next time round.

2) Maybe more importantly, if decent programmers don't try to fix things in bad working environments then who will? And if no-one does they'll always be bad working environments, not just for the company but places which suck in programmers, grind them down and teach them bad habits.

Sure it's not going to work most of the time but sometimes it will and when it does you just made it better for everyone, you made a bad working environment OK and made the lives of all the programmers who work there and who will work there in the future better.

Isn't that enough reason to at least try? Great working environments don't just happen, they're the result of good programmers doing everything they can to make them great. There seem to be a lot of people who want to work in great environments but aren't willing to fight for them.

EDIT 2: The Joel on Software Test has 12 items which improve productivity. As he alludes in his book, you don't have to be a manager to get these things done (at least the first eight). As the o.p. notes, you could implement source control on your own. You could also consider coming in earlier when you're less likely to be interrupted. You could also take your $$ and buy noise-cancelling headphones (awesome for air travel).

EDIT 3: A few people have suggested that when asked why he left his last job a straight forward answer such as "They wouldn't give me the tools to do my job so I wanted to come and work somewhere where they take the process of software development seriously".

While on the surface this is a good answer, as someone who recruits I can promise you that it would be followed up with other questions - "OK, so what did you try to do about it?" being the first. Good hiring managers will approach this with an open mind but they'll want to understand what was seen as unreasonable (because it's just possible they understand that their environment isn't perfect and they want to know whether you're going to have issues there) and they'll want to understand whether you tried to engage with it or not because that's an indication of how you might view other problems you'll encounter during your day to day work.

You need to make sure that you have answers not just to the first question but all the possible follow ups where a good interviewer will try to understand what was really going on (and just in passing - the implied suggestion "hey, you're serious about this stuff, not like my last place" is just blowing smoke up a managers ass - they probably won't fall for it and if they do, do you really want to work for someone that dumb?).

share|improve this answer
5  
Commenters: comments are meant for seeking clarification, not for extended discussion. If you have a different solution, leave an answer. If you like this answer, please upvote it. If you'd like to discuss this question with others, please use chat. See the FAQ for more information. –  user8 Jun 24 '11 at 6:28

Let's go through the issues, and what you'd say about them to the next place you interview at.

High turnover (and I take it that the rapid rate of hiring is due to the rapid rate of leaving) is a really bad sign, and, even better, it's one that you can express objectively in later interviews.

Limited internet access is more reasonable, and asking that you do not use company internet for personal purposes is at least somewhat common. Don't mention this as a problem, unless you have specific examples of useful sites that were blocked. You generally don't need Twitter and Facebook to program, but O'Reilly's Safari service and Stack Overflow are very useful.

Noisy work environment is bad, but it's rather hard to complain about to the next company without casting some suspicion on yourself of being a whiner.

Being told not to talk about personal things on company time is not real good, if the personal talks are not too excessive, but, again, don't mention it later.

The goldfish bowl effect is one you probably don't want to touch on in later interviews, either.

The VCS doesn't sound too bad (2005 is not that long ago, it's not like you're using VSS or RCS or SCCS), and it's not that rare to need specific versions of plugins. At this current job, I need to use IE to deal with the payroll system (time off, etc.), and that's the only thing I use it for.

The lack of good software practice is something you can discuss, but in a positive sort of way. Tell interviewers that you want to learn to be productive and get experience with good practices. This is an acceptable reason for leaving a job. Bear in mind that lots of places are no better, and the more you emphasize it the less likely you are to get a job with a disorganized shop (which may be good or bad).

That place sounds like a terrible place to work, and I'd advise getting out as fast as is practical, but it's important to do so in a way that's not going to hurt you much later. Find objective things that are clearly wrong (turnover is a big one, possibly also bad practices) so you can answer why you left without sounding whiny or spoiled or caring only about what the job does for you. You need to leave future interviewers with the feeling that you aren't going to bail on them fast, and that you're there to help the company, not to have the company do things for you.

share|improve this answer
2  
Yes, that's the way to handle that in future interview. Don't be a whinner, stay with objectives, measurables facts. –  deadalnix Jun 23 '11 at 16:31
1  
+1; your first job is about learning. This job is making it hard to learn the good stuff. Communicate this in your interview and you shouldn't have a problem. –  Jaap Jun 23 '11 at 23:33

Well, your description explains why they are hiring people all the time: they are leaving about as fast as they get in.

Companies with big call centres often have a very high staff turnover, and once they top management have accepted that, they don't even bother looking into the reasons. Which then leads to a situation where this all is so cemented that talking to a single manager won't change a thing.

I have worked at one company in the past where IT were in the same room with customer support, and it took a while before we could get some separation and higher cubicle walls to separate IT from the rest.

However, the overall description is such that I would have to agree with the other posters Shauna and pthesis: get out. This doesn't sound like your boss is supporting his team, it sounds like he approaches this completely from a top management point of view, and if that is the case he won't even listen to you. Sad, but true.

share|improve this answer

Sounds less like a viable workplace and more like a corporate jail. I'd get the hell out. I've worked at larger companies with established "rules and policies" and even they're not so bad. They had their own IM systems, didn't block any sites, and encouraged colleagues to interact and communicate.

I'm no lawyer but the events you're describing are going beyond micro-managing and into invasion of personal space.

share|improve this answer
3  
I thought at first this was a sarcastic post... When you are at work you are being paid to work not post on SE... But the reality is employers have the right to review what you are doing with their systems. You may think that someone is looking over your shoulder but it is also possible that they have screen monitoring software being used by the managers. It is more common than you think, but my experience was your first knowledge of this software in use at your company was someone being fired because of its contents. –  Chad Jun 23 '11 at 17:49
14  
@Chad: That's just a symptom of ineffective management. You think Microsoft, Google, Apple, etc care what's on their developers' screens? As far as "you're being paid to work," that's a fair point, as long as you correctly define "work." If you define it as looking at my IDE for 8 hours a day, I'll look at it for 8 hours a day. If you define work in terms of deliverables, that's also valid, but you have to give up control over the how that's achieved. –  R0MANARMY Jun 23 '11 at 18:06
1  
@R0MANARMY: I did not say this was the ideal workplace. But he is making 30+/hour with bene's for a first job. His only truely valid issue, in my opnion, is the quality of the code. I would do my job, do my best to conform to the expectations, any time i thought i had it rough I would remember what it was like to stand behind the grill at mcd's for 8 hours when i was still in school. It sounds like the expectations of work performance are clearly expressed. If you need to go outside of those expectations request permission to do so first. –  Chad Jun 23 '11 at 18:51

While this workplace sounds like a nightmare, I think that there are some legitimate reasons to stick it out at least until you have your Bachelor's degree finished.

First, making $30 an hour with an Associates degree is absolutely stellar, and you are very unlikely to find that elsewhere, in most markets. Having that level of income should make it substantially more comfortable for you to finish your degree.

Second, when an employer is looking to hire someone who is at an early stage of their careers, they want to find someone who is stable, predictable and mature, someone who can make it worth the effort of hiring them in the first place. One key indicator of that is a track record of staying at a job for a while. I was profoundly lucky to start my career with a company at which I stayed for four years, and that aspect of my resume has served me very well ever since.

So, it is tempting to just cut and run, but give this decision lengthy and sober consideration. The grass may look greener elsewhere, but you may end up finding that you have it better now than you thought.

share|improve this answer
4  
Disagree because this kind of environment will hurt the OP more longterm than sticking it out will. I doubt he'll learn anything at this hellhole. –  Wayne M Jun 23 '11 at 16:29
10  
@Wayne M: there might not be anything there that will teach him anything technologically, but he is bound gain some maturity and learn some leadership and communication skills. Also, what he learns there isn't necessarily the only or best criteria for why he should stay or go. –  Adam Crossland Jun 23 '11 at 16:40
4  
@kevin - Sorry, but I disagree. My own personal experience has shown me otherwise. Also, I don't think that OP's place of work is necessarily insane. –  Adam Crossland Jun 23 '11 at 23:35

Leave immediately. You won't fix anything; if the "boss" had any sense he wouldn't be doing such ridiculous things in the first place. The only thing that will happen if you confront him is that you'll be fired (which may be better than quitting as you can get unemployment), because the type of person your boss is thinks the entire world revolves around him.

I speak from experience; I have dealt with that kind of "small-minded dictator" before and let me tell you how they think: This person thinks that they are the center of the universe. They typically have an ego complex and expect the world for no other reason than being "Mr. Smith". They don't care a lick about their employees beyond what they can squeeze out of them. They don't understand what makes a productive work environment and instead treat the business like a plantation with them as the master and everybody else as the slaves. Except for management (often friends/relatives/drinking buddies), everyone else is a stupid peon and can't possibly know anything; they exist only to behave like worker bees and take orders and do as they're told without questioning their "betters". That's how this person thinks. They doom themselves to mediocrity because they're content to do the bare minimum to give the illusion of power and prestige.

This is not a company you want to be part of, but understand you cannot fix it. The best course of action is to leave. The smart people on your team will leave as well; companies like this only ever retain the dregs of our profession - the ones who can't get jobs elsewhere and are too afraid to "rock the boat" for fear of being out of work.

share|improve this answer

Your first job sucks. Thats generally the way it works. I would not leave for greener pastures, though, unless you have another solid offer in hand. If you leave your first job after 90 days, what do you think other potential employers will think of you? "Sure, his job may have sucked, or maybe he's just lazy and entitled and a complainer, and doesnt want to work". Especially in this employment market when they have hundreds of other new grads to pick from.

share|improve this answer

Mileage varies significantly here, some of this is par for the course in certain companies, some of this is either bad management or a broken corporate culture. This would be my breakdown -

Factors that are typical in certain companies:

  • Limited internet access - usually done for "security" reasons. The company has the right to lock down sites it sees as useless for work and/or to demand that you work equipment strictly for work purposes. Sometimes you can find an avenue to unblock sites that provide useful support (like Stack Exchanges!). Not a product of every corporate culture, but something that can be par for the course in certain companies. My solution was to get a smart phone... that way I can have all the connectivity I want on my own nickel.

  • "Open seating" - cubicles with low walls or tables that don't qualify as cubicles - a favorite idea in certain development settings, and the mix of jobs sitting in the area is supposed to help everyone realize that you are all part of one big team. Not everyone's cup of tea, and perfectly fair to ask about in an interview. Unlikely that you'll get traction for a change here - it's both expensive to rework your space, and probably a part of corporate culture.

Factors that bear discussion:

First - are you a contractor on hourly pay or are you salaried? If they are paying you per hour, they have a bit more say (IMO) to ask you to be frugal in how you spend your time. On salary, I tend to think that you need to hit deadlines, but if you take time during the day to deal with something personal, it should be understood that you'll make it up. That said...

  • Micromanagement of "non-programming time" - whether it's in person discussions or time online, the company should not be watching you every minute of the day. OTOH - be aware of exactly how much time you do these things and how loud or disruptive you may be. I have been in a position where junior engineers haven't realized that a "5 minute" discussion actually took 30 minutes and was so loud that those nearby couldn't have business conversions on the phone. I'm not saying that's you, I'm just saying, find a way to keep track of time so that you know for sure how long you are taking. When you know you're at a reasonable time (5-10 minutes, once or twice a day is not out of line) - talk to your boss in private. Ask if it's you that there are complaints about, ask for justification. If you're not in trouble, point out that the shot gun approach to emailing the team with these issues is likely not to hit it's intended audience effectively and is generally bad for morale.

  • General lack of tools and good processes - probably the biggest problem. This isn't culture, this is just bad engineering. This is a serious, sit down, closed door session with the boss. Does he know these are issues? Does he know the risks to the product? Will he listen to recommendations? If you think you can improve the situation in coordination with your boss, then it's worth staying. If not - polish your resume and move on... you won't have a good experience at this company if you can't work with decent tools and reasonable processes.

share|improve this answer

From my experience at trying to "turn around" a work environment that was a nightmare to work at, don't. You're entry level and not being paid nearly enough to fix any problems in the company. I wouldn't "up and walk out", though I would seriously job hunt, recognizing that better conditions will trump more money in the long run.

I struggled on for 3 years with that company, two steps forward, one back before I finally quit and in the meantime I made myself and the people around me miserable. It took me a while, but I found another job that was a lot better in conditions, and luckily money.

I agree that you should prepare an answer for interviewers as to why you left, don't bash the old company, don't rant ... there are some good suggestions here along the lines of it not being a good fit. Here there is a "probation" period of 90 days where an employee or employer can terminate the employment for any reason. If I were to leave a company under those conditions I might not even put them on my resume... depending on the overall situation.

Hope it helps.

share|improve this answer
2  
It's a good thing to work to improve the environment you work in. But you have to realise when that's not possible - and as a junior programmer in a large, established, operation, that's not possible. –  Tom Anderson Jun 24 '11 at 14:30

Many of the things you described seem quite normal for a typical employer. If you work at Google or something then sure everything might be shiny and new (although I do recall an article on slashdot with someone complaining Google was behind for him.....even though they were still light years ahead of the average employer...).

First of all, banning of social network, you tube, pandora, personal web browsing, etc... This is NORMAL. Many employers explicitly ban these sites or just put in their policies that usage is frowned upon. If they completely ban the internet and you cannot look up solutions to problems then sure run, but for just banning the social networks, that's normal. Also you tube and pandora are often banned due to the fact that those websites are bandwidth hogs. At my current job they had to institute a youtube/pandora ban due to the network running super slow. Most employers do not have bandwidth for everyone to be streaming pandora/watching video. Near major sports events (march madness, etc...) often sites like espn.com/etc. have to be banned as well....

As far as IRC/IM/etc. quite often this is either totally banned or you are forced to use the company's own proprietary IM client (which only has other employees on it and is logged). Often this isn't just about snooping but some businesses need to log every work communication. Also there are studies done saying that people cannot multi-task and if they keep allowing IMs to interrupt their work then productivity goes way down... Maybe you are an exception or you are disciplined to only answer the IM at certain parts of time. But the average person is not.

On the latest/greatest hardware/software a lot of places are backwards. Often executives do not want to spend the money until forced. There are still people using VB 6.0. A version control system from 2005 is not bad, around Microsoft shops it is not uncommon to see people using Visual Source Safe from the 1990's.... Also CVS is not as uncommon as one might hope......

Low cubicles suck. But get over it, I had to work on trading desks once. I don't think you are guaranteed to do better. Being around the New York Area at several tech companies, I have noticed just a desk is becoming popular (with a bunch of devs or even devs and other employees all clustered together). Some companies have open tables that people share. Even if you are not with customer service often people are having conversations about work that you hear. Basically head phones/music are required...or at least noise cancelling headphones...

Also as far as Java, it is not uncommon to need an older version of Java. If it is not version control, it will be something else. Where I am they somehow managed to have multiple versions of the JRE co-existing due to different legacy apps. Even on an app that you are part of developing the development team may not be on the latest version either. If you go and upgrade your own Java environment, you might become unable to compile the application.....Often the DEV team will not willy nilly upgrade Java, .NET, Oracle, SQL Server, etc. as management does not want to spend the time.... Then when something comes to end of life there will be a mad dash to do the upgrade quickly....

On hiring more people, it seems like the company is growing and that is good.

As far as trimming spaces, that is more a design decision. It sucks but if the decision is made then move on. There are all sorts of arbitrary decisions like that. How to indent, whether to make everything uppercase/lowercase or turn off case sensitivity on the database, how to comment, etc... Some of the Agile guys say instead of commenting just make a method with the name to make the code more clear. Commenting really depends... Commenting on every line is a mess too. Also if the comments are wrong then that is worse than no comments at all... Disagreeing with that stuff is normal. Most of the time it is not worth the battle.

The only thing that seems like a problem to me is the no personal conversations at all (building relationships is a normal part of business). Chatting for 10-15 minutes or even 20 minutes once or twice per day should be fine. People are social animals and getting to know your co-workers is important. Some people do go overboard chatting for an hour or more or chatting for 15 minutes every hour... Still often personal conversations help you form relationships that help you get your work done.

You said no source control and then in another breath you said source control was from 2005... I'm assuming you were mistaken but if there was really no source control then that would be a red flag.

Also your compensation is very good. I am in the New York area, and I see entry level jobs in the city for 55,000 looking for people with 4 year and Masters degree. Granted a bonus is promised but for only 55,000 you'd be lucky to get 10,000. New York is one of the more expensive markets. Most other places will be lower. So 30/hr is REALLY good. If you work there for a year it will be much easier to leave and get better pay....

But anyway if your job is making you miserable then leave. Life is too short to do something you hate. You may be job hopping a lot to find the right place, or may even end up starting your own. I think a lot of what you mention is quite normal. So good luck and I wish you the best!!! But who knows, some people who are that particular and jump around go on to do great things...

share|improve this answer

The biggest red flag I saw in the whole thing, no question, is the actual coding environment. Coding to standards now means easy maintenance later, and fewer bugs overall. If the order of the day is "patch it and move on", get out as soon as you can; this means that the culture is obsessed with working code over good code, and you will eventually be trying to maintain a morass of very brittle patches, if you aren't already. "Do it light" has its place; it's on the other side of a balanced see-saw with "do it right". You make it meet the requirements, but you also allow for that code to be easily upgraded, and patches are only acceptable as stopgaps to get a working release out, after which you MUST make time to implement it properly.

Everything else - the noise, the no-non-work-computer-use policy, the lack of privacy - is all part and parcel of working in corporate America. Your employer is a little higher up the scale of "bad places to work" in this regard, but you will deal with these kinds of things for your whole career. I work on a network that blocks a lot of popular non-work sites (thankfully not YouTube or StackExchange) and sniffs packets for possibly-illegal content like MP3s, torrents etc. 2 of my 3 cubicle walls are 4', the third is 5.5'. All work-related IMs need to happen on Office Communicator (an encryptable, internally-served IM system) to avoid leaking sensitive information to a snooper.

But, the culture still recognizes the need for a little non-work Internet use, like listening to songs on YouTube or personal e-mails/IMs with loved ones. We have lives outside the walls of this company and sometimes we have to attend to them during the work day. I've worked in environments that don't recognize this and I was glad to get out. If it's too much, just start looking.

share|improve this answer
1  
A good company allows freedom because they A) trust their employees and B) know that a happy employee is a productive one. A shit company enforces rules to "keep people working" because they have no trust and just want to take, without ever giving. –  Wayne M Jun 23 '11 at 19:23

I have to admit that when I started reading this and looked at your first couple of points, my first thoughts were along the lines of "welcome to the real world". Sorry about that, especially I see from your edit you were quite well aware of that aspect of things.

However, reading on, I could perhaps give a variation of that reply in response to one or two of the points (even the very bad working practices; wherever you go some people in the company will be clueless and some will be jerks and while you don't have to like it you do need to learn to deal with it) but when your points are taken together this adds up to a clueless and toxic work environment from what I can see.

Leave. Find another job first, obviously but some places are just bad for the soul. Take a lesson from this place about what red flags to look out for when interviewing in the future and about what kind of boss / manager / senior developer you want to be and don't want to be in the future and use that lesson both to improve yourself and to cheer yourself up with the thought you got something good out of this experience.

share|improve this answer

When you have a voluntary mass exodus, it's because the work conditions suck. I'd imagine they (like so many other companies) cut with the recession, and worked their people like slaves with no raises to make up for the lower headcount. Now they're reaping the rewards of that behaviour as their experienced people leave in droves, and (stupidly) trying to crack down to return to 2009 levels of individual productivity...without the experienced people that made that possible! Utterly typical. This is why hiring usually spikes once recessions end.

Start looking for a new job. What's the worst case scenario? The status quo?

share|improve this answer

People are looking over my shoulder all day. I was in the Freenode webchat to get help with a programming issue, and within minutes I had an email from my boss (to all the developers) telling us that we should NOT be connected to any outside chat servers at work.

Even with all the other problems, this one makes it a no-brainer. Really. Who the hell wants to work with narks? Not me!

What a bunch of weasels you must work with.

share|improve this answer
2  
Sounds like just a typical small business who's owner has a "God Complex" because he owns a business. See "plantation mentality" –  Wayne M Jun 23 '11 at 19:22

You want to work at a better place then start looking. Start considering how you are going to interview the next company to find out how they actually do things.

Since you're thinking of leaving, take a little risk and try to resolve some of the programming issues with you fellow developers. Learn how to influence and work with others to solve the source code control, format, and review problems.

I know the other office/company policies are a pain to deal with, but I don't think you're going to be able to make much of a change. There is a notion that you guys are not getting things done. There may be genuine reasons to the well informed why a project took too long, but to most people they see two programmers take 5 min for a personal conversation and you're labeled as slackers. Your boss isn't fighting for his team and demonstrating their competence to the rest of the company. "Nobody puts baby in the corner."

share|improve this answer

I've dealt with some of the problems you've described.

I too was near customer service people for a couple years, and that can be very distracting. So I'd listen to foreign or instrumental music on my headphones all day. Anything that didn't have English lyrics helped me focus.

No job is perfect. However, my one piece of advice is don't let the annoyances build until you storm out one day in a fit of rage. If you're really unhappy, go ahead and start looking for another job. Try to get something lined up before you quit.

share|improve this answer

An import part of most jobs is managing your boss. I'm not talking about trying to do his/her job, manipulating them, or trying to work around them. I'm talking about managing their perception and expectations of you. (Some may still see this as manipulation, but that has the wrong connotations.)

When approaching your boss about something, you are more likely to get better results if you can show how you are asking him to help you be more productive. One of his main goals should be to have everyone under him be as productive as possible. Concrete suggestions he can defend when challenged will make his job easier.

You could start by asking them to open up access to an online website that will help with programming. Point out that currently you have to wait until you get home to look for help online. If they opened up access to the website, you could get things done quicker. This shows the boss you are motivated and dedicated instead of just being a whiner.

@Jon Hopkins makes a good point that a very short tenure in your first job can look bad on your resume.

While you are looking for another job, follow Jon's advice and try to improve things where you are. At the very least, you'll learn how to spot that kind of boss quicker. It's possible that along the way, you'll learn some useful skills in how to deal with a poor boss or poor company.

share|improve this answer

My first reaction was also "leave immediately". However, this is your first job - leaving so soon might indeed not be so good for your future career. Also, there is something positive in your description - it sounds like your colleagues are reasonable people who are merely being mismanaged. So I would suggest trying to fix things as suggested by Jon Hopkins. But don't do it alone, discuss with other developers first.

You should try to pick things first that are easy to implement and an obvious gain for the company. Make realistic estimates about the effort required, how much it increases productivity, discuss with other developers. If you got at least some of them to agree with you you can send the proposal to your boss. Don't overwhelm him, one thing at a time (people who like to micromanage are surprisingly resistant to change). Stay on it or your proposal will disappear in your boss' desk never to be seen again. You can then try another small improvement.

If nothing else this will make you feel better - you tried it, you can leave now without second thoughts. There is a slight chance that the management will actually respond well to constructive criticism which will result in recognition for your efforts (and might even convince you not to leave). But I really wouldn't bet on it, from the sound of it the chances are more than slim.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.