Scaling up and not bottoming out
description
Transcript of Scaling up and not bottoming out
Scaling up and not bottoming out
a story of Process Improvement
Presented at CoastNerds 16-May-2012, Robert Dyball
The ProductPreactor – scheduling softwareUsed in over 3500 companies in 67 countriesCan model machines, packing lines, tanks,
assembly lines for make to order, make to stock, engineer to order, in continuous and repetitive processes.
Used in a wide range of small, medium and large enterprises from small fabricating shops, to chemical plants, pharmaceutical, food, and beverage manufacturers to mining, shipping and airport scheduling.
PreactorA brief demonstration of the Preactor product
The PleasureNiche marketWell respected brand, few worthy
competitorsScheduling tools built into most MRP and
ERP systems typically primitive compared to Preactor
Businesses using the scheduling tools become more profitable; retain market share and local competitiveness even in hard times
Preactor API allows additional functions to be added, providing opportunities for integration and enhanced reporting as well “shop floor” interfaces.
The PainPreactor can work stand alone, but most clients
require integration to existing ERP/MRP systems.Integration to ERP, MRP systems typically using CSVSome industries have very complex rules, e.g., food
and pharmaceuticals have to perform expensive cleaning operations between different products in addition scheduled cleans.
Some schedules have constraints in 6 or 7 dimensionsMany clients do not know their own scheduling “rules”Many clients discover requirements on the fly, during
the project (so what is new!)
The PossibilitiesLimit projects to easy wins, to “low hanging
fruit”
or
Implement process improvement
but what and how?
Agile DevelopmentIf you aren’t using some form of agile
development, see what you can use from Scrum, Kanban or XP
Projects become more predictable and repeatable
Project costs will be loweredTeams will grow in capabilityTeams become more responsive to changeScope is managedCustomers benefit, being delivered a product
that is closer to their needs
TFD: Test First Development TDD:Test Driven DevelopmentProven to create better solution designs, with
less bad coupling = more maintainable codeProvides safeguards when refactoring10% more effort now (with TFD/TDD)
or 50% more effort later (without TDD)A suite of tests built up during the life of the
project provide valuable feedback when performance testing
Tests may replace most traditional documentation, and provide “living” documentation beside the code
ATDD and BDDAcceptance Test Driven Development (ATDD)
or Behaviour Driven Development (BDD) will sift out the poorly spec’d out user stories, allowing less scope shift and faster development
BDD tests can be automated providing fast response to the team and to users, faster turnaround of work
BDD tests create a common language that everyone can “speak” – users, developers, testers, managers
BDD tests provide living project documentation
BDD can be applied to smaller or larger units of work
Source Control/Version ControlMust be fast and reliableMust be simple to useHandy if it is also inexpensiveWe have adopted GIT – using local
repositories as well as a central repositoryGit has offline capabilities and works well
with peer-to-peer push/pull
eg., desktop local repo <-> USB stick repo <-> laptop
GITCan your source control do this?
If not, get Git.
The Friction:If done manually:
- manual testing gets boring and quality drops off- manual builds can become too much work- source control: varying quality code, 5pm code oops’s- synchronising code libraries: everyone for themselves
Developers cannot easily see how to change if they are too busy fighting fires
Sometimes too close to issues, cannot see that change is needed, or that change is even possible
Managers push for the quick result, usually less tests
The Fix: Continuous IntegrationAutomate everything you can:
- testing, builds, and deployment where possibleMany ways to do this from DIY, open source, to
commercial packages.Any improvement will helpFind the easiest or cheapest, and start thereWe have adopted JetBrains TeamCity (free version)TeamCity has 3 models: free, paid, enterpriseSupports many different build, test and deploy
configurations for Java, and .Net
TeamCity integrationIntegration with just about everything:
CVS, Subversion, ClearCase, GIT, Perforce, TFS, Mercurial, SourceSafe, StarTeam …
Ant, Maven 2, IntelliJ IDEA, Nant, MSBuild …Email, RSS, Jabber, IDE, Windows Tray … Eclipse, IntelliJ IDEA, Visual Studio … Junit, testNG, EMMA, Cobertura … Rake, NuGet, Powershell, Command Line,
FxCop, Gradle …
Broken code doesn’t make it into source control any more
Pre-tested commits
Were Next?Open source our work in the Preactor API to gain
community involvement in growing the core codeCurrently publishing on Codeplex using GIT
(will be public within the next 30 days)see http://pom.codeplex.com
Currently using TeamCity’s internal NuGet server internally(handy for internal-only library builds)
Soon to be added– public NuGet- link Codeplex + in house GIT + TeamCity + NuGet