Engage

Posted in: Uncategorized

I am a fulltime independent consultant and I am available to engage remotely or on-site anywhere in the world. My experience extends from small ISV startups to multi-national Fortune 500s and I enjoy engaging with clients that are anywhere on that spectrum.

The following is a sample of the services I provide to clients:

Software Development Process Improvement

  • Coaching for Agile process evaluation, adoption or improvement, including Scrum, Lean, Kanban and Extreme (XP)
  • Definition, refinement and documentation of team processes and practices
  • Definition of Quality Assurance and Quality Control standards
  • Integration of defect tracking systems with other tools and processes
  • Engagement with customers and requirements elicitation

Software Development Team Management

  • Job Description authoring
  • Salary range and benefits package definition
  • New candidate acquisition and screening
  • Team workspace design and office space evaluation
  • Skills assessment of existing resources
  • Collaboration strategies for teams

Vendor Management

  • New vendor discovery and screening
  • Vendor proposal reviews
  • Offshore vendor management, including onsite visits and reviews
  • One throat to choke multiple vendor management

Software Configuration Management (SCM)

  • Introduction of an SCM system to teams not already using one (Subversion, Git, CVS etc)
  • Subversion and CVS training
  • Subversion and CVS server installation and configuration
  • SCM process definition and documentation, including branching and merging processes
  • SCM system migration, particularly CVS to Subversion

Build Management

  • Implementation of Apache Maven and Apache Ant based build systems
  • Automation of builds, particularly in relation to a Continuous Integration system like CruiseControl or Hudson
  • Management and versioning of produced code artifacts, particularly in relation to an Artifact Repository like Nexus or Artifactory
  • Release numbering strategies and Alpha and Beta customer release programs

Software Architecture & Design

  • Enterprise-level system architecture definition, existing architecture reviews
  • New database design and existing database design review
  • Formal UML based architecture definition

Enterprise Java Development

  • Specialist in full-stack JavaEE development
  • Public API design and documentation for ISVs
  • Web service development and integration
  • Code reviews and performance tuning
  • Service Oriented Architecture (SOA) design and implementation

Web Development

  • , JavaScript and development
  • Integration of AJAX style JavaScript libraries including GWT, JQuery and ExtJS
  • Integration of Adobe Flash and Flex components

Automated Testing Strategies

  • Introduction of tools like JUnit and Sellenium to teams that currently do not do any automated testing
  • Integration of tests into automated build scripts and generation of metrics
  • Static analysis of codebase quality

Mobile Development

  • iPhone application design and development, specializing in integration to JavaEE based back ends
  • Web based mobile development

Social Media Strategy

  • Specializing in small to medium business that do not have dedicated in house Social Media resources
  • Evaluation of current Social Media presence
  • Recommendations for Social Media platforms based on particular business needs and goals
  • Evaluation of Location based services in relation to business needs and goals

To discuss your needs and the possibility of engaging with me, please contact me on +1.650.336.5877, however please keep in mind that I am usually onsite with clients during regular working hours, so I will return your call at the earliest possible moment. Alternatively, consider sending an email to craig AT craigsdickson.com, or simply use this Contact Me form, either of which will give me the possibility of responding after hours.

iPhone Development for Java Programmers

Posted in: Software Development, Architecture & Design, Software Development, Development Tools, Reviews

A friend brought this book to my attention recently. As an experienced enterprise Java developer who has recently added Objective-C to his toolkit of technologies to solve problems with, I was happy to see a book so close to my heart. I have started (but not yet finished) reading this one and so far it seems well worth the read for those of you who want to also add Objective-C to your Java skillset.

Good riddance Lotus Notes

Posted in: Reviews, System Administration

As of today I no longer need to have Lotus Notes installed on my Pro! Woo hoo!

I was very excited at the prospect of uninstalling it (yes, uninstalling bad software is all it takes to get me excited). Lotus Notes is far and away the largest installation on my laptop. It weighs in at an incredible 792 MB! The next largest application I have installed is iPhoto at 430 MB and then follows Gimp at 263 MB. There would be very few people that would argue that Lotus Notes provides more functionality per megabyte than Gimp does. In my experience IBM is especially good at producing bloatware, but even this is beyond any rational (pun intended) explanation.

