What Do I Hate for My New Job, and What Did I Do– 1/3

I have been with my new company for three months now and I like and hate it.

We are developing very complicated cloud based web applications deployed to a few load balanced server farms, each with dozens of servers running different applications/services. I like my work very much because I am involved the full stack of the application from database, ORM, J2EE/Spring, SOAP, REST, JQUERY/ExtJS/Javascript and HTML, etc.

However I am not going into the good things in this post. Instead, I will talk about the things I hated the most, and the actions/plans I have to change them.

This is the first part of the series and two more blogs will follow.

1. Low productivity of the team due to low-productive tools

All my teammates work very hard.   But instead of designing application and developing code, we spent a lot of time in trivial things, such as searching keywords from existing code, examining code history, writing email to notify a code check, updating the bug/feature status, pushing changes to build system and scheduling a build. You may think those trivial things don’t take a lot of time based on your experience. I had always have the same thought until I started my new job (My previous companies use JIRA/BitBucket/Pull Request/Bamboo, or Subversion/ReviewBoard/Bugzilla/Hudson).

The problem is the tool set. (1) Clearcase is used as the version control system(VCS) and it sucks. The biggest drawback is it is an element (file) based VCS. Suppose you want to find out all the changed files for a given checkin, the easiest solution involves long cleartool execution plus other steps (see the section How to find elements and versions with specific comments). And being an aging VCS tool, there is few support to integrate with other systems, such as code review, bug tracking system and continuous build systems. (2) We have considerable amount of code are written in ColdFusion, Javascript and HTML, therefore searching the keywords from the repository takes long time. As you may know, unlike Java and Eclipse, it is very hard to figure out the call stack or find the variable or function declarations for those languages. Very often, people do so by searching texts from the OS file system or text editors or IDEs.

The solution: (1) Given the size of the company, as one software developer among hundreds, I am not able to persuade the policy maker to change it. However, I have been actively pushing my team to use the ReviewBoard to compensate some of the Clearcase’s shortages, especially for preserving the check-in history and for providing a nice diff. (2) I set up an OpenGrok on my PC and let the team use it. It provides lightening searching speed. I configured it to run nightly to index the latest code from the Clearcase main branch and it always gives the team the most recent result (well almost).

The result: The team likes both and the productivity has been improved of course. We still hope that the ReviewBoard can somehow connect to the PRS (Clearcase bug tracking system) and Hudson(the continuous build system) to further reduce our manual efforts. I am going to look at the hooks/APIs between them after the current major product release.

This entry was posted in Best Software Practices, Tool and Debug. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s