Wednesday, May 28, 2014

Spring-integrated Hibernate 3 to Hibernate 4 Upgrade

I recently upgraded a large Java web application from Hibernate 3.6.6 to 4.3.5. Given the level of Spring and Hibernate integration in this application, I also upgraded Spring from 3.2.2 to 4.0.5 at the same time.

This was a relatively painless major upgrade. The application configuration changes were pretty straightforward and the code changes were minimal.

Here are the changes required for this particular upgrade:

Thursday, May 1, 2014

Continuous Stream of Value

New customer acquisition, existing customer retention, and continuous improvement are three major pillars for any business. For software products, these needs tend to converge as work items for the software development team.  In fact, the number of items being added to the team's work backlog is directly proportional to the amount of time that passes. Business will always need more features and fixes, deployed in less time. These are constants we can and should rely on. We're engineers after all -- we like reliable. 

Since business value is only realized when work items are deployed to production, monitoring the performance of the software development team directly relates to the three major business pillars above. So how well is the team doing? Is the road to deployment a traffic jam or a high-speed freeway to production? Are releases large and high-risk, or small, frequent, and high-quality?

I've found that in a healthy team culture, using an agile methodology to deploy small, frequent, low-risk, high-quality releases, a natural team velocity is reached that more than meets the business need. As the team establishes a cadence, estimates improve and business teams are bolstered with a high level of confidence in the software delivery process. Much like software teams, they too find a natural cadence and velocity. 

As the teams engage this pull-based work management model, the business leadership is no longer pushing on the delivery process and can maintain focus on customer acquisition, retention, and continuous improvement. Sales teams and relationship managers are empowered with a healthy "can do" support structure behind them. With the teams working together in more positive and efficient ways, customers enjoy a continuous stream of value and the business as a whole is able to maximize growth.