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
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
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
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
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.