ThoughtWorks CTO and Software Architect/Meme Wrangler concede code need not always be perfect and ‘clean’Harshith Mallya
Technology is now the core on which tech, as well as non-tech, companies run. ThoughtWorks believes that it is important for technologists to be part of business decision making and also make right architectural decisions looking at the bigger picture.
“This is a first generation ThoughtWorks business card,” joked Rebecca Parsons, Chief Technology Officer at ThoughtWorks, as we exchanged pleasantries and business cards at her office in Koramangala, Bengaluru.
I glanced at the card, and saw it really was ‘old school’ - it included a fax number!
Her colleague Neal Ford, on the other hand, shared a ‘current generation’ minimalistic business card, with his designation reading - ‘Director, Software Architect, and Meme Wrangler’.
Meme wrangler, I wonder. Then, a glance at Neal’s personal website gives me the answer and an insight – ‘A Meme Wrangler: someone who herds ideas into thoughts, generally through lengthy and complicated discussions.’
Founded in 1993, Chicago, Illinois-based ThoughtWorks is a global software company that specialises in software design and delivery, pioneering tools and consulting services. It has around 4,500 employees spread across 42 offices around the globe, and its founding philosophy of building sustainable business, achieving software excellence, and upholding social justice is interestingly inspired by ice cream maker Ben and Jerry’s.
Before joining ThoughtWorks, Rebecca was an assistant professor of computer science at the University of Central Florida, where she taught courses in compilers, programme optimisation, distributed computation, programming languages, theory of computation, machine learning and computational biology. She joined ThoughtWorks in 1999, and has been with the company since.
A strong advocate for diversity in the technology industry, Rebecca has spoken strongly about the “Brogrammer” culture the tech industry and is committed to increasing the number of women in coding and STEM fields. She has served on the board of CodeChix, and acted as an advisor to Women Who Code.
Neal’s professional focus, on the other hand, includes designing and building large-scale enterprise applications. A designer and developer of applications, articles, video presentations, and an author of multiple books, Neal dons multiple hats. In fact, Rebecca and Neal have collaborated on their latest book - Building Evolutionary Architecture - where they discuss the need to enable incremental change in an architecture over time.
Importance of technology at the core
Rebecca shared that ThoughtWorks started thinking about what its key differentiation point was, and arrived at the philosophy of ‘Technology@Core’. She noted that since Roy Singham, founder of ThoughtWorks was a techie himself, they didn’t have to worry about ensuring technologists being brought into business decisions. She said,
As we got bigger, we need to have more people who understood management, finance and how to make a company work.
At scale, and while scaling up, is when most companies are unable to maintain a balance between technology and business goals. ThoughtWorks sees to this by ensuring all leadership teams have a head of technology who participates not just in tech decisions, but also in business decision making.
Technologists, though, generally only like talking to the geeks. A company thus has to ensure that technologists speak the language of business and tech so that they are given a bigger voice that is actually heard.
Rebecca noted that having a technologist in the room is important during course corrections such as in a bad quarter. Balancing tech and business perspectives leads to better decisions and more realistic targets. Based on her experience, she explained that now, more companies across industries have a focus on tech, even if their core domain doesn’t include modern technology. She added,
Companies are beginning to realise that tech has become increasingly important to be successful… Since we have always had tech at center, (we are) in a good position to tell our clients how to think of business model differently or use tech to amplify their strengths in the market.
Neal added that every time they see a new tech capability in the world, they think of how to fit it into their existing engineering practices. Artificial Intelligence (AI) has been a keen area of interest in recent times. Rebecca noted,
They say code doesn’t age well, data ages worse.
Talking about AI, she noted that AI algorithms work wonderfully on a clean dataset, but getting a clean dataset is the challenge in the real world. She said, “When you need to get data from mainframes scattered across different legacy systems, how do you ensure that it is clean?”
Innovation for enterprises and evolutionary architectures
They can’t. Because it probably hasn’t been written yet! Planning in this (ever changing) world is impossible. Trying to do that is wasting time, because as soon as a new capability hits an ecosystem, it will invalidate all the planning done.
He cited the recent example of Docker, the operating-system-level virtualisation platform, also known as containers. He noted that even if one didn’t use Docker, its recent introduction still changed the decision-making process from an architectural standpoint because suddenly it introduced all these new capabilities. Ford noted,
The focus has to be on building architectures that can withstand change over time.
Why code needn’t be perfect
A company may have tech debt and code that is a ‘steaming pile’ of a mess. The academic in Rebecca would like to say that it needs to be clean, but the pragmatist in her believes otherwise.
If that pile hasn’t changed in a while and the business has no plans that come near that part of the system and it is stable and hasn’t caused problems in production, then there is no point in worrying even if it is a mess.
She, instead, suggests companies should look at defect logs of previous releases to see what parts of the system break randomly because of hidden tendrils. Then the technologists and business teams should ask the operation teams what they are scared of when someone talks about ‘launching a new version of X’. She joked,
If people go pale and green, start cancelling vacations, then that is a part of the system that needs priority. It needs to be mapped to the relative complexity.
Talking about coding traps that many companies fall into, Neal noted that startups and enterprises need to watch out for two things -
- Infinite regress problem - An enterprise can always make code better by iterating again and polishing. But then they may lose focus on bigger picture by chasing perfection.
- Metawork more interesting than work - Techies may focus on improving an existing code bases but not be open to listen to the business people, and work on new features requests. They should focus more on the latter.
Neal noted that almost nothing in architecture has a clean yes or no binary solution. Almost everything is a tradeoff at one point or another. Rebecca noted,
It is better to focus on parts of the system that are changing and more critical… Look at what the business is coming up with in terms of market opportunities and what parts of the system it will impact.