views:

377

answers:

9

I work in a small city as a .NET Developer and am currently considering whether I should change jobs. Trying to think through the various options and weigh up the pros and cons of each choice has proved to be a bit of a dilemma....so I'm posing this question out to all of you to see if I can get some good advice.

My current position has me on good pay and working only 38 hours per week. I'm 5 minutes walk from work, 5 minutes walk to the mall, 10-15 minutes walk to the beach which has great waves for bodyboarding. I can eat lunch at home with my wife everyday. Everything is close and convenient.

Work, on the other hand is a different story. While all the people are nice and professional and there are a handful of excellent developers on the team I'm currently not content. For one, our development life cycle is Waterfall...which would be tolerable if it worked but the result has been several large systems that are buggy, hated by their users and developers, and are a real pain to develop for.

There are no code reviews, little to no useful documentation, a lot of the code is an awful mess...the list goes on.

On the other hand, I'm given a fair amount of freedom to practice some elements of the agile methodology such as writing unit tests using TDD and refactoring bad code I come across. We also have a continuous integration server and use fairly current technology like Visual Studio 2008 and numerous open source tools.

All in all, its a fairly decent job which pays the bills and provides me with experience as a developer. So why am I discontent?

Well, to be honest, I'd rather be developing software that users love and which is technically challenging for me to build so I can grow as a developer. I'd really like to be developing using an agile methodology in which I can interact closely with eventual users of the software throughout the development lifecycle so that the software I develop meets the users needs instead of the users having to be told that they have gotten exactly what was agreed upon in the spec put together using the BDUF approach. I'd also like to be mentored as a developer so that I can learn from those who are better than me. At the moment I try my best to read a lot of technical blogs and try to teach myself as much as possible. But unfortunately, there is only so much I can achieve on my own...

Unfortunately, I've looked around and there are no companies in my immediate area that do agile development. I've looked further afield and have found one company that I believe fits what I'm looking for...Thoughtworks They appear to be a well respected firm that does agile development, have excellent developers and mentors, use the latest technologies, and appear to have a good track record of successful projects. (Does anyone know any differently? appearances can be deceiving...)

The down side is that joining them would mean traveling by train for 4 hours per day if I chose to live in my current location.... But if I chose to move closer my rent would basically double just to reduce my travel to 2 hours per day....and would be 8x higher if I were to try to get a place as close as I am to my current workplace. The increase in rent would effectively neutralize any pay increase I might get. Furthermore, instead of being a few minutes from the beach I'd be 1 to 2 hours from the beach...

There in lies the dilemma...should I stay with my current company and enjoy being nice and close to everything....or do I sacrifice that to practice agile development and have a better chance of improving myself as a developer? Or would I be able to improve myself as a developer just as well where I'm at?

What do you think? Are there options I've over looked? Am I crazy for both wanting to stay and wanting to leave? Any one have any advice on how I can resolve this feeling of ambivalence?

A: 

Do what makes you happy. My only concern is that there are lot of brownfield projects, so you may not get what you want unless it is a completely new development project. Also, If I were you, I would wait till the fall to decide on a career move, as the economy improves, there is more scope for new jobs and new projects.

CodeToGlory
+7  A: 

Don't underestimate how sucky a long journey to and from work is.

Why don't you think about staying where you are and starting your own software shop on the side. when it is up and running, ditch the company you work for now.

Edit: eg, spend the 4 hours a day (that you would have to spend travelling if you changed jobs) working on your own projects and business. That's 20 hours a week, which is basically half a normal working week - you will be amazed how much you can get done in that much time.

rikh
I hadn't considered that option...thanks for the food for thought!
mezoid
That's an entire working week given the amount of time wasted to meetings and other workplace delays! Also he could do that on the train every day, and get the higher wages from work as well as developing his own thing. Only problem - getting that work on the side.
JeeBee
+4  A: 

Do what I do. Contract out to smaller projects. So I have my regular full time job which I love but is not necessarily challenging, and a few separate projects that I contract out to. These separate projects are much more challenging, use agile development, and much more modern technologies.

So now you get the best of both. Advancements in experience and skills as well as the freedoms the full time job gives.

Sounds like your life outside of work is fantastic, it would take A LOT for me to give all that freedom up.

