Friday, April 22, 2016

The Theory of Microservices and Your Productivity

How can you tackle the biggest problems that you face? When you or or business are faced with some humongous task that frightens you, how can you address it?

There's a trend in software development (something I come in contact with a little bit in the day job) called microservices.

The idea behind microservice architecture is to break down large software applications into smaller and discrete pieces, each with a specific function.

The concept could spread well beyond software, though, to how you organize your work life. What if you thought about how to break your biggest challenges down into small, manageable pieces that you could master and control?

Determine The BIG Problems

What huge problem do you or your small business face? I remember the old GI Joe PSAs from the 80's that always ended with "...and knowing is half the battle." I'm not sure that knowing your problems constitute half of the battle, but for you to address and fix your issues, you certainly have to identify them.

Take a piece of paper. Write down you big challenges. The more concrete you can make the issues, the easier they are to decompose and address in smaller pieces. Putting the giant and impossible challenges on paper makes them real, instead of giant fictional villains keeping you from your dreams.

Break Them Into Pieces

The key to the microservices movement in technology is to take huge functions (they refer to them as monoliths) and break them into tiny and separate functions required to accomplish the larger task.

Take the same approach here. For each challenge that you have identified, list out all of the different tasks that you have to take in order to solve the problem. Here's a tip - if your tasks seem large, they are still too big. Break it down one more level to a smaller task.

Seek Mastery

Microservices architecture is not just about breaking large and complex functions into smaller parts. Each separate part must also create a niche where it can excel.

Each small and discrete function that gets created becomes the sole source for that activity. Any application across an organization that requires a particular activity to be created can utilize that service. But the services can't work it partially. They have to conquer it.

So as you approach the list of tasks to accomplish one of the giant goals, look for how you can optimize your approach to each task. What's the most efficient way to get it done? Could you do it better next time?

Reduce Redundancy

If you can master a function but find it repetitive, is there a way to automate it? Can you set it up so that it works the same way every time?

The danger in repetitive tasks hides in the inconsistency of the results. If you have to rediscover the process to complete the function every time, you waste valuable execution cycles. Automation and repetition of process helps remove the variables from the process.

Conclusion

No task is too big to conquer. You tackle the giant by chopping it into tiny pieces. Small tasks that move you towards the large goal provide structure and method to attacking the humongous.

Through prioritization, breaking down the challenge into smaller tasks, optimizing your efficiency at accomplishing tasks, and removing or automating redundant activities, you can tackle huge obstacles.

Stealing best practices from the way that efficient and scalable software is designed, we can hack our lives to maximize our own productivity as if it were a system.