It seems like you are using an ad blocker. To enhance your experience and support our website, please consider:

  1. Signing in to disable ads on our site.
  2. Sign up if you don't have an account yet.
  3. Or, disable your ad blocker by doing this:
    • Click on the ad blocker icon in your browser's toolbar.
    • Select "Pause on this site" or a similar option for lancecourse.com.

Developer and project management: something you need to know

My experience with a successful business online


Hi, six months ago(from June 2017) I disappeared from the surface of the web to remain silent until February 2018. The truth is that I got this job of building a multi-level marketing network. It's a website that allows people to join its community with GHS50. After registration, it runs a few calculations and sends some monies to two or more members. A simple micro-financing system. All this is done automatically.

This involves a lot of things, including :

  • collecting funds from people's mobile money wallets,
  • distributing money into the same wallets,
  • using SMS alerts,
  • working with binary trees,
  • testing in strange contexts,
  • and more, dealing with real money.

Such project involves a lot of attention and care. At several times, I found myself marveled by how software development can be complex. Software development goes beyond code or even computers. Computer science is a tooling to solving real problems. And real problems are many and multi-form. They vary from one context to another.

Once again in my career as a developer, I have come to understand that solving real problems involve a lot of disciplines. As a developer, you need to broaden your knowledge in various fields that may seem unrelated to computing.

It was also the opportunity for me to realize that I was not good enough as I thought. The need to know more increased. Plus, the need to know the real knowledge became evident to me. I understand that 60, 70, 80, or even 90+ years of life under this Sun are not enough to help us dig more the vast opportunity for knowledge computer science has to give us. But, let's try the little we can.

Aside from the philosophy of the business, there is a lot we can learn out of this experience as a developer or as a project manager. I have collected a few techniques, and habits I have been able to learn or discover during the execution of the project. I am going to share them with you. This is to show you how important they can be in a serious project.

Project management

Either we like it or not every website we build is a project. Thus, it requires the same attention as any big or small project different from websites.

I was lucky to be under the management of one great man, Titus Tagoe who supervised the project. I would go for another project with him at any time. The beauty of the man is that he is not a computer scientist, no computer/programming background. Think about it...

The concretization of the idea took us months. Since the project's mission statement wasn't clear. I was told, Ahmed, we need to build an MLM network which works like so and so network. I had to come up with the idea of automation to avoid human errors and misbehaviors when it comes to money management.

Designing and coding were going along every time we agree on something. The secret that helps us at that stage was the constant meetings we had. We use to meet at least three times a week. Sometimes we meet to talk other subjects or even about other networks. Through that we learned how dialog is very powerful is project management.

Aside from that, our behavior towards ourselves was key. I am the youngest person in the whole team of seven people. Others are above 35, and some are more than 50. Respect was at the center of our discussions. Patience was our first rule, it allows us to accept others.

People are the ones who create and maintain projects. It's very important to focus on people than the code or the project. Happy people, happy projects. Fail people, and I promise you, your project will never be born.

Another strange thing here is that we did not set a specific initial budget. We only planned the price for the domain name, the hosting package, an SSL certificate, SMS bundles. The least technologies required to run the site. No salary was set for anyone. Most of the cost went on ourselves. This sounds wrong in a normal situation. But, what saved us? It was the love and determination each one of us had. Mr. Titus was doing all his best to assist us in our daily needs. That gave us the impression of not lacking anything. I loved that.

To summarize this, let's look at the key points of this success:

  • Websites you build are projects like any other
  • Patience and perseverance are keys
  • Respect for your team members
  • Put people first, and project second
  • Make sure you have a clear idea of your mission
  • Project cost is to support the team members, thus, aim at their satisfaction

Experience with technology and programming

I would not focus only on my experience with project management. Let me put in some candies and coke for ourselves. Here are few things I learned and re-learned, or even discovered:

1. Binary trees

The technology behind mycrowdsourcing groups people in a well-known data structure: Binary Search Tree.

Since each member is required to introduce two people to the system, we had no better option than going for that. Plus, the system considers how many people are mounted under everyone, thus it builds a pyramid.

I have had the opportunity to dig many possibilities with that data structure in PHP. That data model is very complex and has no limit on how to could become. Every member is given a unique code which is used to link the nodes of the tree. This made my search easy. I can search up or down without any problem.

