May 10, 2016
Challenge the way you work. Stay happy & productive!
The journey to mastery is never done. It takes practice, constant improvement and always honing your craft to achieve your fullest potential. After sharing useful methods for the Scrum Master and the Product Owner | Business Analyst | Product Manager roles, let’s explore together the Software Developer | Software Crafter role. This time we’ll focus on technical and team collaboration challenges.
As a Software Developer | Software Crafter you are interested in delivering quality code, precision and driving change. Experiment the below practical solutions to common challenges encountered when developing software products.
When you encounter some of these technical challenges:
- You want to be efficient with new languages, frameworks, and systems
- You are focused on writing quality, maintainable code
- You are unhappy with legacy code & cost of change is too high when changing/adding a new feature
- There are misunderstandings on requirements and there is an annoying back&forth between Business Analysts/Product Owners and programmers
You can experiment with some of these techniques:
As MozaicLabs (spin-off from Mozaic Works) is growing, the team felt the need to improve the way they define & communicate features entering the development phase. As new developers joined the team, it was clear that it was needed a better process. The Product Owner had more analysis and testing work on her hands. The new developers needed a way to easily understand what they were building and gradually get acquainted with the product as whole. Learn more about how BDD is helping them out, how it works for the team, as well as some mistakes they’ve made along the way. Read more
Making a new developer productive as quickly as possible is most of the times challenging for the product team. Alin Pandichi, the newest member of MozaicLabs, shared his own story about what techniques he applied to better use the time & resources when joining a new team. Read more
While a lot of the design principles used in software can be found in other design disciplines, there is one very present in UX and graphical design that is very rarely discussed in software circles: consistency. It’s not because we weren’t trying. The system metaphor idea from XP and the conceptual integrity idea from Frederick Brooks are just two of the notable essays for consistency. Yet there are very few systems who achieve a good level of consistency. The UNIX file system with its “everything is a file” philosophy is one of them. Eclipse, with “everything is a plugin” is another. Read more
Unit testing is one of the tools a programmer can use to significantly reduce the number of mistakes he or she makes when writing code. When correctly used, unit testing can significantly reduce the time spent with bug fixing, reducing the load on colleagues that take care of support and testing and allowing the introduction of new features faster, resulting in higher competitiveness. Read more
Building a better & happier company culture
From our own experience, the work environment plays an important role in retaining and fostering the happiness of the developers. Here are a few examples from real life companies that might inspire you to build a better & happier company culture:
You can practice these techniques and more by attending workshops and trainings. Here is a quick selection:
- Software Architecture Principles
- Design for Changeability
- Clean Code
- Design patterns
- Behavior Driven Development with Cucumber
You might want to acquire new skills or improve your current approach by practising in various series of workshops, including:
Let us know what other challenges you encountered. We’ll be glad for you to find practical solutions to your needs in the following communications. Stay happy and productive!