
  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.

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.
