A collection of thoughts, ideas and rants inspired by my career in the fintech and banking industry.

Antipattern: BFF

Backend-for-frontend

The backend-for-frontend (BFF) pattern is when a backend API is designed specifically for the needs of a frontend consumer. The BFF is intended to make frontend development simple, moving all the complexity and “business logic” to the backend and allowing the frontend to deal with a single backend. The backend BFF API closely resembles the flows and screen designs of the frontend.

The initial development experience is often positive. The frontend team can focus on the UI/UX aspects of the application, and the backend team can handle all the downstream integrations and data transformations.

[Read More]

Details Matter

Why you need specific requirements

Consider the following statement:

Our consultancy operates on a 50% margin.

Margin is how much extra the consultancy charges on top of their costs to cover the consultancy’s costs, operating expenses, and profits. Most consultancies have a minimum margin that they’ll consider acceptable when bidding on work.

But the details matter when it comes to requirements. A lot. The statement above is subtly ambiguous. How is margin calculated, precisely? I can think of two ways which make sense but result in wildly different profits for the consultancy.

[Read More]

The Art of Documentation

Documentation is one of the most valuable artifacts of any technology project or platform. It provides context to new joiners, avoids duplicating responses via Slack/Teams, and facilitates asynchronous communication, but it also requires constant care and feeding.

Confluence is where documentation goes to die
– Unknown

Most of the large enterprises that I’ve worked for have a large corpus of documentation in a wiki of some sort. Most of it is dangerously out-of-date, incomplete, duplicated, and fragmented across different pages or spaces. Documentation of this kind causes countless wasted hours and frustration on the part of the reader. There’s nothing worse than spending days working through a documented process only to discover that you’re following an outdated copy because only wiki admins can delete pages.

[Read More]

Basic Skills

New technologies generate a lot of noise as they work their way through the hype cycle and it’s hard for newcomers to figure out what they should learn. Only a small number of these new technologies will survive the test of time, most will be forgotton, but the FOMO is real.

While there’s value in the process of learning the new hotness, I think you’ll see a higher lifetime return when you invest in learning the basic tools of the trade - the skills that you’ll use day in and day out, and skills that will transfer well from one job to the next.

[Read More]
skills 

Autonomous Teams

One thing that development teams constantly struggle with is striking a balance between building features, fixing bugs, paying down tech debt, and embarking on more ambitious activities like replacing core components in their architecture. It’s also something that Agile tries to solve but I’ve never seen it solved to everyone’s satisfaction.

And I think it’s because many Agile Product Owners are focused on the specifics of what features they’d like to see built instead of setting the direction for the dev team and letting them figure out how to get there. They allocate some random percentage of the sprint to tech debt just to keep the team happy but it’s hard to make significant changes with 10% of the sprint capacity.

[Read More]

Do One Thing

Software should do one thing, and do it well. Each piece of software should have a clearly-stated goal that is used to determine whether a particular feature should be implemented or not. When a proposed feature does not fit with the software’s stated goal then don’t implemented it. Just don’t.

Like adding source control to your product. We already have several perfectly good source control systems. Building your own custom source control system into your product is never a good idea. Your implementation is unlikely to be as good as the standalone products like Git, Mercurial or Subversion, and it’ll probably make it difficult for me to use my source control system of choice.

[Read More]

Trunk-based Development

I’ve been working on re-platforming the online banking system for a Canadian retail bank for over two years. Leading up to the initial launch, The Business decided to defer a few features to the next release which was scheduled for about a month later. We created a release branch to support defect fixes found in testing, and the development team continued adding features to the develop branch. Bug fixes from release were merged into develop regularly. The process was working.

[Read More]

Subdomains

Remember the Great Equifax Hack back in Sept 2017? Equifax came under a lot of fire for the way they handled the breach and one of their mistakes was using the custom domain equifaxsecurity2017.com for “customers” to check whether their personal information had been compromised. Shortly after the breach, several other lookalike domains were registered including securityequifax2017.com. In fact, the custom domain was so confusing that Equifax themselves directed people to the incorrect site via tweets on Twitter.

[Read More]

The Data Interface

A trucker delivering palletized cargo to a pier would have to remove each item from the pallet and place it on the dock. Longshoreman would then replace the items on the pallet for lowering into the hold, where other longshoreman would break down the pallet once more and stow each individual item - all at a cost so high that shippers knew not to send pallets to begin with. – The Box, Marc Levinson. P143

[Read More]

Test First Manufacturing

I’m currently reading The Box by Marc Levinson. It is a fascinating book that chronicles the changes in the shipping industry brought about through the introduction of shipping containers. It sounds dry, but it’s not. The innovators faced huge barriers, including governments, labour unions, and standards committees. I have such deep respect for Malcom McLean for persisting through the insurmountable bureaucracy.

At one point, they discuss how a particular design aspect of the container was deemed unsuitable and had to be rectified:

[Read More]
agile  tdd