2. Display binary tree with HTML and CSS

This sounds strange but it's a great concern. Visualizing a binary tree using HTML and CSS can be bizarre. Imagine a moment you have a node with two branches and two leaves. To visualize that, you could write this:

<ul>
    <li>root
        <ul>
            <li>child 1</li>
            <li>child 2</li>
        </ul>
    </li>
</ul>

With a little CSS, you can style them to look like a tree. But when each child can have other children it becomes complicated. It becomes recursive. So I found this little script that saved my day.

3. Recursion

The frontend part of the website is handled by twig and the PHP part is powered by Slim framework. This means I can't use PHP in my templates. I have to send a signal, actually a bulk of data, which is now used and traversed. At that point too, twig is something else. I was lucky as well I found this script and it saved me another day.

Recursion is a phenomenon you can't avoid when working with BTS. Depending on the programming language you are using, you need to learn how to do it.

When you have a procedure that needs itself within itself to run its child processes, you are dealing with recursion. An example is when you want to loop through a family tree. From the first ancestor, we would like to know how many descendants does he have. But at each descendence, we would also like to know how many descendences does he also have, and so on. We go down to the last child.

In mycrowdsourcing, I have a method called recycle(). This method is in charge of placing people at the right place. It also checks their stage and makes the payments. The method must do that everytime a new node is created. Basically, every time a new member joins. When a new node is created, it belongs to the first stage. When 14 nodes are added under that node(a full tree is built), it's automatically moved to the next stage. Once in the next stage, we will count the people of that stage who belong to the same tree. When another node at that stage needs to move to next we do the same thing until stage 5.

Have a look at how it looks like:

public function recycle(Client $root, $rootStage)
{

    // A lot goes on here.

      if ( self::NUMBER_OF_PEOPLE_PER_TREE + 1 == $counter && $rootStage < self::NUMBER_OF_STAGES) {
          // The network is full at that stage too, so we soft-break
          // get the root at that stage
          $recycleRoot = $root;

          // update his stage
          $recycleRootNewStage = $this->stageUp($recycleRoot->id);

          // as far as they haven't reached stage self::NUMBER_OF_STAGES we do this

          // start network recycling
          $this->recycle($recycleRoot, $recycleRootNewStage);
      }

}

You can notice the function calling itself within itself. That's an example of an implementation of a recursion in PHP.

4. Mobile Money systems

Due to lack of electronic payment system in Africa, telecom networks have developed a payment service called Mobile Money.

Every number is linked to a virtual wallet which is centralized and controlled by the network. Through USSD commands the network can operate on that account. The wallet can credit, debited, transfer from wallet to wallet. You can even buy airtime with the wallet.

The system is adopted by almost everyone, including banks, government institutions, and many SMEs. This is a good solution if we want to reach as many people as possible. But, we needed an API if we want to interact programmatically with the system. That would have required us to go to all networks one by one. Thank God Hubtel has already done that job for us. So we went for their API. They also include airtime and SMS APIs. They have all we need.

I have been able to understand how the whole system is built at Hubtel side and the network operator side as well. I am actually planning to have the APIs directly from the networks and push my experience.

Financial and electronic transactions laws in Ghana


Likewise many countries they are laws that regulate all these systems. It's important to remain compliant with them.

I don't know all but the idea behind it is that anyone involved in such business must be transparent and honest with his users. You users must understand perfectly what you offer and what they are paying for.

You need to register your business and get regulated by the government.

Your technology must be secured. You must be able to have a kind of rescue plan in case you face a problem. How do you refund the client? What are your services terms and policies... simply, transparency is governments big concern.

As developers, we are by default, default project managers. I call ourselves default project managers because, either we like it or not we plan. We are default because our plans usually stop at a very low level of a project management. This is a new era for websites. They represent complete businesses today. It's, thus, crucial to put in all the considerations required to build sustainable businesses.

My experience has taught me that I need to continue learning and exploring. Software development goes beyond code and diagrams. Stay open-minded and persevere in all tasks.

As a bracket, Mycrowdsourcing made up to 500 members in less than 3 months after the launch on 15th of October 2017.

Thanks for reading this long report. Help me share it with other folks.


Cover image credit to pixabay.com