I offer the following services:
## Unit Testing Class
This class gives an overview on the unit testing tools that a developer needs to master in order to write good unit tests:
* The basics of unit testing: what, how, why, good unit tests
* Write unit tests manually and by using an xUnit unit testing framework
* Integration testing, State testing, Collaboration testing
* Mocks & Stubs, created manually and through a mocking framework
* Testable Object Oriented Design
* Seams and writing tests for legacy code (ideally real life code brought by participants)
This is a hands on class. After a brief theoretical discussion, participants will work on exercises allowing them to start creating the skills they need in order to apply unit testing in real life.
The class is available as a 2 days or 3 days pack, and can be delivered as an open event or as an internal workshop.
## Unit Test Your Legacy Code
Many times managers or developers learn about unit testing and realize that it would be a good thing to have for their code base. Unfortunately, it’s not that simple. You can easily fall in one of the following problems:
* The development basically stops because your team wants to unit test everything
* The unit tests are too complicated or work too slow
* You realize that you need to change the code base in order to unit test and that would take too long.
I can work with you and your team to define the objectives of this effort and then make sure to create the skills and the mindset necessary to fulfill them as quickly as possible.
## Technical Coaching
Even the most successful teams can be improved based on feedback from outside the company. I will work with your team, talk to all the people involved, find out the problems with your code base and the way your team develops software and give you all the necessary information to improve if you decide to do so.
This task will be approached in an incremental manner. First, I need to learn the context. Second, I will recommend a set of actions organized in a roadmap for improvement. After one or more actions were executed, I will monitor the advances and decide with you where to go next.
The typical tools introduced in the process are:
* **Source Control**
* **Issue Tracking**
Depending on the context and on the needs, one or more of:
* **Continuous Integration**, to show low level problems like committing code that doesn’t compile
* **Automated Deployment**, to allow for easy and quick installation and updates and enable user feedback early and often
* **Collective Code Ownership**, to avoid silos in your team
* **Clean Code, Continuous Refactoring & the Boyscout Rule**, for improving existing codebases
* **Automated Testing** – **Test First Programming** or **Test Driven Development**, for reducing maintenance and bug fixing
* **Automated Acceptance Testing**, for better communication with the product owner/manager/team
Each of these tools will be introduced through a combination of:
* **Pairing** with and between team members
* **Practicing** together in code retreats, coding dojos or code katas
* **Open discussions**, one by one and in the team
For some of the tools, like automated testing or source control, a formal training is recommended.
Some of these changes will require a change in mindset in your team, and I will help you deal with it. The difficulties usually appear for Source Control, working together and automated testing. I enable this change by recognizing that each developer does something good, and I try to show her a door towards a way of improving herself. I join the team as a developer who has a different experience than they have, and try to leverage everyone’s knowledge to something bigger than each of us. Every member of the team can bring something to the mix, and my job is to fight for creating the environment that allows them to do that.
I talked at about 10 events around Europe with Maria Diaconu and we improved significantly our public speaking skills over time. If you want to learn new ideas presented in an attractive manner, to create conversations inside your company or to learn about agile software development or lean let us know and we’ll either give one of our existing talks or create a new one especially for you.
## Questions and Answers
Choose one or more teams, choose a date and call me for a few hours to discuss their questions about scrum, agile practices, kanban or any of their problems related to software development.
## Code Retreat, Coding Dojo
Me and Maria Diaconu have facilitated about 10 code retreats in Romania. If you want us to facilitate one in your city, let us know and we’ll try to work it out. If the location is outside Romania, we may require transportation and a place to stay (a coach in your living room would be fine), but otherwise this is completely **free of charge**. Our only issue is that we have a complicated schedule, so if you can bear with us until we sort it out we’ll be happy to help you.
## Anything else?
Want something else? Just [let me know](https://alexbolboaca.ro//about).