Tanaka Mutakwa

Ideas for pushing yourself to succeed in your goals and ambitions, building habits that stick and doing great work.

My name is Tanaka Mutakwa. I'm a Software Engineering Leader | Organiser of Tech Leadership | Co-owner at Pahari African Restaurant | Founder of NoDaysOff Lifestyle Brand | Runner | Talks / Podcasts

About / Mission Statement
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter
© 2015 Tanaka Mutakwa.

Tech Leadership Meetup Cape Town

August 19, 2019 By Tanaka Mutakwa Leave a Comment

Along with Benny Ou and Ruberto Paulo, I am excited to share that we will be starting a tech leadership meetup in Cape Town.

The idea is to build a community of longtime, new, and aspiring technology leaders. Our mission is for the community to help each other learn through conversation and sharing of ideas.

We will host a monthly meetup in Cape Town on the last Thursday of every month.

The first event will be hosted at the Prodigy Finance offices on the 29th of August at 6pm.

I am excited to see what this meetup will grow into over time.

Leadership is a learnable skill, however learning about leadership in the technology industry is often left to chance. This often leads to frustration for both leaders and those being led.

Many technology leaders get the job by default. They are the best or most senior technologist and suddenly find themselves leading meetings, negotiating for resources, making strategic decisions, participating in hiring, and a whole range of other mission-critical activities that fall outside of the technical toolbox. The world of leading / managing talented technologists can be messy.

We have many leaders practicing different leadership / management approaches from various companies around us. We can all learn from each other by coming together and sharing our experiences.

We aim to create an open community of people managers and technology leaders to exchange regularly about managing teams, solving difficult organisational topics, discovering new ways of working with the people we are allowed to mentor and all other aspects.

Just like in the core of tech, managing people and teams is never “done” and there is always new things to learn, impulses to follow, old practices to discard or revive. This is the place to help each other and move forward, become more professional and grow for ourselves and for the people and organisations we lead.

The hypothesis being that sharing our experiences will grow us into better leaders which over the long term will make the technology industry a better place for everyone.

You can access our pages below for more details:

Website – http://techleadership.co.za/

Meetup page – https://www.meetup.com/Tech-Leadership-Meetup-Cape-Town/

Filed Under: General Interest

Starting as VP of Engineering at Names & Faces

August 1, 2019 By Tanaka Mutakwa 2 Comments

I’m excited to announce that I will be taking on the VP of Engineering role at Names & Faces starting today.

Names & Faces aims to offer any growing company a simple and fast directory of employees built specifically for that purpose alone.

Names & Faces solves a problem experienced by everyone from the CEO to the intern. How do I get to know the people around me, get context for where they fit in & get in touch when I need to?

I’m joining an exciting startup with a team based in a number of cities across the world – Palo Alto, Cape Town and London.

Names & Faces was one of the startups selected to be part of the Y Combinator Summer 2018 batch of startups. I have followed and admired the Y Combinator program for a long time now, with companies such as AirBnb, Dropbox and Stripe having gone through the same program in their early stages.

About the VP of Engineering role

In my new role I will be expected to be a great manager and team builder.

My job will be to make everyone in the engineering organisation successful by influencing architectural decisions, establishing best practises, setting work cadences and cultural norms and overcoming the issues that get in the way of the team’s success.

I’m looking forward to helping engineers grow and develop their skills. Identifying potential in people, supporting them, seeing them grow and succeed is something I enjoy doing and I find it personally fulfilling.

I’m also looking forward to applying my experience from my working career to help Names & Faces succeed. At the same time I expect to learn and grow both personally and professionally. The constant pursuit of learning being something I value incredibly.

What will be different?

After spending 8.5 years building software in the finance industry (Allan Gray – 4 years and Prodigy Finance – 4.5 years). I’m finally going to be working in a different industry. I’ve learnt a lot of interesting things about the finance world in my career, however I am also glad to move on from some of the complexities that come with building software in the finance world.

At both companies I’ve worked for in the past I built software to support the main business operations of the company. Now I will be building software for clients (other companies) to use. This may seem like a subtle change but I’m sure it will give me a different outlook into how to decide what to build, how to release software and how to scale as the client base grows.

