My thoughts as an enterprise Java developer.

Wednesday, September 25, 2013

Database Changes Done Right - The Daily WTF

Database Changes Done Right - The Daily WTF: "Unlike application code, you can’t exactly drop a bunch of files in a folder and proclaim that a new version has been successfully deployed. You also can’t just put back an older set of files to rollback your changes.

The only way to change a database is by running a SQL script against that database, and once you’ve done that, there’s no going back. You can run another SQL script to change the database again, but the only way to truly rollback changes is by restoring the entire database from back-up."

"Database versioning is as simple as maintaining a metadata table with two columns: Unique ID and Execution Date. Before executing a change script, simply check the table to see if the script has been executed already and, if not, run it and stored the script’s unique ID and date."

Friday, September 20, 2013

Integrating ALM: Lessons Learned Deploying Tasktop at Nokia | Dr Dobb's

Integrating ALM: Lessons Learned Deploying Tasktop at Nokia | Dr Dobb's: "This is one of those situations where an incremental approach with early user engagement -- where you have a chance to adapt installation or orientation materials -- pays off. If you pay close attention to the sorts of things that cause people grief during development, you can deal with them by creating either a development story (which changes the UI in some way) or a training story (for which you develop or enhance your training materials)."

"The moral here is to consider carefully every case of new user confusion, as it may be a warning of things to come."

"Software that supports complex tasks will probably require an investment in time for users to become adept. A well thought out UI and training material will allow users to perform basic tasks quickly and gain immediate benefit from their first steps onto the learning curve."

"Make any training screencasts short -- even if they're well structured, their perceived size can be off-putting (the user sees a 40-minute price tag on the screen and decides to set aside their learning for another day that never comes)."

Comments for people considering software engineering

I enjoy all the new problems & industry changes, that we can make a huge difference, and that it is usually quick to see the results of my work.
I didn’t expect my college degree to teach me so little of what I use each day – they are only able to teach the basics and we have to continuously learn new stuff.
I suggest going the extra mile if you only do the minimal coursework you won’t excel.  Do more and better than is required and/or side projects to push the boundaries of what you know and practice learning on your own.  Get involved in projects, research ideas, and try out new skills.

Increasing the max heap size can increase the chance of an OutOfMemoryError in Java

4.5 years ago I encountered a problem where I fixed an OutOfMemoryError by decreasing the max heap size.

Basically there is a C++ heap and if the Java heap takes up too much space then the C++ heap can get an OutOfMemoryError.  This generally happens when the java heap size is too near the maximum that that O/S allows – for Windows XP that max is in the 1.2 to 1.4 GB range so if your max heap size is 1 to 1.2 GB you may experience this problem.

Thursday, September 12, 2013

The cost of patches

Developers are willing to put almost any issue into a patch, but we want to make sure that the customer knows what a patch costs them. A patch is an extra build that causes development hours of extra time to create, Q.A. hours of extra time to test, and extra time to install. We must always balance having some issues into production faster with having more issues get done in the long run.