What makes it worse is that Lotus Notes is a just plain awful tool to use. So its a one-two punch, first it takes up ridiculously unjustified amounts of disk space, then it rubs salt in that wound by just being horrible to use. Nothing has ever made me long for Outlook like Lotus Notes does, and that is saying something since I am a self-confessed Apple fan-boy.

I am pretty sure my laptop sighed in relief when I deleted Lotus Notes, like a giant burden had been lifted from its shoulders.

The only upside to Lotus Notes, is that it does have an Apple version at all, although this is more due to the fact that the recent versions are based on Eclipse (ie. Java), not so much that IBM really loves Apple users in any way.

Farewell Lotus Notes, it was depressing and frustrating to know you, and I hope we never cross paths again.

JavaOne 2010 Call For Papers

Posted in: Software Development, Software Development, Training

The likelihood that we will be blessed with a JavaOne conference in 2010 just got a whole lot better.
Continue reading »

Oracle Doesn’t Mention Java – Does It Matter?

Posted in: Software Development, Database Technologies, Software Development, Development Tools, News, Software Development, Open Source

The following image is available on the website currently (original URL):

For me personally the 2 biggest questions about the whole deal have always been What happens to ? and What happens to Java?

has always been open source and Java has been creeping slowly towards open source over the last few years.

Can really kill either of these technologies if they chose too? Probably not outright, but they could certainly damage their reputation and community support. People can fork code bases and start again, but it would take time (many years) to build back up to the flagships they are today.

The above image from is interesting in that it does call out but does not mention Java at all.

Perhaps sees more value in than Java and is attempting to protect it better. Or perhaps believes Java needs less protection than , after all, much of the debate over the /Sun deal has surrounded and not Java.

Wednesday is the day when some of these questions will hopefully begin to answered.

Why do you think called out and not Java?

So Long And Thanks For All The Glassfish

Posted in: Software Development, Database Technologies, Software Development, Development Tools, Software Development

Well, it seems almost official now, will get it hands on Sun and the Java and communities (among others) will need to hold their breath and wait to see what kind of chaos this might cause for our industries.

James Gosling (the father of Java) has long been publishing Java related images on his internal Sun blog. He has now posted his very last one.

The best comment I saw so far was “So long and thanks for all the Glassfish”.

You can read the original post here.

Quote Of The Week – 2009/01/22

Posted in: Software Development, Craftsmanship, Software Development, Quality Assurance & Control, Quotes

I’ve heard it said that the difference between useful software and worthless crap is that people build useful software for themselves, and build worthless crap for other people to use.

“Uncle” Bob Martin
Java Dates

EU Approves $7.4 Billion Deal Between Oracle And Sun

Posted in: Software Development, Database Technologies, News, Software Development, Open Source, Software Development, Web Technologies

It’s official: the European Commission has granted regulatory approval for to acquire Sun Microsystems for approximately $7.4 billion, without further conditions. In a statement released moments ago, says it expects unconditional approval from China and Russia as well and intends to close the transaction shortly.

Robin Wauters @ TechCrunch
EU Approves $7.4 Billion Deal Between Oracle And Sun

Should You Use Recruiters?

Posted in: Consulting & Entrepreneurship, Software Development, Leadership

There has been a good debate on the Los Angeles Java Users Group mailing list this week about working with , both from the job seeker side and also from the employer side.

In my career I have worked with on both sides of the fence and I think the argument boils down to the same issue no matter which side you are on – working with good is a good idea and working with bad is a bad idea. Apologies if you were expecting something more earth shattering!

Many recruiting houses are simply glorified keyword matching services and they all function almost identically. If you visit their offices you will find a large room with two large tables, one designated for “Hardware” and one for “Software”. All the folks around the Hardware table are working to fill Hardware related positions and the Software folks are doing the same for Software positions. There will be 4 to 8 folks at each table, each with a computer and a phone permanently strapped to their head. At the end of each table will be a large white board with the “Hot Jobs” listed with the keywords to try and match, plus salary and commission rate (not surprisingly the higher the salary and commission rate, the hotter the job miraculously becomes). The main purpose of the folks at the table is to process the highest number of resumes as is humanly possible (from active job board postings, from their DB of past resumes etc.) and bring the resumes with the best keyword match to the top of the pile, then do a bare bones phone screening interview (ie. does the person actually exist) and then pass the pile of resumes off to the employer. The employer then has to process the resumes all over again, screen out 80% of them because while the keywords are there, there is an obvious problem elsewhere and then interview the other 20% to find out if any are even close. Most of the time you can achieve the same results as an employer by paying the fees to monster.com and doing the search yourself – it might even be quicker.

