Our Journey, Project Management, Share Experience

Our Journey on Creating Coleaves.ai From Zero

A story on Creating Open Source Machine Learning Platform From Zero by Three ‘NOOBS’

Haryo Akbarianto Wibowo

--

A few weeks ago, I launched the coleaves.ai website, which was the result of implementing our idea. We did this project for about 3 months. In this project, I act as a manager, where apart from managing project management for the team, I also need to decide what features need to be implemented.

We did this project with only three of us. To be honest, the three of us are not too familiar with how to do the project. I also have no experience on becoming a manager to create a web app. Other than that, My friend is also a newbie in computer science stuff, and he only takes online courses without experience. I also haven’t created a website in a while. Not to mention the problem of keeping the project to run. So, how did we complete this project?

In this article, I will share the process of how to create the website from zero. We will not dive into the implementation, but we will focus on the process. Beware that the steps are not the best practice for doing a project because of our limited environment. Since our team only contains three members, I need to decide the appropriate steps to do the project. These steps were obtained from the insights from chatting with people who know about products and startups. Apart from that, I was also inspired by several management and startup books that I have read.

Starts From Why

Figure of Golden Circle

In my opinion, this step is the foundation of our project. We need to find ‘WHY’ to be our foundation for this project. In the book ‘Starts With Why,’ written by Simon Sinek, in determining our actions and making it clear, he gives ‘Golden Circle’ concept, where we need to determine why (purposes), followed by formulating how (the process), and what (product).

So, first of all, we determine what the purpose of creating this website is. We start with the problems that we experienced. One of them is the sources about AI in Indonesia are scattered, and there is no centralized place for open source sharing. Based on the problems that we state, we were going to solve it.

From here, we formulate our mission. It is to provide a comfortable place to encourage sharing and collaboration in ML technology. This mission will be our foundation for carrying out this project.

After that, we formulate what we need to do to achieve the purposes we set (How). One of them is the need for a place or channel to deliver the purpose. Creating a web app is the ‘WHAT’ to realize the ‘HOW.’ It was from this formulation that we decided to carry out this project.

Define The Goal

From Pixabay

We already know that we want to create a website. Then, where do we start?

We start by making a goal. What is the goal of creating this website in a structured way? To define a goal, we use the SMART goal, a popular framework to define a goal. You can read my last article to know what a SMART goal is.

Here is the goal that we create:

S (Specific): we want to make this website with validated values align with the implemented features with features that is impactful according to the problems.

M (Measurable): We say that our project has achieved the goal if all the planned features are implemented

A (Achievable): Yes, we have capability to create it.

R (Relevant): After we create the website we can achieve other things to channel the ‘WHY’.

T (Timebound): We set up the deadline

NOTE: Do not be confused if you find our SMART goal is different with what you know. There are several definitions of SMART goal. In this article, I use the definition that I have written in my previous article.

State The Value Proposition Canvas as a Hypothesis

Value Proposition Canvas

We are confident that we want to make this website. The question is, are you sure that other people will use this website? Are you sure other people need our website? Are you sure your problems are the same as other people’s problems? What is the user? These are the questions that haunt us in the early days.

Maybe we could experience unfortunate things like the example below:

Imagine when you open a restaurant in your area. You sell steak because you love steak. You imagine that every person in your area loves steak. Unfortunately, It doesn’t go well. It turns out that the people in your area are all vegan.

So, to prevent that bad experience, we need to know our targeted customer’s needs. We can formulate the value and user we want to target into Value Proposition Canvas (VPC). In VPC, we write our hypothesis about the user segment with the task related to what we create and the pains and gains the user might have. After that, we map the values that we hypothesize, which acts as a pain reliever or gain creator.

We wrote down several pains and gains our targeted user may have. Then we determine the values that can relieve the pain or create the gain. For example, we decide that we can provide value on creating a centralized place [Pain Reliever] to the Machine Learning (ML) industry practitioner [Customer Segment] that they want to share open-source ML in Indonesia [Customer Jobs]. We hypothesize that these people are hard to look for open source in Indonesia, which is scattered [PAIN].