I will still write code, also operating as a software engineer in the team, which is something I enjoy doing and I believe every leader in the technology space should try hold on to as long as they can. My career has mostly been in the web development space and at Names & Faces I will be exposed to building and releasing software for mobile apps too. The technology stack is modern and will be exciting to learn, with all the niceties that come with React, React Native, GraphQL, Typescript and Node.js.

Finally Names & Faces is a remote-first company. Remote-first means working remote is the default. It means making sure your remote employees are as much a part of the team as those in the office. For most of my career I’ve worked in an office with my co-workers. I believe the future of work will be mostly remote for knowledge workers. So I’m looking forward to learning the different ways of working and flexibility working for a remote-first company will bring.

In case you can’t tell, I’m really delighted to be joining the startup world again. The Names & Faces team has already accomplished a lot so far, and I look forward to working with the team to do even more.

I’m still based in Cape Town and I continue to enjoy living in the city.

If you would like to know more about Names & Faces you can watch our demo video below.

Filed Under: General Interest

Leaving Prodigy Finance

July 19, 2019 By Tanaka Mutakwa 1 Comment

I started at Prodigy Finance as a Software Engineer in January 2015.

When I started there were a total of 28 employees across the whole company and we had funded 1875 students in total. Today as I leave there are over 200 employees across the company and we have funded over 14500 students.

It has been an incredible journey to say the least.

When I left Allan Gray to join Prodigy Finance a number of people asked me what I was thinking leaving an established place like Allan Gray and going to a small startup like Prodigy Finance. They assumed I was making a mistake, moving my career backwards.

I responded by telling them that at Prodigy Finance I saw opportunity. The opportunity to join a small company early on and be part of its growth journey.

I had joined Allan Gray when it was already established and I learnt a lot while I was there but it was like being born an adult, everything already in place, constantly wondering what it is like to be young and grow up on your own terms. I wanted to learn how a small company grows and becomes an established company. As I leave Prodigy Finance today I am certain this goal has been fulfilled.

Now, my path is heading in a different direction. I take with me many fond memories, many wonderful new friends and acquaintances, and a wealth of experiences. I have grown through working on projects across the company’s product workflow (onboarding, credit risk, verification, and disbursements) and playing multiple roles (full stack software engineer and being a line manager for software engineers).

I’m particularly grateful to have benefited from learning from others, watching others grow, and helping others grow. I also learned that these are not mutually exclusive options!

Where to now?

An opportunity landed on my doorstep, taking me back to the startup world, which means I’m off to start a new cycle again. I feel excited about my new opportunity (more on that to come in a future blog post!) but also excited to watch Prodigy Finance continue to grow, evolve, and have a positive impact on the world.

Filed Under: General Interest

Thirty: The journey continues

March 28, 2019 By Tanaka Mutakwa 7 Comments

I remember the day clearly, 4th of February 2008, my student visa finally came out after a long wait of over two months. A few hours after collecting the visa I was on a flight to Johannesburg, South Africa. My first time outside of Zimbabwe. I was already late for university orientation week so I had to move quickly. My mother cried at the airport as the whole family said goodbye. Just like that my journey into adulting started.

Before we get further into that story let us start back at the beginning.

I was born at Mater Dei hospital in Bulawayo, Zimbabwe on the 28 of March 1989. An introvert by nature, I grew up very shy and quiet. My school teachers always gave feedback to my parents that I needed to speak more in class. To this day I still find myself on the quieter side. I prefer to listen and only speak when I have something of value to add to a conversation.

My parents worked hard for our family to have a good life. They both come from humble backgrounds. Through the foundation they set for me I have had opportunities and experiences they never had when they were younger. They both never went to university as an example.

My mom was born in Mbare, a high density suburb (township) in the main capital Harare and grew up there. She had to drop out of school after her Ordinary Levels at the age of 17 due to economic issues at home. Fortunately she managed to secure a job at a bank immediately after as she was intelligent, diligent and as a result was doing academically well in school. I believe I get most of my logical reasoning from her.

My dad was born in Gutu, a rural district in Masvingo Province, southern Zimbabwe. At the young age of 20 he joined the army so he could help fight in the liberation struggle for Zimbabwe’s independence. I believe I get most of my discipline and ambition from him.