But as a job seeker you do need to be in contact with because many positions are never posted widely/publicly (at the request of the employer). In this scenario the employer is engaging the recruiter to get at their pool of contacts that are hopefully pre-screened etc., some of which may not even be in the active job market, but are known to the recruiter. This becomes increasingly true if the position being filled is higher up the corporate ladder (manger, director, VP etc). However, a bad recruiter will waste a lot of your time if you are not careful.

As a manager, these keyword matching are the bane of my existence and 50% of the reason I never answer my phone at work (the other 50% of the reason is software sales guys, but that is another post). The endless cold calls just trying to present me “a really exceptional candidate” they have found or “just wanting to know” if I have any open positions. These guys are really the sleazy used car salesmen of the IT industry.

As a job seeker it will be pretty obvious if you are working with one of these houses. Firstly if you ever get a phone call in response to a resume you submitted and it sounds like the person on the other end is sitting in a room full of people talking loudly, then they probably are. I have even been asked to hold the line when talking to one of these guys and while I was waiting I could hear another recruiter at the table talking to another candidate on their phone about the exact some position!

One of the other classic traits of these organizations is their incessant need to keep the job seeker and the employer at arms length from each other – the theory being that they need to control the communication stream so as the employer and the job seeker don’t reach their own agreement and the recruiter misses out on a commission. This is a symptom of the fact that the recruiter and the employer are not closely engaged with each other and do not have a strong working relationship. This also just hurts your ability to present the best of yourself to the employer. You are the person who knows your skill set and experience the best, and yet you are letting a recent high school graduate with 2-days in house training represent you. Another tactic is for these houses to take your resume and rebrand it with their logo and add their contact information and remove all of your own contact information. This involves a cut-and-paste from the resume you submitted and invariably ends up in a less than professional looking document. Just wait until one of these guys takes it upon themselves to actually edit the content of your resume “on your behalf” without asking you and you will very quickly realize that these guys are probably hurting rather than helping your job search.

Also, just be a little wary about the employer if they are using these kinds of companies. Its probably not a deal killer for you as the job seeker, but just pay close attention to what else your employer might not be paying close attention too.

But! There are good too, they are just a little harder to find.

I have worked with good on both sides of the fence as well. From an employer perspective a good recruiter who knows your industry and knows the local talent pool can be invaluable. They can help you shape the job description and salary of an open position to align it with what is happening in the rest of the industry and so attract the type of candidates you want. They can find candidates that are not in the active job market because they have built up a high quality contact list of candidates they have placed in the past or have met during prior searches etc.

These are usually smaller shops with a smaller focused recurring client base. Many work on a mix of retainer and actual placement fees, so they are not all about placing as many people as possible, they have an incentive to establish and keep long term relationships with employers by providing exceptional candidates.

From the job seeker side you will have to do your research to find these kinds of good . They probably won’t be posting hundreds of jobs on monster.com because they simply are not filling that many positions at one time. All of the ones I have dealt with in my job searches have found me, not the other way around. When they call you, the background of their side of the conversation will be quiet, because they are not working in the bull pen, they actually have an office! They will likely want to talk to you for a while and have an actual conversation. They will want to determine if you are an all around good candidate, not just a good keyword match.

If you are presented to an employer by one of these trusted , you are going to be going into that interview with a lot of credibility already on your side. Plus you already know you are one of just a few folks that are going to be interviewed, because that is what the employer is paying for – to not have to do hundreds of interviews.

So in the end, a good recruiter is someone you want to be in contact with, no matter if you are an employer or a job seeker. A bad recruiter on the other hand can waste a lot of your time and also actually hurt your chances of finding a job or filling your position.

Java Persistence API (JPA) – A Brief Overview

Posted in: Software Development, Architecture & Design, Software Development, Database Technologies, Software Development, Integration Technologies