After we formulate the value proposition canvas, we validate the hypotheses that are stated in it. Inspired by Steve Blank, an entrepreneur, we validated our hypotheses by doing “Get outside the building.” We asked many potential users according to the user segment via call and asked them several questions that need to be validated. We interview them by the call because, by the time the author doing it, there was a Covid-19 pandemic.

Validation Process

Photo by LinkedIn Sales Navigator on Unsplash

We got some insights that we thought were correct (the hypothesis on our canvas), but not all of them were correct. We ask some acquaintances and random people on Linkedin who fit our customer segment to be interviewed. We ask several questions related to the pain, gain, job, and value that we have defined.

We found out that our customer segment hypothesis less precise and less specific. Some ML Industry practitioners do not want to contribute a source to the website and prefer just to enjoy our content as a reader for several reasons. We conclude that the segment “ML Industry Practitioner” does not accurately right to be one of our segment, which we need to be more specific to determine it.

Nevertheless, we found some users who were right on target. When we asked those who were right on target, they were enthusiastic about the website, and they give us some feedback. From here, we are slightly confident that what we make has value for them.

In the end, we validated nine people. We stopped validating due to the time limit.

Role Assignment

Photo by Campaign Creators on Unsplash

We decided to split the role based on the capability of each person according to their experiences. For example, since I’m not quite good at front-end, I decided to put my self as a backend developer. I gave the role to design and build the website’s view (front-end) to my friend since he has a better ‘design sense’ than me. He also has studied front-end from an online course.

We split the role into manager, back end engineer, UI/UX designer, and front end engineer. Each person may have more than one role. For example, I act as a manager and back end engineer. We make sure to make the job description clear for each person. On assigning the role, we also pay attention to the commitment time. For example, my friend only wants to commit about 10 hours per week, so we give him the tasks regarding the commitment time.

As I write above, we are still not familiar with the technology we will use. Therefore, we did some training by implementing some basic and straightforward features that must be implemented from the website. One of the features is displaying all sources. We did this while also doing the validation step.

Pre-Implementation Planning

Sprint Planning From Wikimedia

We created a list of use cases that we will implement; we call it ‘product backlog.’ In the beginning, we tried to list several use cases that align with our product’s goal. We write the use cases in the ‘user story’ format. For example:

As a user, I can log in to the site so that I can do any user privileges provided by the site.”

After we discussed a lot about the time deadline, we decided to do three iterations + an iteration to hone our engineering skills. Each iteration takes two weeks (a week contains 15 hours of commitment time). We call each iteration ‘sprint’. We retrieve multiple stories from the backlog in every sprint and put it into the to do list to be done in the sprint (which we call it ‘sprint backlog’). We choose the story based on the priority. We calculate it by using the RICE prioritization framework.

When determining what features need to be implemented, we have a principle not to think about some complicated features. Based on my experience, too much time consumed on thinking a lot of features will hinder the project’s progress. So, we decided to ‘start from small.’ Apart from that, we also take in mind a quote that comes from Reid Hoffmann (Founder of Linkedin) that said,

“If you aren’t embarrassed by the first version of your product, you shipped too late.”

Fortunately, at the end of the time, we are on time to complete the project.

For your information, we did the sprint when we do the validation process. At the end of a sprint, we recalculated the new story’s prioritization that came from the validation process.

Implementation

Photo by Emile Perron on Unsplash

On the implementation step, we implement what was written in the story. We split the story into a back-end and front-end task. To decide which technology to use, We choose a web framework that is easy to use and can do fast-iteration. In the end, we use Django as a back-end and React as the front-end framework.

We use GitHub to do code versioning. We also track each issue that we found there. We do branching on the repository for production and development. We also created several unit tests and automated it by creating a Continuous Integration (CI). We also utilize Continuous Deployment (CD), so we can make it easier to deploy it into production. We use Git Action to do CI and CD. We use Docker to ship our code into production, which will be composed with docker-compose.