A shared lesson I have learnt from both my parents is to work hard and trust that with time it will always pay off. Despite their humble backgrounds, my parents have always been hard working. You don’t just wake up and find yourself further up the social class hierarchy.

They paid for our education from nursery school up to university. They paid for our university fees while Zimbabwe’s economy was crashing, that was tough. They took us on holidays across Zimbabwe when we were young. They ran a lot of different side businesses while they kept their full time jobs.

From the top of my head I can remember my parents running small grocery shops, bottle (liquor) stores, they had a freezit making machine and supplied wholesale stores, they had a mealie meal grinding machine and supplied wholesale stores and they also ran a gift shop when we lived in Marondera, Zimbabwe. I’m sure there are a few more I have not mentioned here. Eventually they went into business full time running a small bed and breakfast lodge off one of Zimbabwe’s national highways.

As a side-effect I was exposed to entrepreneurship from a very young age by watching and being involved in the side businesses my parents were running. As an example, when my parents had the freezit making machine I used to collect a carton of freezits after school and I would sit outside our front gate with a cooler box and sell freezits to people walking past. I would get to keep the earnings and that was my motivation. I was only 9 – 10 years old at that time but I was learning the fundamentals of entrepreneurship.

Freezits

It is not surprising that in my 20s I went on to do the same and try start my own side businesses while I kept my full time job. In my early 20s I started an educational technology project with friends, there were many useful lessons I learnt there that still apply today. I also started a lifestyle brand, it grew and I sold some merchandise. With another friend at some point we bought cars and put them on the Uber platform and hired drivers, we had 3 cars before we eventually left that business. I also just remembered that while I was a student at the University of Cape Town I ran our Kopano residence’s tuck-shop along with four other friends.

Now its gone full circle and I am a partner at our family owned African Cuisine restaurant along with my parents. 

Always keep learning, looking out for opportunities and never limit yourself to doing one thing.

Wearing one of my NoDaysOff lifestyle brand t-shirts.

So now back to that flight I made to Johannesburg, South Africa in February 2008. My older sister met me at OR Tambo International airport on arrival and later I proceeded to connect to Cape Town so I could go start my student life at the University of Cape Town.

I did not know any other 1st year students at the university when I arrived. I had one other friend from my high school who was also coming to the University of Cape Town that year but his student visa was delayed so he was still stuck in Zimbabwe. Fortunately for me I had been in boarding school through my studies in high school. That taught me a lot about independence, responsibility and discipline.

From the time I started studying for my Computer Science degree at the University of Cape Town I knew how big an opportunity it was for me to be there. My parents had worked hard to get me there during the tough economic conditions in Zimbabwe. I had to make sure I succeeded. I did not have many other options.

I had fun in university, built many solid friendships, but I also knew the importance of why I was there so I ensured my academics were always in order. I never failed any exam I wrote. I was on the Dean’s Merit List for every year I was at the university.

When I graduated in 2010 it made my parents really proud. What made them much happier was the day I secured my first job at Allan Gray as a foreigner in South Africa after graduating. I remember the day I got the job, the phone call back home telling my parents I had signed the contract. I definitely also remember the party after that celebrating with my university friends, good times!

When I was much younger I realised if I worked harder than most people and put extra effort in everything I do, I would give myself a better chance at succeeding at most things. This has been a mantra I have carried most of my life.

2006: Receiving the award for the best Ordinary Level results at Kyle College.
2010: University of Cape Town graduation day.

Remember I said that it was my first time out of Zimbabwe when I flew into South Africa for university. Over my 20s, since I started working, I have managed to travel to other countries – England, Wales, Australia, Spain, Zambia, Mozambique, Swaziland, Lesotho, Namibia, Botswana, and Tanzania. Some of these have been holidays and some work opportunities. What I am certain of is all this has been possible through embracing opportunities, working hard and trusting the results will pay off over time.

The reason I have got as far as I have is through the opportunities my parents opened up for me. I sometimes think of other people with potential who remain stuck because they never have the same opportunities as us. Maybe one day I will be able to contribute to increasing opportunity for others. This is a good goal for the next decade I am entering and it aligns well with my life mission statement.

