Sign in

The Software Word

It‘s a position that requires intricate calibration of various personality traits

Over the course of my career in software development, I have had the great privilege of working under different technical leads. They are the people who drive the forefront technical direction of the team. I have learned much from them.

To be a great tech lead is hard. It’s an intricate balancing act between two poles of the same attribute. Too much on one side and one can fall.

Below are a few of the attributes that I admire in the best tech leads.

1. Having an Opinion Yet Not Being Opinionated On Everything

There is no tech lead who doesn’t have any opinion on anything. They are promoted to…

Speaking from experience — with a second chance in a software leadership position

People in a meeting

In my early software development career, with much hard work, I am very fortunate to become a software manager relatively early. Being relatively young and naive as a new manager, my focus has been on commitments and project deliveries.

Still, I did well and climbed the management ladder to become a senior manager without even realizing I had missed out on so much of what I should or should not do as a manager. As I look back today, I met the bottom line back then, but I failed in many ways.

After resetting my career and moving into a…

A tertiary education is important but some things look even better on a resume

Don’t get me wrong — a tertiary education is important, especially if you attend a school that is closely linked with the industry. It usually provides good pointers and sound fundamentals of what computer science is.

However, in the internet-driven world we live in, if you want to start your career as a software developer, your Computer Science degree should not be the most important point in your resume.

So what are the 5 things better than a computer science degree? They are listed below, ordered from easiest to hardest.

Technical Social Media

The more we’ve learned, the more we’ve realized there’s so much more to learn

A young man looking out of an apartment window.

As developers, the longer we’re on the job, the more experience we gain. Eventually, we may even become the go-to person on our team or in our organization, seen as the technical guru of our field.

At this level, we get a self-esteem boost, which is positive. But at times we may fall into the trap of getting an unnecessary ego. The wrong mindset creeps in, which can lead to the beginning of our downfall.

I’ve been through that journey. So I now consciously remind myself not to fall into one of those mindsets again. …

The Programming World

Software development is a rapidly changing profession — and you gotta keep evolving

Silhouetee of man on a plane.

If someone asks which jobs will be obsolete in the next decade, the jobs that come to mind are those that could be replaced by machines and software, e.g. professions like driver, broadcaster, travel agent, sports official, and many more.

To many, software development is never on the list. Software is the future, hence it is the most secured job. Really?

Well, it makes sense but it’s not always true. Here’s why:

Software Development Is the Most Changed Profession

Hardware architected to last;
Software architected to change
Change is the only thing that last;
Software wins.

Assembly programming was considered software. Then C language became the norm…

Learning Android Development

A reflection of my choice when I started my mobile development journey

About eight years ago, as I’m about to switch my career, I knew I need to get into something new yet relevant to me. I know mobile development is a growing area. But there’re two choices, iOS or Android? (there are other cross-platform alternatives e.g. Xamarin, but I prefer native).

I naturally pick up Android as my learning. Here are the reasons why.

1. I don’t have a Mac.

My first smartphone is the iPhone 3GS. I love it. I hope I can program on it one day. But I don’t have a macOS machine.

To program an iPhone App, I need a macOS machine. A…

Learning Mobile Development

A Gradle 7.0 new feature to make dependencies grouping nicer

When you create a default Jetpack Compose App using Android Studio, you’ll probably have the below list of dependencies.

implementation 'androidx.appcompat:appcompat:1.3.1'
implementation ''
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.1'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"

How nice if it is all bundled together and we can just do this

implementation (baseLibs.bundles.suite)
testImplementation (baseLibs.junit)
androidTestImplementation (
debugImplementation (baseLibs.compose.ui.tooling)…

Learning Mobile Development

An evaluation of the benefits and challenges of multi-repo multi-library mobile development

With mobile development continue to be in trend, more and more organizations are looking into scale mobile development. There’s even a dedicated site sharing and discussing ideas. One way is to break the main app into smaller components (as libraries) and link them up.

Naturally, when we are breaking our code into smaller libraries, ideally we can have them in different repositories, where each team is own their repositories.

A simple example from this article, where we break into clear partitions, making each module below a library itself within its own repo.

Learning Android Development

Cross XML and Jetpack Compose UI Theming Transition

There are many existing Android App using XML-based UI. Some are using XML Theming. To transition over to Jetpack Compose, this means we’ll need to support theming all over again for Jetpack Compose.

The good news is Chris Banes has created a library that will automatically apply the AppCompat XML based Theme to Jetpack Compose

One just uses the library and applies it accordingly.

AppCompatTheme {
// MaterialTheme.colors, shapes, typography
// will now contain copies of the context's theme


Build my own based XML and Jetpack Compose Theme

The above works well for transition.

However, instead of transition over, if we want to start a new phase…

Learning Mobile Development

Learn how Gradle and Cocoapod handle dependencies.

If you are into mobile development, it’s always good to know how both iOS and Android platform works, side by side.

If you like to get into the official learning, check out Gradle Documentation and Cocoapod Documentation.

If you are just looking to sync your dependencies, check out the below

If you are looking into modularizing your App, you can check out

Here I’m sharing some insight on how Gradle (for Android) and Cocoapod (for iOS) works. From it, we can appreciate the other platform as well as understand its limitation.

Check it out…

Gradle is part of Android Studio; Cocoapod is not part of Xcode.


In Android Studio, we can easily…


Sharing Software Development Experience, focus on Mobile.

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