Retrospective and Evaluation

From Blue Diamond Gallery with CC-SA3

At the end of each sprint, we do a retrospective to see what went wrong. We state the problems that we faced in the sprint and discuss the solution we need. By finding what went wrong for each sprint, we can aim to become better in the next sprint.

We have a principle that we will not blame each other for the mistakes. We encourage each other to move forward and learn from the mistake. As I stated above, we are still a newbie, and we expect that there will be some mistakes popped from it. Therefore, rather than blame the environment (e.g., our skills and technology), we’d rather find solutions.

There are several problems that we face here. For example, in the first sprint, I thought that the feature that I imagined could be communicated to others without the process flowchart. It turned out that what my friend implemented a flow that was different from what I imagined. I underestimate the need for the process flowchart’s documentation. After reflecting on my retrospective mistake, I created a flowchart to describe the flow of each feature. Fortunately, it didn’t happen again in the following sprints.

We learned and reflected on a lot of mistakes in this step. We were happy to learn from these mistakes, and it made us better to do the project.

Test

Photo by Gabriel Barletta on Unsplash

After we implemented all of the features in 3 sprints, we test each feature we implement to find the bugs. In this step, we acted as a Quality Assurance (QA). We list several scenarios for each feature and test them to see whether there is a bug or not. In the end, we found several bugs and fixed them immediately. We did this in a week.

After that, we do a closed test, where we spread our website to several people. From here, we gain several feedbacks. We choose several feedbacks that we can implement immediately in a week. Finally, we fix several critical bugs and missing features in our website.

Planning on Pre-Release

From Thenounproject

Before we release it, we set several metrics to make our website quantifiable to measure its quality. One of them is cohort matric, which I have learned from the book ‘Lean Startup’ by Eric Reis. We track the visitor, daily logged user, and the user activity count. We also track what categories that most people see and search as an analytic. In the future, we will use these data to enhance the User Experience (UX) of the website.

Release

From knowyourmeme.com

Finally, we release it! We publish it into several Machine Learning communities. Currently, we are watching the website performance and planning on what we should build for the website

So that’s it for our journey on building our website from scratch. Of course, this is not the end of the trip. Even after the website is launched, we still want to continue developing the website. In the future, we plan to add more features according to the findings we get from our running website.

In the future, we will use the data that we gather as the decision-maker on what we should prioritize to build.

Conclusion

I have shared our journey on creating coleaves.ai from the start. Several challenges had surfaced when we did the project. We were a newbie and didn’t have the experience to do the project. We made a ‘YOLO’ move and solved several problems that come from it. For me, this is where the fun is, where we overcame our problems together as a team. What makes me happy was that we created good memories, and the project ends up leaving a good impression on each of us.

Finally, I want to emphasize these things that I struggled to deal it in the past. As you know that the process of the project is a bit messy. For example, We do the validation where we also implement the feature; we do not do usability testing and any other things that you can easily mention. We planned it very long, especially about implementing some complicated and cool features. Too bad that the plan was not executed very well and ended with failure.

With experience and reading some books, I finally found the medicine for these problems. That is ‘STARTS FROM SMALL.’ Start by doing a small thing, implementing features that are easier to implement, yet have high impact and align to the chosen value. Do not take anything that might be the best practice framework for everyone else for granted. It may not suit you, but you can adapt it to your situation. To sum it up, do not overthink and start from small, or you won’t start your things.

Final Words

Photo by Borna Bevanda on Unsplash

I think that’s all about our journey. I hope that my article is useful for you. If you want to visit our website, click this:

You can also follow our Twitter, where we also give information about Machine Learning (ML), especially about open source ML.

https://twitter.com/ColeavesAI

Thank you :)

Source : Pixabay

--

--

Haryo Akbarianto Wibowo

Mad AI Enthusiast. I write mostly about Artificial Intelligence and Self Development. I also love to read Engineering, Psychology and Startup. Love to share!