Independent project support and seminars in the areas of Agile software development, SCM/ALM, DevOps, Continuous Delivery and Java/JEE.
Welcome to my web site. Find out more about my portfolio and areas of interest. Navigate further to dedicated pages that show my performances and seminars, or zoom in to my books, to get a better understanding about my approach.
Agile Java-Entwicklung in der Praxis
DevOps for Developers
I support projects (hands-on as well as conceptual, as developer/architect, release/deploy/delivery engineer) and provide seminars in the following areas: Java/JEE, Agile (including tooling), ALM/SCM, DevOps and Continuous Delivery.
For many years, I have been supporting middle-sized and big projects and passing along insights about the latest tools that make it possible to deliver beyond the customer's expectations, and I have found that Agile strategies and environments are critical in this regard, integrating common project phases, project roles and activities:
Tools should implement requirements and concepts. I prefer to use tools that allow productive software development. There are many good tools on the market that I prefer to use and consult on including: Jenkins/Hudson, TeamCity, Bamboo, Maven, Ant, Gradle, PMD, FindBugs, Checkstyle, Sonar, Cobertura, Mockito, Subversion, Git, Fit/FitNesse, XStream, Eclipse, IntelliJ IDEA, Mylyn, Artifactory, Nexus, JIRA, FishEye, GreenHopper, Trac, RPM, yum, Puppet, and others.
DevOps is a mix of patterns intended to improve collaborations between development and operations. DevOps addresses shared goals and incentives as well as shared processes and tools. Because of the natural conflicts among different groups, shared goals and incentives may not always be achievable. However, they should at least be aligned with one another. DevOps respects the fact that companies and projects have specific cultures and that people are more important than processes, which, in turn, are more important than tools. DevOps accepts the inevitability of conflicts between development and operations.
After chosing the right tools, they should be used and integrated in the most efficient way. This can be a selective adoption, or a "full lifecycle tooling", including tools for code, test, build, configure and delivery. Application lifecycle management (ALM) protects your assets and boosts productivity. Although not a must, ALM should be enriched with Agile strategies.
What is ALM? ALM is a comprehensive approach streamlining your software development process.
- Is the marriage of business management to software engineering
- Targets processes and tools working together seamlessly, without silos (silos are for farmers!)
- Spans development phases and project roles to foster communication and team collaboration
- Enriches ALM with Agile strategies
- Is based on Software Configuration Management and version control
- Is based on a set of lightweight tools, enabling a team to collaborate efficiently
- Includes artifact types to continuous integration, inspection and deployment including Java, Groovy, Scala, Cobol, .NET, and others
- Sets up and uses an unified infrastructure