Thursday, 13 March 2014

Progress Report #2

This post is slightly later than anticipated - for those of you who are interested, my cross-platform Java project that started at the beginning of February went very well.

On 26th Feb I made my last check-in for the first milestone which addressed the immediate requirement of processing external data into a database for the production of printable reports - a clear 5 days ahead of where I wanted to be.
This was not due to putting in "additional" time in order to meet the date, as my self-imposed deadline was not  based on required effort; I had a gap and 4 weeks seemed an adequate estimation to produce what was needed - the time I applied was simply investment into the solution.
"Time Spent is Time Invested"
I was not working to 7.5 hours days and then tools down.  I coded until it felt right (be it 6 hours or 13 hours) and then stopped.  This is possibly the biggest difference between writing software for a living (i.e. for a company that employs you) and being personally invested in something; much like a company that believes in its employees will classify them as investments, rather than cost / resource.
In an abstract way, you could argue that anyone who is employed to write software is personally invested, as their pay cheque depends upon the success of the company, but what makes it hard to achieve this level of commitment is the fact that so few companies have a relating view of their employees; without the workers the company cannot succeed.  By treating people as just resources to be consumed, businesses run the risk of incurring far more cost when they lose people than just the effort to find a new replacement and can end up imposing a cap on worker productivity (this of course has been said by many people of far greater stature than mine, many times, but it can't hurt to re-iterate..).

My preference is to not store the repository locally in the same folder as the code-base so after setting up the repository on git-hub I used the following at the command-line, from the folder that would contain the code-base, to create the clone with separate git directory:
git clone --separate-git-dir <dir> <repo>
For example:
cd /home/username/projects 

git clone --separate-git-dir /home/username/repositories/Project1
This creates an empty folder under projects of project1 and clones the repository data from git-hub into the specified separate folder.
Rodger Dudler has a great page that can be very useful for the new git user - I would highly recommend checking it out.

Once I had finally got git working how I wanted, it did actually integrate into the Netbeans 8.0 beta quite well even if the build I have remembers the last check-in note (this may have been changed with the RC1 build towards the end of February).

The End Result
  • 3600 lines of code
  • over 18 days
  • totalling 152 hours
This effort gave the software the following functionality:
  • Application groundwork / framework for future development
  • Flat-file import with processing
  • 1st-pass reporting
This small feature-set addressed the immediate requirement of the software and makes it ready to be used, all-be-it in a "sensible" manor, on both Linux and Windows platforms. In theory also Mac, but I don't have the spare hardware to prove that one. If you are interested in giving it a run, get in touch - this would be on a case-by-case basis though and not all requests will be accepted.

Milestone 2
The purpose of this second milestone is to get the software to the point where I would be comfortable with someone else using it, preferably someone who isn't the original source of requirements and definitely someone that isn't me; a public beta of sorts.
  • Manual data entry
  • Expanded entry types
  • Import management
  • Refinement of import process and error reporting / recovery.

Time to get back to work...