Software design group: Nurturing architects at Dwarves
The idea: A path to better software
“Everything in software architecture is a trade-off, and the why is more important than how." Neal Ford is a Director and software architect at ThoughtWorks.
At Dwarves, we believe that growth is our universal language, and we always strive to improve ourselves, individual-wise and team-wise.
At the end of 2021, starting with engineering practices, the core idea behind creating a software design group is to enable engineers to develop the skills required to become software architects. While there is no predetermined path or set of qualifications, several key abilities can help engineers gain the knowledge and experience to advance as architects. Becoming a strong software architect is more about applying skills in practice than just gaining theoretical knowledge.
Welcoming All Team Members: Embracing Diversity and Inclusivity.
Outside of work, we encourage the Dwarves to improve their knowledge and skills. Software Design Group - where people can develop themselves and as a team, where the team discusses and collects the point of view on software systems.
By thriving on diversity, Dwarves welcomes professionals from various backgrounds, skill sets, and experiences to join us, learn with us, and build with us. We embrace inclusivity promote the exchange of fresh ideas, encourage creativity, and help to foster a sense of belonging among team members.
Developing Skills and Professional Knowledge: Continuous Growth and Mastery.
After every training session, there was both positive and constructive feedback from the team. The best part was knowing how they were able to advance and hone their skills.
- Develop a broad technical perspective: Through the ongoing training, team members were asked to understand how technologies, frameworks, and languages work together at an enterprise level. They should keep up with software trends to see how new tools could benefit their organization.
- Gain experience with system design: Designing complex system architectures is at the heart of a software architect’s job. The team members themselves have experience in creating scalable, practical software designs and understanding the performance demands to build knowledge that translates directly to architectural work.
- Develop a user experience mindset: Providing a good user experience was enforced at all phases. This focus on user experience (UX) encourages team members to put themselves in the shoes of the end-users and consider the impact of their work on the overall usability, accessibility, and satisfaction of the software.
- Teamwork mindset: Regardless of roles and seniority, the collaboration between individuals in the team was evident, with everyone clearly understanding their responsibilities and working together effectively.
Level Up the Tech Quality
We build software. The primary purpose of the Software Design Group is to create high-quality software solutions. Software architects need to be hands-on, we input the discoveries and new research into practices. By creating an environment where everyone feels valued and respected, we can unlock the full potential of our engineers and drive innovation forward.
Here are some of our proofs:
Demo
- Explicit locking in SQL DBMS: https://bit.ly/3qoELO5
- Overview of Hashicorp Vault: https://bit.ly/3qoEEC9
- Postgres implement multi-version concurrency control: https://bit.ly/3WG9SB5
Dwarves Brainery
- Some light and casual articles on our Brainery: https://brain.d.foundation/
Radio Talk
- Software Modeling & Architecture: https://youtu.be/6hNXFhz0qow
- Introduction to Driven Domain Design: https://www.youtube.com/watch?v=8ZiS-MFXN28
- Database Sharding: https://www.youtube.com/watch?v=QiUWIyigz4U
- State Machine Pattern: https://www.youtube.com/watch?v=rtxSf1QP1wk
- Database Partition: https://www.youtube.com/watch?v=XoRUFn3UjII
Articles
- Design a system for a video streaming platform startup: https://bit.ly/43yyoWR
- zk-SNARKs: https://bit.ly/43n7jXe
- Database Designs for Multilingual Apps: https://bit.ly/45HNvPw
From every piece of collected knowledge, the group can design robust architectures, develop scalable code, and implement efficient algorithms to build developer-focused products that strengthen the software core. The result is the delivery of software products that meet or exceed client expectations, leading to customer satisfaction, increased revenue, and a competitive edge in the market.
So far, collaborating between the software design team has led to creative solutions we may not have achieved by working separately. Always keep learning and coding.
Life at Dwarves is a series of stories about people, perspectives and lives at the Dwarves Foundation.