back home

Life of a software developer can be stressful

Life of a software developer can be stressful. I realized recently that one of my policies - update often, commit often - became a pain not a benefit.

I repeated “update often, commit often” like a mantra and encouraged everyone to follow and now I realized I don’t want to follow it myself. The realities have changed.

Basically I always believed that you need to do constant integration, that’s it’s better to break things from time to time (like builds) but benefit from the fact that every is on the same page. That the code is rolling, everyone can see what’s going on. That also helped avoid any merge hell, reduce bus hit factor (when someone is hit by a bus but haven’t committed their stuff), etc.

It worked well in teams I usually worked in - a few people working on the same small or large code base. Usually in the same office.

But times have changed, currently in JIRA we have a team of a few dozen people (not going to count them now, but 50 rings a bell), many of them work on the same code tree.

And we have a lot of builds which they become a “sea of red” if you break anything. And that’s really stressful. Especially if you’re think your done because first builds went green but a day later or two you get new failures.

Add to that that someone’s always working on the code (the team is geographically spread) so you cannot leave it red and fix it next day, you also cannot commit whenever you want - you need to have time to fix if anything breaks.

So I’m changing my mind. Recently we did a project on a branch and it was so much better. Not only I didn’t have to worry about breaking others stuff, but also we were able to control what we merged from the master. It was much cleaner.

Now when we’re done and moved back to master to finish and do final fixes I noticed how bad it is (ok, maybe not bad, but not as good as it was).

So, I’m changing my mantra to “update often, commit/push daily” that seems to work fine.

And when we figure out how to easily handle branches for all builds maybe I’ll start using feature branches for everything?

Photo courtesty of Riebart, on Flickr