If you are following me for a while, you would know that I create software teams for companies here and there. But in some circumstances, a normal team wouldn't work! You need a Ninja Team! Here I'm going to tell the story of creating a such team for FxLand.
FxLand (read Functionland!) is a Canadian startup working on BAS (Blockchain-Attached Storage). They raised 1M$ about a year ago. They have to meet their deadlines for delivering the applications they promised. But the time was running out and they had JUST 3 months to deliver their so-called application: Fx Files.
Fx Files was going to be a file manager which works on all major platforms (Windows, Android, iOS, macOS, and Web). But we had just 3 months to go! What a hard deadline!
To make this happen I had just 1 week to assemble and form the team. I picked Blazor as our mainstream technology for this project. As FxLand is not on .NET stack, they were so skeptical about this decision, but in the end, they decided to pick .NET ecosystem for this project.
If you are curious about the final result, it is easy to see! As the project was completely open-source. And here are the addresses:
- Source Code on GitHub
- Board on Azure DevOps
- Designs on Figma
- Fx Files on Microsoft Store
- Fx Files on Google Play
And here is a glimpse of the app which is available in stores now:
In this project, I worked as Software Architect and Team Builder. In this post, I'm going to talk about the team-building story of this project and the lessons I've learned.
The most complex part of this project was forming its dev team. Creating a product for Windows, Android, iOS, and macOS need lots of shared and specific logic. To handle the complexity of the project, I decided to form 3 different logical subteams for dev.
This team was responsible to write all the logic required for the applications as services. As the main language for this team was C#, there was no need be a mobile developer to be able to join this team. So I could offer this job to a wide variety of .NET developers.
Negar was the one responsible for this team. I've worked with Negar on several projects I was so confident in her that she can manage all the work.
For this team, we had the honor to work with Hamed, Ziba, 3 Zahras! (Zahra Bayat, Zahra Ahangari, Zahra Khani)
The UI team was responsible to create all those beautiful UIs using HTML/CSS and Blazor. So they need to be good at styling in CSS and writing functionalities in C#.
Maryam was the one responsible to manage everything related to this team.
For this team, we had the honor to work with Ali, Hootan, Mohammad, Zahra B, and Amin
Blockchain Integration Subteam
One of the most complicated parts of this project was its integration with FxLand's blockchain called: Fula Network. There were lots of contracts that needed to be designed and finalized so we can work with Fula Network.
Hamed took responsibility for this part as lots of work were needed to collaborate between teams and the blockchain contract interfaces. Hamed's wide knowledge of the different stacks made the successful integration possible. Negar and Hamed did a lot to finalize the blockchain contracts so the service team could work with them.
Whenever I'm going to form a UX team, I call Ramin! and this time was no exception. So in this project, we worked with Atefeh as the UX project manager and Maryam as the lead UX designer. You can check the result here and see how elegant it ended up. You can see the results here: Designs on Figma
A reliable product is good because the QA ensures it is reliable! So, one of the most important teams that we have made was our QA team.
The QA was led by Sobhan who formed a great QA team for this project.
We decided to bring Fahimeh and 2 Fatemehs (Fatemeh M and Fatemeh R) in. They had a brilliant impact in making sure the app is great.
In each project we have some complexities that can take a project down, they won't let you down if Ashin is on the team. And he is like a team, even if he works as an individual. When Afshin is in the team everybody has the confidence that nothing will be a problem, because Afshin will fix it.
As I've mentioned, one of the most complicated parts of this project was its integration with FxLand's blockchain called: Fula Network. The libraries for this were in Rust and Go and were available somehow to work in Android's Java and iOS's swift. As we were working with MAUI it was theoretically possible to use these libraries. But you know what happens when we say "theoretically", it won't happen normally! To make it happen you need a magician, and the magician was Afshin, as always!
As we had everything on Azure DevOps, configuring all those pipelines for CI/CD and project management wasn't an easy job at all. Afshin did the hard work and made everything ready for the team.
Project Management Team
Such a project with that many different teams working together to deliver in just 3 months, would take a lot of coordination and management effort. Sobhan and Negar were responsible to do all this management stuff working with leads of other teams: Maryam (Blazor Lead), Hamed (Integration Team), Negar (Service Team)
For a project at this scale, we should have great consultants, and we had the chance to work with the best ones: Yaser and Saleh (co-founders of Bit Platform). They helped us to overcome the technical complexities we faced, especially in the Blazor area. Although Ehsan and Keyvan were stakeholders in this project, I see them as great supportive consultants for us too. We had lots of great conversations which led to the decisions which helped the project to stay on track. I was also helping the team as a consultant in software architecture areas.
Each project has its learnings. This project was no exception. Here are some of the lessons I've learned from this project:
Mind the burnout: This project had very strict timing with a relatively big team (20 people). There were times when people hadn't enough sleep for days. This burnout affects the team's performance. In any meeting, I should mind the fact that people are exhausted.
Everything on the board: Working with this many people together involves lots of expectations and promises between people which is impossible to manage individually or on paper. Any planning should happen on the board.
Mitigate the technical risks as early as possible: Technical risks can be so much deadly. You should mitigate them as early as possible so you can take game-changing decisions soon.
MAUI Blazor is damn production-ready: I'm happy to announce that working with MAUI Blazor was such a pleasure. Although we had some challenges using it, all was handled great and its benefits totally worth its challenges. I'm sure I will use it for my next projects.
I am very happy that I have the chance to be in this team. BTW if this project was successful, one of the reasons was the precise and good architecture and infrastructure of the project that you created.
Reading this page was very interesting for me. Your team is a real hardworking team
Hello, congratulations for this success, I wanted to know how you got the mobile output in this project?
Easy as a pie... With Maui Blazor it's super easy. The project is fully open-source and available on GitHub. You can the source.