We provide tailored training and mentoring to suit all needs & budgets.
We can provide training in a number of flexible ways. One, unique approach is for our consultants to participate in your software development and delivery "to show teams what good looks like".
How teams start to analyse the requirements and start the design process for a new project / new feature is hugely important. A lot of cost and mistakes are introduced at this stage.
Enabling effective fast feedback loops at this stage pays extensive dividends.
The following techniques and technologies have proven to be very valuable for teams to dramatically increase productivity and quality:
How to identify & group business processes (as thus requirements) which should live together and thus can dramatically simplify the architecture and improve productivity. Seeing the bigger context is everything! A lot of teams fail to do this step properly.
Aligning business / product teams with software development teams to accelerate a common goal. We show how Business and Product folk can really help engineers with their code (this is counter intuitive) !
Domain Modelling - and Domain Driven Design (DDD) is a powerful technique - however, how teams approach and do this is often problematic. A lot of teams never get to "taste and release the true potential" of this methodology.
Type systems & composability - Mostly under utilised by most teams. Most teams only use only a fraction of the power of type systems. Some even consider type systems as a hindrance. We will show how they can be used effectively to increase quality and productivity. Even in dynamic languages like python there are significant benefits.
Learning outcomes:
The course teaches effective requirements analysis and architectural design techniques to dramatically boost software productivity and quality from project inception to major project enhancements. Students will learn modelling, domain-driven design, alignment of business goals with technical needs., and leveraging type systems and composability.
How teams are organised, especially wrt selecting languages, tooling, and environments can significantly impact the productivity, quality and ultimately the long-term success of projects. Yet many teams "just follow the current fads" without really understanding the implicit and hidden trade-offs that they unconsciously make.
Strategies for Complexity Reduction - complexity grows over time and is a significant cost driver
Functional paradigms - there are important quality / productivity / security benefits to introducing different paradigms
Repo design, Architecture and deployment strategies. Deeply understanding the complexity trade-offs of choosing various architectural and deployment strategies - most teams don't realise the costs. (E.g. If you can't build a good monolith what makes a team think that they can design and deploy a good micro-services architecture? Hint: monoliths can be much less complexity than micro-services - thus understanding what is involved is really valuable)
Testing - we will show you how to dramatically reduce the number of tests teams need to write whilst increasing quality!
(And even how automatic test generation can be super effective).
Security - how to ensure only permitted actions happen ("white-listing" functionality) whilst "making illegal states un-representable" in the code.
Safe & Effective AI Adoption in Software Development
Learning Outcomes: The course teaches strategies to optimise team organisation, tooling, languages, and architectures to maximise productivity, quality, and security of software delivery over time. Students will learn complexity reduction techniques, functional programming paradigms, architectural patterns, effective testing, and safe AI adoption for software development.
Many teams quickly condemn legacy codebases and pursue risky rewrites, discarding years of domain knowledge and investment. Though technical debt may justify rewriting, incremental rehabilitation often better balances risks and costs. The most effective strategy delivers new features while dealing with the problematic codebase. In this package, we will show the team how to do this safely and effectively.
How to assess if a code base can be "saved" and rehabilitated or whether it is genuinely better to start a rewrite.
How to deal with the huge "complexity" of a legacy codebase - (AI is only a minor part of the solution)
How to continue safely with new feature development whilst the team addresses legacy issues & bottlenecks.
Or, if the decision is to rewrite, how to do it in a way that does not stop new feature development.
How to use modern tooling to build a risk profile of a legacy code base so that objective decisions can be made as to which parts of the code base actually need immediate attention.
We will show you how to tame and balance the commercial needs with the engineering needs.
Learning Outcomes: The course teaches effective strategies for assessing and improving legacy codebases, including determining if rehabilitation is feasible, managing complexity, continuing new feature development, and utilizing risk profiling and modern tooling to objectively guide priorities. Students will learn how to balance commercial needs with engineering priorities and risks when deciding how to deal with legacy systems.
Who are these courses for: For cross-functional teams of all sizes. As in most commercial software development teams these packages are tailored such that juniors, mid-levels and seniors will all derive benefit. They are designed so as to help the team achieve its goals. Note: From experience we find that some seniors will find some aspects of the courses challenging due to the counter-intuitive approaches to certain problems.
Delivery options: We offer both remote and on-site options, however, for some aspects of the packages having the team(s) in a room working together achieves better results faster.
For best results, the team mentoring is for 3 months, depending on the complexity of the project it can be easily extended.
Additionally, we offer individual mentoring for key personnel.
Prerequisites: An open mind, especially from the mid-level and senior engineers as a lot of the techniques we explore are built on advances in both academia and industry but a number of them are not yet mainstream.
We have decades of experience we know what works and what does not work.
Book a free consultation no obligation consultation and or deeper assessment with us and we will help you navigate the strategic choices.