Photo by Kelly Sikkema on Unsplash

In my previous post, I reviewed feature flagging and using Tailwind CSS. In this post, I continue my review of engineering management.

Measuring Cycle Time


Changing software architecture by changing teams.

Many years after Melvin Conway published “How Do Committees Invent?”, he summarised his 45 paragraphs thesis into one sentence:

Any organization that designs a system (defined more broadly here than just information systems) will inevitably produce a design whose structure is a copy of the organization’s communication structure. — Conway’s Law

Conway’s Law suggested that the software architecture eventually copies the communication structure.

I’ve seen a common example of frontend and backend teams.

This is your desired architecture.


Photo by Kelly Sikkema on Unsplash

As a Tech Lead in Mindvalley, I had an inspiring and productive year.

2020 allowed me to add several best practices and skills into my engineering and management toolbox. In this post, I review them and hope this post inspires you.

I break them down into three categories:

  • Engineering practices — practices we use to develop software.
  • Engineering management — manage team and communication.
  • Product management — manage communication and expectation.

Short Introduction About Me

I joined the Mindvalley Tech team in October 2020. In the Tech team, we have four web teams, two mobile teams, and one data team. …


Photo by Austin Distel on Unsplash

At the year 2018, I’d become a VP of Engineering in a small startup from a software engineer.

I’m writing this article to you who just started to lead an engineering team and you have no clue what to do and where to start. At the same time, I’m writing to myself.

As I was managing a 12-person engineering team, the advice in this article might not apply to the bigger team.

Clear communication

First and foremost, you are working with people, communication plays the most essential part.

To form a clear communication channel, you shall start documenting the conversation. When I…


Flutter is so easy to learn.

Flutter is the new mobile UI framework by Google for creating high-quality native experiences on iOS and Android. Yes, it’s cross-platform.

You can learn more about Flutter from here.

There is a significant difference between Flutter and React Native, which is you are writing UI code in an object-oriented way. IMO, Flutter is easy for native mobile developer or Backend developer. React Native is easy for a Frontend developer.

Writing a Hello World app is as simple as writing a Class.

class MyApp extends StatelessWidget {
@override
Widget…


Photo by Wim van ‘t Einde on Unsplash

Back to development.

Lately, I was busy with management tasks. This week, I have the chance to contribute to our latest API project.

This is a very productive week. I managed to setup monorepo, practised TDD by writing unit testing and end-to-end testing, and learned to use mocking strategy in the testing.

Monorepo and Manyrepos are a very interesting topic. I figured them out while diving deep into how Taylor Otwell structured the Laravel’s code.

I’m writing about it, but I need some time because it is a big topic. Source code repository strategy is a very important decision…


In a few years back, your parents want you to find a full-time position in a good company, your friends tell you freelancing can receive a good pay.

People talk about full-time position gives you job security, freelancing gives you freedom.

In my opinion, they both have their own challenges and downsides. No clear winner.

In the recent years, remote position is growing rapidly and becoming trendy. Working remotely gives you the job security and the freedom at the same time.


Photo by Victoria Kure-Wu on Unsplash

Laravel’s Collection has many powerful methods that can help you to do the complex tasks.

Map method applies a callback function to each of the items in the collection. In the callback function, you can modify the item before returning it.

Here are three simple ways you can use the map method.

Given you have a collection of fruits.

$fruits = collect(['apple', 'orange', 'watermelon']);

You can transform the value in the collection.

You turn the fruits into big size.

$bigFruits = $fruits->map(function($fruit) {
return strtoupper($fruit);
});
// ['APPLE', 'ORANGE', 'WATERMELON']

Besides, you can perform checking in the callback function.

You don’t like to eat the orange, so you replace it with the grape.

$noOrange =…


Photo by Marten Bjork on Unsplash

Recently I was working on a mobile app project with my friend, Steven where the user can receive location updates from friends and family. Each user will have a tracking code and a list of users with their most recent location.

The biggest challenge of this project was the timeline. We needed to deliver it within two weeks while working a day job.

However, we managed to deliver it in one weekend.

I was assigned to build the backend API for the mobile app. …


In the last couple of weeks, I was learning to develop a package for Laravel application. This package is to help the developer develops onboarding flow inside their applications.

That package is not the subject of this article. Let’s move on to the main subject.

Package Auto-Discovery In Laravel 5.5

Package maintainers’ and developers’ job are easier since Package auto-discovery is introduced in Laravel 5.5.

Package developers will now be able to add a new section to their composer.json files that inform the framework of any service providers or facade aliases that should be registered.

Check out the pull request sent by Taylor Otwell to…

Sky Chin

Tech Lead at Mindvalley

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store