I mentioned a lot about lessons I’ve learnt from my parents earlier. Probably the most important lesson I learnt from them is to have fun and be happy in life. Optimising for happiness is important. Do things that make you happy. Have a positive mindset. Spend time with people that you are happy to be around. I believe starting from a happy place is the root of most success. I have been privileged to have some of the best friendships as I have gone through this journey of life.

There have been some great times in my journey so far, there have also been some challenging times. All these experiences have built me up into who I am today. I am thirty years old today. I am looking forward to the next decade and to continue inspiring people to be better versions of themselves. This is just the beginning!

Writing this has in many ways felt like writing a tribute to my parents. I know they are proud of how far I have come and I hope to continue making them proud.

Now let me go and enjoy some 30th birthday wine.

The General (28 March 2019)

Filed Under: General Interest

Onboarding for software engineers

February 12, 2019 By Tanaka Mutakwa Leave a Comment

On Friday 8th of February 2019 I delivered a talk at the RubyFuza Conference in Cape Town. Rubyfuza is the longest run Ruby conference in South Africa. The conference is mostly attended by software engineers. My talk was about “Onboarding for software engineers”. I have decided to write up the content I shared into an article. I am hoping it can be shared wider and people who did not attend the conference can also gain some value from it. Enjoy!

A bit of background about myself: I have been working in the software industry for just over 8 years and in that time I have worked for 2 companies. Post  university I started working at Allan Gray which is an investment management company. At Allan Gray I worked as a software engineer in their web team using C# and ASP.NET technologies. After 4 years at Allan Gray I decided to move on, and so I discovered Prodigy Finance where I have been working for just over 4 years now. Prodigy Finance provides borderless postgraduate student loans to international students to study at leading universities. My current role at Prodigy Finance is Development Line Manager in the technology team. My role is split between operating as a software engineer in a team and managing 5 other software engineers who report into me, while I help them grow in their careers, set goals and ensure they have what they need to succeed at the company.

There has probably never been a better time to be a software engineer than right now. Most businesses and organisations across the world make use of technology for their day to day operations. For some of these companies their whole product / business is technology. Added to this is the fact that technology keeps advancing (new technologies and frameworks get released often). Businesses need to keep their technology up to date to remain relevant. Every person with internet access (which eventually will be the whole world) uses lots of apps and websites every day. All this has resulted in a massive demand for people with the skills to build software – the software engineers.

The demand and supply curve for software engineers is not balancing. As it stands demand is much higher than supply. A truly valuable developer is one of the hardest things to find for companies. If you are involved in recruitment you’ll know what I am talking about, the competition is fierce and candidates are constantly being baited from one company to another with promises of free gadgets, gym memberships, equity, remote contract work with 3 months off every year, along with some of the best salaries in the world.

Companies spend a lot of time in the hiring efforts for software engineers. If we step back and consider the reason you want to hire a software engineer at your company – ideally once you hire the person you want them to provide value at your company. You want a new software engineer to be productive as soon as possible and to be productive for the long term.

There’s nothing worse than feeling you are wasting your time. Imagine putting all your time, energy, and resources into hiring someone and then they never become productive or worse they quit within a few months. The cost of replacing a recently hired employee is 30-50% of their salary. Companies lose 25% of their employees in the first year, and all too often due to faulty employee onboarding processes. It is a waste of time, money and it is bad for your company’s reputation if an employee leaves early on. Skilled software engineers are so high in demand that they can afford the luxury of switching jobs as often as they like, which takes the importance of onboarding and retention to a whole new level.

When I looked at what would make great onboarding for software engineers I thought about what traits I believe make a good all-round software engineer. I then thought about how I could help someone develop those traits. I came up with 3 key areas to focus on once a new software engineer joins a company:

  1. Tools / Technologies
  2. Domain Knowledge
  3. Soft Skills

I will drill down into each of these 3 areas, explain what they are and how to provide the ideal training / environment for your new software engineer to succeed in them.

Tools / Technologies

