Engineering Best Practices is a fast-track exploration of the disciplines, techniques and thinking that enable the creation of great software. By the end of this workshop, students will have a much better understanding of why clean code matters and of the basic techniques for creating better, cleaner, more robust code. Topics covered include:
- how to structure and decompose code at the class level
- how to partition code across classes and subsystems
- how to use data structures effectively
- how to identify and rectify code smells through refactoring
- how to unit test effectivelyt for behaviour
- how to use their IDE and tools for ultimate productively
- how to use the SOLID principles in practice
This is an intensive 2 to 3 day workshop (depending on level) and can tailored for beginner and advanced students alike. We simply ratchet up the complexity of the exercises for the advanced attendees, and build in additional time for discussion.
We aim to move the students away from thinking and struggling at the syntax level, and give them a toolbelt of good practices and techniques to code better. Students should come armed with a good understanding of Java or C#. (The course can be delivered in either language.)
- Using standard data structures (sets, maps and lists) to better solve problems
- Solving single class problems then scaling out to multi class problems.
- Developing backwards through BDD and letting the IDE do the heavy-lifting
- How to writing better (and shorter) unit tests through the creation of DSLs
- Understanding when to mock, when to stub and when to avoid
- Identifying different types of coupling and strategies to avoid
- Design by Contract: defensive programming versus assertions
- The course can be tailored to any modern OO language (Java, C# etc) but the delegates should come armed with a good understanding of the language.
Best course I have attended so far at Instil. Learnt a lot about how powerful your IDE can be, how to go about writing tests before writing any production code(TDD) and how refactoring really improves your end product. Great instructor who knows his stuff and was very willing to help when needed.