Building a Ninja Team for FxLand

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:

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.

DEV Team

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.

Services Subteam

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)

Blazor Subteam

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.

UX Team

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

QA Team

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.

Afshin Team!

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)

Consultants

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.

Lessons Learned

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.

About the author

Mehran Davoudi

A former technology geek! Currently a mentor and software architect, working as a consultant for companies with large scale software development.
Why dvd? Read about me (uɒɹɥəɯ)!

View all posts

1 Comment

  • 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.

Leave a Reply

Your email address will not be published. Required fields are marked *