When looking at tools / technologies I am referring to the following:

  1. What programming languages do you use at your company? Examples could be Ruby, C# or Python and many more.
  2. What frameworks do you use at your company? Examples could be Ruby on Rails, Django or ASP.NET and many more.
  3. How is the architecture of your systems structured? Do you have one monolith application or is your system split into multiple services. If your system is split into multiple services how do they communicate with each other?
  4. What source control tool do you use and what are your workflows when using that tool?
  5. How is your infrastructure set up? Where is your code hosted? Is this all done in an automated way or is it manual?
  6. What build and continuous integration tools do you use? Where does code go to once a developer pushes it up? What runs the unit and integration tests? How does the code eventually get to production?
  7. What coding standards and preferred practices do you have in place at your company? A software engineer may join your company having used similar technologies at a previous company but they will still need to understand your coding standards and preferred practices within those technologies.

So what are some of the things you can do to ensure a new software engineer gets up to speed with the things listed above?

Make real changes to the codebase

In the early days of a software engineer joining your company give them a chance to make a real change to the codebase that gets pushed to production. Even if the change is really small such as a text change to the view it will still be valuable. Making any change to the production codebase means the new software engineer has to checkout the codebase (exposing them to the source control tools), make the change and run the tests (exposing them to the structure of the codebase and how to run the tests), push up the code and run the tests on a build server (exposing them to the build and continuous integration tools) and finally deploy the change to production (exposing them to how changes get shipped to production). Any small change to the codebase allows a new software engineer to understand the full workflow of how something comes from being a requirement to being live on production. So give your new software engineer a chance to make a production change as early as possible.

Pair Programming

In the early days of a software engineer joining your company they should pair program on most tasks with a software engineer who has been at the company for much longer. Pair programming will allow the new software engineer to learn about your company’s systems as they will have someone experienced to answer any questions they have and show them how things work. Pair programming will also allow the new software engineer to build confidence as they will get a sense of involvement in the tasks they will be working on. Ideally you want the new software engineer to pair program with different team members so they get to know all their colleagues and also learn from a diverse set of people. The key learning here is do not isolate a new software engineer and leave them to solve problems by themselves as it can be frustrating.

Onboarding documentation

If your company has any onboarding documentation that could be useful to a new starter you want to share that documentation with them in the early days. It may be documentation that was specifically prepared to help new starters get up to speed, or it can be general documentation that is also useful to existing team members (such as current architecture diagrams). The important thing here is that any useful documentation is shared early on after someone has joined so they can consume it when they are eager to learn and get up to speed. An important thing to remember about any documentation is that it must be kept up to date else it may give outdated information. If your new software engineers identify any missing or outdated information in your documentation use it as an opportunity to update the documentation before the next person starts.

Learning resources list / Training Budget

A new software engineer may join your company having used different tools / technologies at their previous companies. You will need to help them with extra learning material for them to get up to speed with your tools / technologies. Your company should keep a list of known good learning resources a new software engineer can use to get up speed with your company’s tools / technologies. These learning resources could be a list of books to read, or online tutorials to take on. People have different preferred learning styles so find out from your new software engineer how they prefer to learn and point them towards the correct resources. Ideally your company has a training budget for its employees and allows the software engineer to spend some of that training budget to buy the books or online tutorials. Invest in training your employees and it will pay off when they become productive. An example of this in practice is when a new software engineer joins our company and has no Ruby or Ruby on Rails experience if they prefer books I normally recommend the Programming Ruby (commonly known as The PickAxe) book and the Agile Web Development with Rails book. If they prefer online video tutorials there are tools such as Pluralsite and LinkedIn Learning that also have good resources.

Domain Knowledge

If you successfully onboard a new software engineer on the tools / technologies you will have an engineer who is confident they understand all your technologies and can write code using the programming languages at your company. However software engineering is not just about writing code, it is more involved than that. The code that a software engineer writes must align with a problem their company is trying to solve and actually solve that problem once it is deployed to production. So every software engineer needs to have a good understanding of the business domain they are working in. When a new software engineer joins your company you need to educate them on what your company does, why your company exists, and what your company goals are.

Induction training

