Shhh, don’t say those words! They’re like dark-dark-black-phase of a programmer’s life when his ego and self-respect have already fallen down to an all time low. Don’t make it worse for him. If you're in India, at around this time of the year, you can see so many young software engineers literally playing the change-your-job-musical-chair as they jump from one firm to another. Ask anyone of these young, talented engineers why they are looking for a change and chances are, the answer will be pretty similar this one I heard during a recent interview I was taking:
"I haven’t been assigned to any project for the past three months! Which is why I started thinking about moving on to a different company… you see, I want to work with the latest cutting edge technology and face bigger and better challenges, but in my current organization, I have been on the bench for the last three months!"
“And, what’s wrong with being on the bench?” – If you’re like me you will be tempted to ask, but don’t. Shhh, don’t say those words! They’re like dark-dark-black-phase of a programmer’s life when his ego and self-respect have already fallen down to an all time low. Don’t make it worse for him - You’ll insult an already insulted developer. You’ll hurt an already hurt engineer. Don’t you get it? The guy is on the bench! And he has nothing to learn or do because he’s not working in a project.
But wait, isn’t that just… stupid?
Ok, go ahead, say those words, and ask that question. This isn’t an interview where I can hurt someone’s feeling. This is my blog where I can speak my mind! So go ahead, ask that question – “What’s wrong with being on the bench?” – Seriously. I don’t know about everyone else, but I don’t get it. Honest.
I’ve heard the words “on the bench” being mentioned as if they are evil. When they're on the bench, I've seen a lot of developers translate that into some pretty conventional (and in my personal opinion: stupid) interpretations. Based on my conversations with a few programmers who are looking for a change because they are on the bench – being on the bench is equal or synonymous to a few things. The list of these interpretations is long, but some of these, I've heard are:
- You’re on the bench = you don’t have enough opportunity to learn new technologies, so you should move on.
- You’re on the bench = your company isn’t doing well and is going to shut down, so you should move on.
- And last, but not the least, you’re on the bench = you’re not important and there’s nothing you have to offer to the company, so you should move on.
Long story short being a lot of Developers feel that being “On the Bench” means you’re literally “on-the-bench”. In other words, being on the bench is like:
(Only, not just as cute :))
In a recent conversation / discussion / friendly debate with a person who works in the HR department of a software development firm, I was told:
"You’re thinking from your perspective which is very different, maybe slightly more mature than a typical junior developer. You might be able to work on your own project, work on your company's intranet website, write your own blog, articles, conduct trainings and think of a thousand other things to do, but a normal developer comes to office to work on projects and code for clients. If he doesn’t get that opportunity he is going to leave and find a place where he gets exposed to a real life project."
Yet another person who heads the accounting department and participates in HR related decisions, of a solution provider explains in another healthy discussion:
"Yes, I understand when you talk about self development, personal initiative, training, blogging, articles, starting personal frameworks and everything else. It sounds nice and good for 1 month. 2 months, maybe - but tell developers to keep doing that for more than that and you’re sure to see their resumes floating around in other companies."
After all these conversations and discussions with people from different companies, different departments and different roles I still don’t get it. If you do, please explain it to me like I’m a six year old, will you? Maybe I am just dumb. If you’re on the bench, isn’t that a golden opportunity?
A chance to write what you always wanted to write, an opportunity to work on what you always wanted to work on, an opportunity to read, learn, teach, discuss, have fun and offer help to departments within your own organization and the community in general (if nothing else, answer a few questions in a technical forum)? Just so, that I don’t digress, let me think and write about each point:
> You’re on the bench = you don’t have enough opportunity to learn new technologies and it’s bad for your career.
So all projects that all developers work on use the latest cutting edge technology, right? Wrong! There are Non-IT companies out there who still haven’t got over Visual Basic 6.0 and many more that are still a little reluctant to move from .NET 1.1 to 2.0.
"We already have MySQL so it would be nice if we can just use that for the project instead of moving to SQL Server 2005. We already have .NET 1.1 and will not be upgrading to 2.0 until next year. We don’t want to use WPF since it’s still in Beta and RC stages."
Any of that sounds familiar? I’m not saying there’s anything wrong with these statements. It’s a part of the job to provide the best solutions to clients using the tools that are available at hand and keeping the project cost minimum. But being on the bench for a couple of months gives us an added opportunity to go wild, pick our favorite tools and develop what-ever-it-is that we want to develop!
It gives us an opportunity do more-than-just-code. It gives us time to read articles, read blogs, write articles, blog a little more actively, learn things we always wanted to learn and strike out items on both – our Professional and Personal TODO lists of life.
Given the choice, I’m curious what a developer (just for the sake of discussion, let's assume he's a DotNet developer) who makes a lot of noise about being on the bench, would prefer - working in a Visual Basic 6.0 project and billing a client or being on the bench and have fun working on .NET 3.0 pieces? Personally, I would prefer the later; but I haven’t had the pleasure of enjoying some On-the-bench time for the past few years – so, I have no right to pass judgements and we're using .NET 3.0 pieces in the project I'm involved with so I can't even complain! :)
> You’re on the bench = your company isn’t doing well and is going to shut down.
In one of my first jobs, I worked in a company that shut down a few months after I switched jobs. When a firm is about to shut down, it’s usually pretty easy to make out. The stock prices, the ambience, the announcements, the changes in policies, cuts in budgets and everything else that happens in a company about to shut down is very different than things that happen in the normal course of business. Based on what I know, It usually begins to suck and as an employee you can feel it, even if there are no formal announcements! Organizations with huge numbers of employees don't just shutdown one-fine-morning! Unless of-course, you can feel it that your company is about to close operations and pack up, isn't connecting your being on the bench with your company shutting down, being way too paranoid and a little dumb?
> You’re on the bench = you’re not important and there’s nothing you have to offer to the company so you should move on.
Personally, I find the most frustrating. Every client office I’ve visited, every firm I’ve worked at, (I haven’t worked at many - I’m not very good at the change-your-job-musical-chair game :)) there are always things to automate and problems that technology can solve. Walk up to people in different departments. Talk. Offer help. Some of the Excel COM EXEs in .NET, I’ve written for the finance department of our firm, in my free time and weekends have been the most logically challenging and rewarding pieces of code I've written. I continue to support them in my free time, because it’s a rewarding experience. If nothing else, go ahead and participate in an open source project. It’s a Win-Win situation because it helps others and gives you challenging problems you can solve!
Write re-usable components, frameworks, user-controls, web services or anything and post them on the company intranet, or maybe publish them out to the whole wide world. Lookup the Bug Tracking system of an on-going project in your organization and offer them SVN patches, conduct trainings, clear certifications, train others, blog, conduct presentations, participate in forums… seriously, how can you run out of things to do, just because you're not officially assigned to a project?
Coming back to where I started, what is wrong with being on the bench and not working on a real project for a few months? While I ask what’s wrong in not writing code for a client, for couple of months, Jeff Atwood goes one step further and questions: Does writing Code Matter? He advices:
"Try to spend some time talking to people instead of the compiler… Of course, this isn't a zero-sum game. You can have it both ways. Ideally, you'd write code, and then write or talk about the code in a way that inspires and illuminates other people. But we don't have an infinite amount of time, either."
Being On-The-Bench for a couple of months, gives us some time to do just that – it lets us stop talking to a compiler and do whatever it is that we want to do. Including perusing ideas and initiatives we always wanted to pursue.
If you are someone who looks for a change everytime you're on bench for a couple of months - The next time you’re on the bench, may I suggest not playing the change-your-job-like-you're-playing-musical-chair game.
Instead, why not strike out a few items from your Professional and Personal TODO lists of life and get them done, so that you can be a better professional and a better person? You do have Professional and Personal TODO lists for life, right? If not, now is a good time to start making them. :)