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 Programming (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
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.
In Part 1 of this series I described the characteristics that make up a good Automated Test. Here in Part 2 of this series I will explore all of the benefits you will enjoy by creating those good tests and why the time spent on making good tests is a no-brainer investment. Continue reading »
The adoption of Automated Testing strategies and tools, both in Agile and traditional teams, has been patchy – some teams and communities have embraced it, but many organizations still perceive it as a burden that just slows down development. Those that see the writing and execution of tests as an additional, costly and separate task from development have missed seeing some of the main benefits of an expertly manicured test suite. Continue reading »
In the Pig and Chicken analogy for Scrum participants (Jeff Sutherland explains Pigs & Chickens), the Pig is the one who is required to make the biggest commitment and put his proverbial skin in the game. For the Pig, it is an all or nothing proposition. They either meet their commitment or they do not, there is no gray area. However, many teams fail to get this level of commitment from their Pigs, or don’t even ask for it in the first place. This is the genesis of the Outlier Pig. Continue reading »
The prioritization of Stories is a core practice in the Scrum agile development process. In fact it is probably the single most important responsibility of the Product Owner – making sure the Product Backlog is prioritized properly to maximize business value (a.k.a ROI). However, there is a common anti-pattern that I see regularly in which the Product Owner and the Delivery Team act complicitly to establish a priority order for Stories that are being committed too within a single Sprint. The need to do this comes from a negative place and it has dramatic consequences for the Delivery Team. Continue reading »
When I buy a tech gadget, whether it be a cell phone or a laptop for example, it always costs me twice as much as everyone else. No matter how good a deal I try to find, it always ends up costing me exactly twice as much as everyone else. Does this happen to you?
It is caused by Geek Wife Gadget Purchasing Syndrome, wherein I cannot buy any cool technology without also getting the same thing for my wife because she also covets cool gadgets.
We had planned to update to the latest MacBook Pro this coming January, as that would mark 3 years since we purchased our current identical in every way MacBook Pros. However, in these turbulent economic times and because of the syndrome mentioned previously, we decided to explore alternatives.
In the end we decided the laptops were not too bad and we could probably squeeze another couple of years out of them, but we had to do something about hard drive space and RAM. So this post details the RAM upgrade and I will detail the hard drive upgrade in another post. Continue reading »
A colleague of mine forwarded an article to me during this last week, which he prefaced with the following statement …
guys, I’ll write it in all caps and bold:
I AM NOT PROMOTING OR IN AGREEMENT OF ANY OF THE POINTS THE ARTICLE MAKES.
… which begs the question, why did he send it not only to me, but an entire team of people? I choose to believe it was because he is an enlightened soul that understands that the best way to reinforce your own beliefs is to read more of the opposing point of view, not more of the view you already have. I am lucky to have a few of these souls working for me right now. Continue reading »
Coding styles are THE religious debate of the Software Engineering industry. Everyone has an opinion, but no one has an iron clad argument as to why their ideas are better than someone else’s.
It doesn’t matter what language you write your code in or what company your work for or even what open source project you contribute too, the topic of coding styles will sooner or later raise its head. The debate can range from the banal, like which line the curly brace goes on, to the overly subjective, like how to name variables.
In the end most of the decision points are pretty subjective and it is somewhat irrelevant what you choose, as long as everyone agrees and you are consistent. But don’t be mistaken, a consistent coding style is an important consideration on any project, from the solo developer to the multi-national team. Continue reading »
Code Camp is a place for developers to come and learn from their peers. This community driven event has become an international trend where peer groups of all platforms, programming languages and disciplines band together to bring content to the community.
Who is speaking at Code Camp? YOU are, YOUR PEERS are, and YOUR LOCAL EXPERTS are…all are welcome! This is a community event and one of the main purposes of the event is to have local community members step up and offer some cool presentations!