Educating your new software engineer about the business should happen through some sort of business induction training. How this will happen in practice will differ with each company depending on company size, complexity of the business domain and which people in your company hold most of the knowledge. In some companies it may be enough for the new software engineer to go through the business domain with another more experience engineer who understands it well or the team product owner who may have more knowledge about how the business operates. In slightly bigger companies you can have more formalised induction training in place where each company department hosts a session and explains how they work and what their purpose is. The goal here is to ensure your new software engineer has a full understanding of the business as this will help them build the correct software, possibly suggest ideas that will help the business grow, or question requirements when they are asked to build features. You can only do all these things if you have a good understanding of the business.

Soft Skills

If you have successfully onboarded a software engineer on tools / technologies and domain knowledge you are almost done. You will be left with one more area. In a majority of companies these days people work in teams not in isolation. When a new software engineer joins your company they are likely to be placed in a team where they will be working with other engineers, quality assurance engineers, a product owner, and perhaps a scrum master if you are applying Scrum. Further to that your new software engineer is definitely going to interact with other employees from other company departments or the direct users of the software they build. This means every engineer needs to communicate and interact with other humans as they get their work done. This communication and interaction with other people is normally classified as soft skills. The last pillar of onboarding a new software engineer properly is to ensure you help them with their soft skills. This is usually the area most neglected by people in the software industry but arguably it is the most important. So how do you do help a new software engineer develop their soft skills?

Let them lead team reviews / company wide demos

Once a new software engineer has settled down at your company give them the opportunity to present the work they have been doing to other people. This can happen in the regular team review sessions or a company wide demo of the work their team has been doing. Allowing someone to present their work gives them the opportunity to grow their presentation skills and communication skills. A key skill every software engineer should master is being able to explain a feature they have built to a non-technical person without including any technical jargon in the explanation. Allowing someone to present their work also gives them the opportunity to show they understand the business and why they built the work they are presenting. Finally giving someone an opportunity to present to a wider business audience gives them visibility across the company, people will now know who they are and they can approach them later to chat about the work they presented.

Team building

To help a new software engineer settle into your company and build relationships with their new colleagues you must organise some team building activities. Arrange activities that take the team outside of the normal day to day work grind. The idea here is that people get to know each other outside of just solving work problems all the time. Your team can unplug, relax and chat about their lives and general interests outside of work. The actual team building activity is up to you and your team. It could be just post work social dinner / drinks, a braai or an actual booked fun activity such as go-karting. Whatever activity you choose the idea is to allow people some time off work to get to know each other and build relationships, this will likely translate to them working better together. For a new software engineer it allows them to get to know their new team members.

Pair programming

I’ve mentioned pair programming again here even though I listed it earlier in the tools / technologies section. I believe pair programming also helps one grow their soft skills as by its nature pair programming involves communicating and interacting with another software engineer. Coming up with a solution to a problem together and aligning with another engineer despite differing starting opinions helps cultivate good team relationships.

Workplace culture

Every company has a workplace culture they try to live by. I have listed this here as it is important for new software engineers to have good examples of how to act / behave according to your culture. In the early days a new software engineer will be watching and learning from existing employees. How you behave as existing employees influences a new software engineer’s future behavior. So all existing employees must be great examples of the culture you have set for your company.

At this point you will have successfully onboarded a new software engineer with tools / technologies, domain knowledge and soft skills. You have given them a big chance to bring value to your company and be productive as soon as possible and for the long term.

In summary the goal is for your new software engineer to write code, learn about the company, and get to know their colleagues.

I joined Prodigy Finance at the beginning of 2015. At the time there were just 4 other software engineers in the team. Now the engineering team size is approaching 50. The principles and practices I have shared above are things we have tried and tested as we have grown the team and I have seen them work for us. I’m hoping they can add value to your onboarding process.

Extra things to note:

  • Senior engineers need to be onboarded too. Onboarding well does not only apply to junior engineers.
  • The average employee takes upwards of six months to become fully competent in their role. Don’t overwhelm people. Check in early and often. Set the right expectations when someone new starts at your company.
  • Every person has their own learning styles so onboarding practices will be slightly different for each individual but the principles will remain the same.

Filed Under: General Interest

  • « Previous Page
  • 1
  • 2
  • 3
  • 4
  • …
  • 12
  • Next Page »