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?