The Gurukul: Making software developers, high performing Consultants
We all talk about following best agile practices like TDD, code readability, no duplication and refactoring continuous code.
But in general, it is very hard to follow these practices while writing the production level code. Many times, we end up with a massively complicated code that no one wants to read or refactor. In this case, maintenance becomes a nightmare and leads to inefficient code.
As a growing organization, we at CoffeeBeans were not unknown to these problems. We lacked a proper platform for sharing knowledge about best practices of writing efficient code following proper agile practices. It is hard to make people follow good practices because they don’t know how to start and do it properly?
Now, the challenge was, How can we fix it?
We introduced a platform called Gurukul that intends to train in-house developers to follow agile practices. Gurukul is a one-week extensive program where the developers solve the problems by applying agile concepts such as TDD.
One of the challenges was to decide which language should we use during Gurukul since we are a group of developers who work with different programming languages. As for our Gurukul session, we required a language that strictly follows the convention of the static type.
We went ahead with Java because most of us were familiar with it as part of our college curriculum.
Other reasons to choose Java
- Java is an Object Oriented Programming language
- Java is statically-typed, so it expects its variables to be declared before they can be assigned value.
Initially, we come up with a rough idea or solution and as part of the session, we encourage developers to first discuss the problem statement and then ask them to come up with their own solution. Gradually we guide them towards increasing the efficiency of the solution.
In our last Gurukul program, we had varying time constraints for coming up with the solution depending on the complexities of the problem. We also ensured to give early feedback, as it is one of the cornerstones of the agile concept. Early feedback is very helpful during implementation as it guides us towards the correct requirement.
We included Pair programming as one of the daily concepts during Gurukul to enable developers to get familiar with Java. Every day, we shuffled the pairs so that everyone gets comfortable with the new code. This also helped them in changing their roles from driver to navigator as per the pair-programming concept.
As of now, we have successfully completed two programs of Gurukul with different participants, where people learned and practiced agile concepts in the process as well as got hands-on with Java.
I am very fortunate to be a part of Gurukul 2 as a Trainer, which in turn helped me to hone my technical, communication, and presentation skills. I think the best possible way to learn a topic is by teaching others. I recommend everyone to step up and try to coach or train their team members and in turn make themselves better consultants.
By the way, people ask too many questions.
Be prepared for that 😛