northpole
How would one go about finding such small projects to work on? Does one rely on word of mouth or are there sites out there that publish such small contracts?
mezoid
I actually go through head hunters like Kforce. They take a small cut but they find me the projects. I have been doing it this way for nearly a decade now. I have also had a couple projects sent my way due to word of mouth. So call up your local head hunters and tell them you want projects that are part time, off-site and with the technologies you want to use. They will find them for you.
northpole
And if you can't find these projects in your local area move out here to Utah, there are more IT jobs than there are people :D
northpole
+3  A: 

My (admittedly limited) experience says that a bird in the hand beats two in the bush. Taking any new job is a gamble, and in this economy, frequently those gambles prove to be costly.

But don't stop improving your skills. Contract out, take classes, do what you need to do to keep up.

Especially with that idyllic life outside of work you got there. Having that kind of freedom, for me, would overrule most of the gains I would get from switching jobs.

So wait, for now. Who knows, something much better could turn up soon.

Matthew Jones
+1  A: 

The grass might look greener on the other side, but as you get older you start realising that your personal free time is invaluable. Four hours on the train each day at least lets you either do work, surf the web or read a book, but it's not what you really would do in that time if given it.

Never mind what happens when you get "kinda-agile" companies which basically means "no development model besides source control and an overall vague target".

Now you also don't want to get stagnant in your current job, and maybe you could bring that up at your next one to one or review.

Alternatively you could rent a room near to your new workplace, and live there during the week, and have a single weekly commute from your existing house. Again, it's not what you'd choose to do - you have a wife you potentially might like seeing more than at the weekend. More dollars doesn't mean more happiness.

JeeBee
A: 

I've heard good things about Thoughtworks, but I've also seen photos of one of their project rooms - 50 people crammed in what I would say was a medium-size conference room (on-site project, Atlanta, I think).

You should factor in that travel time and work out the total effective monetary compensation per hour. And factor in the massive increase in effective working hours as well.

Assuming you are on a train, you can regain a certain amount of that time through reading, working on laptop etc, but this would be a killer for me - I can currently commute by car, bike or streetcar.

I doubt this extra work and time lost would be made up for by working for most companies.

Cade Roux
+7  A: 

If I were you instead of looking at a new job, which may be less secure, further away and no better, I would be tempted to try and push through some of the changes that are obviously needed to both improve your expertise, but mainly to improve your company's products.

If you can make a good case on paper as to how certain practices will improve the company's profitability and productivity and pass that on to someone who has a vested interest in saving the company money then you're on the right track.

I wouldn't push for agile just yet. It seems that there are more fundamental areas which need attention and most managers will shy away from agile as it can appear too chaotic.

Take it a step at a time, get everyone producing testing software. Show them how it ensures that small changes don't break the code. How it improves reliability. How thinking of how you can break the code prevents you from making basic errors in your coding that aren't picked up by code review.

Remember most opportunities are made not given, see if you can make one where you are that would both enhance yourself technically and your company. In the short term it will probably mean more responsibility without any extra pay, but persevere.

If nothing else you can set a time limit, say 6-12 months and see if you can improve matters or at least start to see if any improvements are being achieved before deciding to jump ship.

ChrisBD
That sounds like very good advice. I'll give some serious thought about doing just that...
mezoid
+2  A: 

Before you make the decision to leave due to the job/process, read the following stories and see if you can make a difference.

Anthony Mastrean
I'm currently reading through that Change Diary by James Shore and I am seeing some clear parallels. I think I might take his approach to heart and consider if there are any ways to change my organization for the better...
mezoid
The odd thing I found at the end of the Change Diary is that he doesn't recommend other people going through the effort that he did...but I guess that just means that I'll have to be a bit more patient and realistic with the amount of change I'll be able to bring to my company while I'm here...
mezoid
+1  A: 

My 2 cents:

  1. Never underestimate the importance of short ways to work, nice work environment and (especially) breakfest with your spouse. It gives you a quality of life that is so much more important than having an interesting and challenging job.

  2. Don't get me wrong, but taking a new job sounds to me a little like running away instead of facing the challenge of changing things. Until recently, I was in a similar situation (just without a beach nearby). I decided to initiate some changes in my department. It was amazing (and very motivating) to see how easy it was to get the rest of the team to accept something that makes their work easier. (Then all of a sudden the management decides to restructure the company and in a few months our department will be gone, but you can't win em all, can you?)

Anyway, my advise is to see this as a challenge to change your working environment. I believe that it will not only improve your workplace, but also yourself. You will learn how to initiate changes, how to convince your coworkers and the management, it will help you to build all sorts of soft skills.

Embrace the challenge!

Treb