wrong tool

You are finite. Zathras is finite. This is wrong tool.

  • Email
  • LinkedIn
  • RSS
  • Twitter

Powered by Genesis

Is the great cloud shell game over?

March 3, 2019 by kostadis roussos 3 Comments

With the success of VMC on AWS, it’s time for us to admit that the Cloud Native programming model as the dominant and only programming model for the cloud is dead.

The Cloud Native programming model was a godsend for IT and software engineers. The move from CAPEX to OPEX forced all of the pre-existing software that ran on premises to be completely re-written for the cloud.

Jobs, careers, and consulting firms exploded as everybody tried to go on this cloud journey.

It was like the great y2k rewrite, which was followed by the C++ rewrite, which was in turn followed by the great Java rewrite …

This rewrite was forced because On-Prem software assumed infrastructure that did not exist in the cloud and could not work.

On-premises, you have very reliable and robust networks, storage that offers 5 9’s reliability, and a virtualization infrastructure that provides automatic restart-ability of virtual machines.

Furthermore, on-prem you had the opportunity to right-size your VM to your workload instead of playing whack-a-mole with the bin-packing strategy known as “which cloud instance do I buy today?”

The problem with on-prem was that you had to buy the hardware, and worse you had to learn how to operate the hardware.

The operating environment for the cloud where networks are unreliable, storage is unreliable, and applications must be HA aware and integrate with HA aware systems required a full-rewrite of perfectly fine working software.

What motivated this mass migration and mass rewrite?

The motivation was that new software could legitimately be written faster on the EC2 PaaS. Furthermore, companies didn’t want to own the hardware and wanted to rent their infrastructure.

The two factors pushed companies to look at Cloud Native not as a way to augment their existing software assets, but a once-in-the-lifetime opportunity to rewrite their software assets.

But it turns out that is hard. And it also turns that the pre-existing operating model on premises is kind-of-valuable. Instead of every application having to figure out how to deal with infrastructure that’s flaky, it’s just simpler to have a more robust infrastructure.

And now that the cost and agility advantage of the cloud has been in-part neutralized, what I hope we might see is a collective pause in the software industry as we ask ourselves – not whether it’s on-prem or cloud-native, but what is the appropriate programming model for the task at hand.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Hardware, innovation, Software

15 architecturalist papers: The Turing Machine Fallacy

February 17, 2019 by kostadis roussos Leave a Comment

One of the most enduring mistakes software architects make is what I call the Turing Machine Fallacy. The argument goes like this.

1. My system solves this fantastic class of problems

2. This system will address all problems.

3. Therefore, there is no room for any other system

The most recent example of this fallacy was the cloud. Four years ago, when I joined VMware, everyone assumed that the public cloud was the future. The assumption was that a small set of public cloud providers would provide the infrastructure that everyone would consume. That computing infrastructure was fundamentally undifferentiated and, therefore, not something that would be worth investing in.

I didn’t, don’t, and never will agree.

I believed when VMware’s stock price was in the mid-’50s that this was a ridiculous proposition.

In short, my point is the following. If you believe that a single computing infrastructure will meet all computing needs, you also believe that all software will run on a single computing platform and that that computing platform is X.

We have a name for X, it’s called a Turing Machine, and last I checked, the guys selling paper were not making a lot of money.

I believe that the minute the industry has coalesced around yet another fake Turing Machine, I need to start looking for the thing that will replace it.

But why do I believe this?

Because fundamentally, the software is an approximation of the real world. The software is a model of the real world. It is not the real world. And the real-world changes. And when the world changes, the software approximations become increasingly ill-fitting until they no longer fit. And changing software is very, very hard.

Changing software is so hard that new software fits into the gaps between the current software and the real world.

The strategic system software architect’s role is to recognize that your job is to see where the approximations are ill-fitting and cause investment to happen in solutions that will fit into those areas.

And those investments are software that is – by definition – different than the current winning system architecture. And those investments will drive hardware investments to support that software. And the hardware architecture, which is, in turn, an approximation of reality, will change. And as the hardware architecture changes to adapt to the change in software architecture, the winning system stops being the final answer to software system architecture.

We realize that the system architecture is not a universal Turing Machine but a computer.

Hardware evolves to support software, which is continuously evolving to support a changing world. Performance, form factor, power consumption, and legal requirements are in constant flux, and therefore the needs change as well.

And so to end on a proof point, in 2015, everyone assumed that Amazon would own The Cloud. And yet, here we are, and what is clear is that there will be a plethora of clouds – private, public, authoritarian, IoT, etc. Each with their optimizations that deal with their specific requirements.

The universal Turing Machine is an excellent mathematical abstraction, but there is no such thing in the real world where I live and work.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

14 architecturalist papers: the imaginary architect

February 7, 2019 by kostadis roussos 4 Comments

One of the trickiest parts of the job is how to start. If it’s a brand new system, at a brand new company, I am not sure I have any useful advice, and more practically, that’s not the kind of role this blog series is trying to describe.

After all multi-product system architecture of a single product with a single engineer is putting the cart before the horse.

Over the years, this process of how to become productive has tortured me through a series of jobs. In fact, in 2009, I almost got pushed out of Zynga because I hadn’t figured it out. And in 2008 I got my worst professional review because I hadn’t figured it out.

The crux of the problem is that when someone hires a very senior technical person, what they are hiring is an entire leadership org chart. They don’t realize that at the time. Worse, they don’t even realize how many new people they will have to hire. And worse the woman being hired has no clue as to how many people she will have to hire or fire.

At Zynga we had a high infant mortality rate with senior folks who would quit the company relatively quickly because we had a really bad on-boarding process. We paid them like they were senior, but they didn’t operate as senior folks because they lacked context and we didn’t help them get the context.

When I arrived at Zynga, Michael Luxton whom I mentored in the past, helped me. He basically told me the following: On the day I arrive I am an MTS 2. And should be given MTS 2 tasks. In about a year, I will be doing the job he hired me to do. It turned out to be a little bit faster, not because I was particularly capable, but because circumstances and luck made it go faster.

It was a bitter pill. And I almost didn’t swallow it. In fact, I was so frustrated that I almost walked out of the company one fine evening, frustrated that I was failing. But another great engineer talked me out of it.

At Juniper, and later at VMware, my bosses who were great VP’s of engineering provided a lot of structure in my onboarding and basically followed the same process.

But before I get to the process, let’s talk a little bit about what the problem is. The problem is that you don’t know where a company is on the technology curves. Is it a bleeding edge company that needs you to go invent something radically new? Or is it a laggard that needs you to fill feature gaps? Can your team write code but can’t architect? Or can it architect but not write code?

Put pedantically: can they write a block of code correctly? Can they write a function correctly? A module? A system? A product? Depending on where they are, the problem is different.

Is the problem not the code being written, and the architectures being proposed the release process? The build system? The schedules?

Is the problem the set of features the product team wants?

Does the team have the people who can build the features the product team wants? If you want to build a distributed system where you need world-class distributed systems engineers, and you don’t have them, you have the wrong team or wrong product ideda.

And they only way to figure that out is to get down and dirty.

So here’s the process I used for myself and I use for people who join the team. This is a process that my bosses codified when I joined VMware and Juniper and Michael Luxton intuited and mentored me through.

An architect is an imaginary architect – meaning she’s done nothing for you. And an imaginary architect can’t possibly be trusted to do anything. So step one is to make the imaginary architect do something that is not imaginary, for example, deliver code. The next step is to deliver a feature. The next step is to architect something. The next step is to sell something big they want to build. And to remind them every step of the way that they are imaginary until they accomplish all of the above. 

In general, my perspective is every new architect should spend a month fixing bugs in the core product they are working. They should fix a bug, check it in. Ideally several bugs. They should attend the scrum’s, the etc. And they shouldn’t pontificate but they should prove to their team that they can fix the bugs and do the work that an engineer can do. 

In fact at VMware, I only started to be taken seriously when I showed folks I could use a debugger. I remember one of the architects looking at me: WOW you know how to use a debugger. And I almost exploded in frustration because of course I know how to use one. But then realized that maybe if I had done that on day one, I could have saved myself some grief.

Once the architect has crossed that threshold, then and only then can we expand their scope.

Meanwhile we are feeding her the fire-hose of everything they need to do.

Let’s get even more granular.

After the architect has been hired, settled into their desk, you tell them: you don’t have any credibility with anyone on my team. Worse, you have anti-credibility because it means someone who thought they had the job no longer has it.

To get that credibility you need to go fix some bugs on product X, Y, Z. You need to own a feature in that product. You need to prove to people you can ship shit.

Until she does that people won’t take her seriously. 

She need to demonstrate you understand more about the system than they do. In pedantic detail.

The next step in my mentoring process is to tell the imaginary architect that she needs to get the team to buy into building something new. I tell her, “I don’t care what it is.” As far as I am concerned, the technical team must want to build the next thing you are selling.

Thirdly you need to sell to product management the thing you are building. 

And if they can’t sell to product management, tell them “I won’t overrule product management .” And if they say: What if I can’t? Like George Washington told Alexander Hamilton the only correct answer response: Well I suppose we’ll have to find an architect who can. Go figure it out!

And at that point, you no longer have an imaginary architect, you have a real one. And guess what during that entire process, the architect has been delivering value, gaining credibility with the team, and learning the corporate values and when they tell the team go left, the team is willing to follow them.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

13 architecturalist papers: getting to mainstream

June 9, 2018 by kostadis roussos Leave a Comment

Recently one of my co-workers asked about how do I value innovation. And so I started with a formulation I described before (here: https://wrongtool.kostadis.com/a-relativistic-theory-of-innovation/).

And in our discussion, and because many years have passed since I first wrote about it, I realized I was using a more sophisticated model.

The most significant bit from that earlier post is that there are regions of innovations. And within an area, you can innovate, and the next thing to do is reasonably apparent to those who are in that region and may appear as magical if you are further behind.

When I think about innovation and products, I think about these four regions:

  1. The edge of human knowledge
  2. Innovative commercial products
  3. Mainstream products
  4. Laggard products
I also think of these regions as waves, where the innovations in the bleeding edge wage move downstream.

Most academic research is in the first region and tends to be 5-10 years away, at least, from being part of some innovative product. And most research is intellectually exciting but of marginal commercial value.

Being able to predict which of the research technologies will win is impossible, and the surface area of opportunity is huge, and the investments that are required to turn those ideas into products is vast.

The biggest commercial wins of all time are when someone can take a research idea and turn it into a commercial product. Examples of such things include – server virtualization and network virtualization, the search of the web, cloud computing.

However, as a strategic software architect, the job isn’t to find that disruptive new technology, the position is to keep a sizeable successful software business successful and relevant.

Searching for that next disruptive idea is only part of the equation.

The equally important part is managing your investments in delivering commercially viable innovations, ensuring that the mainstream market is satisfied with the product and that you never fall behind the mainstream requirements and become a laggard – primarily avoid four at all costs, always be on 3, and do some of 2 while looking for 1.

A challenge is that although a strategic software architect may be thinking about all four regions at the same time, most teams are in one place and are focused on their backlog for their region.

If your goal as a software architect is to move a team downstream from being pure research or upstream from being a laggard, you will effectively deprioritize the obvious set of next work with something different. Something more risky because it’s not the obvious next thing.

And if you are a laggard, the product will be suffering from a lot of code rot problems. And just cleaning it up may feel like the top priority. 

And that would be the wrong thing. 

You are a laggard because you are missing features. 

If your code sucks, and your build times are horrible, etc., it’s tempting to think that you are a laggard because of that. In fact, that is irrelevant. You are a laggard because in the market you have a feature gap between the laggard and mainstream market products.

The real objective is to own most of the mainstream market and to offer innovative features that capture premium value while hoping that you discover some groundbreaking innovation.

And because you are a laggard, the market doesn’t look for you to innovate, they look for you to deliver the things that they want in the way that they want. The mainstream has defined its requirements, and you must fit into those requirements. A lot of times the temptation is to argue with the mainstream market, but that’s the wrong strategy. The mainstream isn’t interested in innovations, it has a particular point of view, and you need to satisfy it.

There may be innovative ways to deliver those solutions, but they have to meet the requirements of that market even if those requirements are – for lack of a better word – wrong.

What this means is that you have to add – sometimes – even more technical debt to get to the mainstream market so that you can have the revenue dollars and credibility to innovate.

In any new situation, the first job of a strategic software architect is to validate if the product meets the mainstream requirements and if not, all energy has to be focused on that.

Warning signs that you are not meeting mainstream requirements include declining market share, the field losing trust, emergence of direct competitors offering the same kind of product that is bought and deployed in the same way, decaying investment in the core product.

You have to direct your first set of investments and energy at getting out of the laggard space.

At NetApp when I joined the storage management team and was made their architect, this was precisely the situation we were in. The product, DataFabric Manager (aka DFM) had had marginal investment, and suddenly storage management had become a thing that customers cared about. Our field referred to DFM as Doesn’t F*king Matter and our customers were livid.

The first thing we had to do was identify the set of feature gaps that we needed to close to make the product not suck. And to be fair, the product didn’t suck given the investment. What had happened was that the market requirements had shifted on the team and the company had not made the investments to meet those requirements.

Once we identified those feature gaps, we had to code like mad. I remember sitting in a room with the head of engineering, and he said: Kostadis, I need you to disappear for the next few months. We need to code like mad. And I can’t have you distract anyone with your great next set of ideas.” The engineering head was dyslexic, and he never wrote anything. When he wanted to emphasize things he would take a pen and write it down, and he wrote “Code like mad!!” And he underlined it twice. I wish I still had that paper.

And so we coded like mad and got out of the laggard space.

I like to joke this is the easy part. The requirements are understood, the team top-to-bottom understands what it needs to build, the only problem is you have to go very very very fast and have to be very very very disciplined. The hard part is that a laggard product has a lot of internal challenges – a lack of resources, talent and brain drain, and a lot of internal corporate vultures. The internal corporate vultures are the worst. Instead of fixing the laggard product they decide that the right answer is to buy another product, or to do a rewrite or to fire everyone or to do anything but fix the feature gaps.

It’s mind-boggling. In fact, if you walk into a situation where everyone wants to re-write the core product, it probably is indicative of a laggard product.

And the right answer isn’t to do a rewrite but to fix the critical feature gaps.

So when we delivered that next DFM release, we didn’t advance the architecture, we didn’t solve the underlying technical problems, and we may have added some tech debt, but we got to the mainstream, and that set us up for trying to get to the innovative product space.

And we did.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

12 architecturalist papers: people write software

May 30, 2018 by kostadis roussos Leave a Comment

When I first became an architect at NetApp, I thought the job was to draw a picture, get the picture approved and then the software would magically be written.

The mental model I had was that there was this massive “power-point to product” compiler and all I had to do was draw the power-point.

To my surprise, it was a little bit more complicated.

People write software, and people are not computers. People have emotions, aspirations, interests, career goals, dislikes, strengths and weaknesses. And those people write software.

How does this influence software system design?

In the first phase, you need to figure out what the right system is. Correctness or appropriateness of a system is independent of human beings.

But then to get it implemented, you need to understand your team.

There will be skills your team has, and there are skills your team needs to acquire and there are skills your team lacks and can’t learn and you need to go find in the marketplace.

And then your job, as a systems architect, is to figure out how to build something with the people you have that adds enough value so you can stay alive.

And sometimes it means you have to wait to hire the people you need.

In many ways, this process feels like being an author of a screenplay who tailors the screenplay to the actors you hired.

One of my projects at Zynga could not start until I hired someone who understood filesystems. And so I lived with data corruption and inconsistency because there was no one who could fix the problem. And when that person was hired, I had to wait for them to ramp up at Zynga. And when they finally ramped out, only then could I actually get them to work on the problem.

But finding the right person to solve a problem is the easy part of the job. Motivating them to solve the problem is the hard thing.

The really hard part is to motivate people to write the software. Remember people have lots of reasons why they do things. And people’s best work is done when they are fully engaged in a problem, when they show up wholly – mind and heart and body.

You don’t want extrinsic motivation, because you don’t get people’s best work.

And that means a bunch of things.

The simplest and most obvious is that people have to feel safe to be themselves. If people don’t feel safe, then they will not be there. They have to feel supported. They have to feel free to be their authentic self.

Screaming at people, dismissing people, being cruel, demonstrating how much smarter than them you are, trashing their work, is how you get something other than their best work. And sadly in my past lives, I had to have a boss explain this very simple thing to me. And I’ve had to be reminded of this on more occasions than I like.

The second is that they have to feel that what they want will happen. And what they want is not what you think it is.

A large part of the job as an architect is to spend time 1×1 with everyone and making sure that they are wholly engaged. And understand what they need. And everyone is different.

For example, a co-worker of mine was trying to re-architect a system, and he was running into flak from his team. And I asked him: Did you talk to everyone to see what they wanted from this effort? And he said, no. And I said: How can you convince people of something if you don’t know what they want?

So he scheduled a bunch of 1×1’s, found out what everyone wanted, and all of a sudden the flak evaporated. It didn’t evaporate because he listened to people, the flak evaporated because he adjusted his plan to meet their wants and needs.

Sometimes I get asked: Why do you spend so much time talking to people? And my answer is: People write software and I want people to be fully invested in a solution because that’s how they do their best work.

Do I always succeed? No. But it’s my North Star.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers, Uncategorized

Godspeed Mark Pincus

May 4, 2018 by kostadis roussos Leave a Comment

Mark, as always, does it his way. His recent announcement to relinquish control of Zynga is quintessential Mark, doing what he thinks the right thing is.

As an ex-Zynga employee, I am well aware of many things that we did that we are not proud of, and there are many things I wish we could have changed. And this is not the moment to rehash everything.

I wish the biggest problem in social media today was that we had too many cows. I really wish the world today had a game that 100 million people were playing. And that game was about a city where everyone was friendly. I wish we had a founder of a social media company who was more concerned about getting people to play together and having real social connections, not just randomly driving growth numbers.

And when we launched Zynga, the amount of hate we got from the gaming industry surprised me.

And after gamergate, I wonder if the problem that Zynga had was that we were the first company to build games that I could play while my kid was awake.

And when one of our games crossed the lines, Mark told them to go back.

For all of our flaws, we did not let our platform be a place you you could stalk or promote hate.

We did not let our games be sexist, misogynistic, etc.

We just wanted people to have fun,

Mark did it his own way.

Godspeed.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Uncategorized

11 architecturalist papers: The area under the graph

April 19, 2018 by kostadis roussos Leave a Comment

A year ago, in a promotion meeting, a senior technical leader warned us about promoting someone too soon. And he and I rarely agreed on anything, and I always learned something from our discussion.

His comment is that to be a successful technologist you need to have an area under the curve not just cross the threshold. And that time and experience were how you accumulated that area under the graph.

At NetApp, in my 20’s, I was determined to become a technical director as fast as possible. And I crossed the threshold, and they promoted me, and then it took me one more decade to learn the actual job. I was 33 years old, and I was the second youngest technical director.

And I had to have a lot of failures, and experiences before I actually could do the job properly. And I had to learn a lot from people.

For example, one thing I had to learn and then re-learn, is that in a new market all of your instincts are wrong. And I also had to learn that in all markets some things are always true, there are no shortcuts.

What I realized is that the sentences and verbs never change, but the nouns and adjectives do.

A lot of the job of strategic software architecture is not about technology but pattern matching.

And the job is to understand the details so you can map the right sentence. And that was a lesson I had to learn the hard way.

For example, when I went to Zynga, I sat in meetings, and people were using words that I had never heard before used in ways that made no sense. In my first meeting with the executive team, they said: “We need new IP”. And I was flabbergasted – why would a game company need a new internet protocol? Except they meant “Intellectual property” which meant “new game franchise” which meant “new product” and that the real discussion was about how do we launch a new line of business?

The sentence, in this case, was “How do we launch a new line of business,” the noun was “new IP.” And once you realize that a game company spends all of its time launching new games, it makes you rethink what the purpose of software is.

The solution, again from experience, was that before I could do the job they hired me for, I had to learn about the technology. And so I spent several months taking notes on words and asking questions, and within a few months, I had begun to match patterns.

When I went to Juniper, after Zynga, I took the same process. First, learn the nouns, and adjectives, then do the pattern matching and then start figuring out what needs to be done.

Being able to do that job, the pattern matching, you need the ability and the experience, and so getting promoted fast is great, but it takes time to be able to do the job.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

10 architecturalist papers: the 8 year itch

April 9, 2018 by kostadis roussos 1 Comment

The most intriguing part of the tech industry is the interplay between Moore’s law and opportunity.

My rule of thumb is the 8-year rule. The rule says the following; market disruptions happen every eight years because the incumbent software stack can’t be adapted to the new hardware.

As some examples…

My current employer took over the world because of the shift to multi-core servers. Apple took over the world courtesy of mobile processors becoming fast enough to run most useful applications. Microsoft and Linux took over the world when  Pentium closed the performance gap between x86 processors and RISC systems.

But why 8, because we human beings, don’t understand exponentially growing curves.

For small enough values of x, y=x*x is equivalent to y=2x. The two start to diverge when x = 3  or when y = 8.

So?

Let’s assume big tech titan has 80% of the market in year 0. Then in year 2, the new hardware emerges, but it’s not appreciably faster, except for some small use cases, so instead of selling to 8/10 customers, it’s now selling to 8/12. Then in year 4, it’s 8/14, and then in year six it’s 8/18, and you go from being 80% of the market to less than 50%, and there is probably some other tech-titan growing much faster than you were and you are the has-been tech-titan?

Many books and articles cover this topic.

What does this have to do with anything?

When you consider strategic software architecture, the tricky bit is to navigate across that 8-year transition.  And what makes it particularly tricky is that you have to assume that the software you had is going to be your boat-anchor, and simultaneously, your source of funding.

The challenge is that a mature software architecture that’s tuned for one market takes about 8 years. And the reason it takes about 8 years, is that any market takes 8 years to mature. And the reason it takes 8 years, is that it takes 8 years for the hardware to become capable enough to grow the market. And if your software is tuned for one market, it is not tuned for the next one.

How do you solve this?

The short answer is that you have to find the 8-year curve after the current one.

The strategy is the following:

  1.  Grow with the first 8-year cycle
  2.  Preserve market share during the 8-year cycle you missed and figure out what you will do next. Use this time to re-architect your system for the next grow opportunity.
  3.  Grow with the next 8-year cycle.

The tricky bit in my mind is to understand when you are in (2) and to realize that your goal is not to continue to improve what you had but to go build something new that builds on top of the assets you have in place.

Where I have failed in the past is not understanding the importance of (2). That it’s tempting to see some market you missed and try to attack it and repeatedly fail, instead of admitting you blew it and then trying to find the next thing.

So how do you set yourself up for (3)?

You have to think about where the puck is moving to, and then do everything while you are in phase (2) such that it lines up with where you think phase (3) will be.

And that’s the trick, to do the major re-architecting nominally for phase (2), but really for phase (3). And as a strategic software architect, that’s the hardest job, selling the future as an improvement on the present when the entire company is obsessed with a market they already lost, and with a market, they could win at not yet visible.

 

 

 

 

 

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

09 architecturalist papers: draw me a picture

March 31, 2018 by kostadis roussos 3 Comments

One of the enduring myths about software architecture and in general technology leadership is the degree of control an architect has.

Our advocates believe we walk into a room, draw a picture, everyone listens to us and then code materializes.

And I have worked in places like that. Teams willingly were lead off a cliff.

I remember a time at NetApp where a team just wanted me to draw the picture. And I did and then projects got spun up and engineers got assigned. And then I left because that’s not the way I work.

The best teams don’t work that way.

The best teams draw the picture for you and you evaluate if the picture makes sense.

What you want is people to be passionate and believe in their solution. And only very rarely is what they are proposing wrong. Most of the time it’s good enough.

And so my job is to find out how to nudge them away from potential disasters.

Sometimes it can be exasperating because it’s not the picture you want drawn. And sometimes the picture is a compromise between organizations and not the best software. And there is always someone smart enough to point out the better picture that no one had any passion for.

And then they look at me as a failure, because isn’t my job to build the best possible system and force it down my teams throat?

And the answer is almost never.

The job is to have product that can evolve to be the best product it can be. And to do that you need a committed team. And a committed great team will always produce great software even if the picture isn’t exactly what you would have drawn.

Because drawing the picture – ironically – is almost never the job.

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Architecturalist Papers

Reflections on Straight to Hell and Leaving Twitter.

October 14, 2017 by kostadis roussos Leave a Comment

The past week I finished “Straight to Hell”.  The book describes the debauchery and decadence of the lives of the bankers in the pre-Lehman’s era. The stories are amusingly written, and horrifying. Although it’s easy to demonize an entire group of people because of a salacious book, the book does force you to ask the question: if you were in a similar environment what would you do?

And this past week, with the discussion of a boycott of Twitter, I thought to myself, maybe I am in such an environment.

Over the last several years, I have been a devoted user of Twitter. I enjoyed the ability to participate in conversations about the Montreal Canadiens. I enjoyed learning in real-time about the chaos of the world.

I found people who were really interesting. Lauren Duca and Teen Vogue. I learned about the Death of Expertise. I learned about how Snowden was a Russian tool from the very beginning.

I learned about Russian counter-espionage.

I learned about Deep Tech, following Matt Ocko.

I saw daily art.

And at the same time, I saw how Twitter refuses to police its own platform. Twitter allows the President of the USA to speak to people in a way that if he was in my house, I would ask him to leave.

Working at VMware, I am made aware of how leadership style and tone are crucial. Pat Gelsinger is an amazing leader and a man of high moral standing. And what I admire most about him, is that he doesn’t tolerate the use of crude language in his presence. And as a result, this percolates down.

VMware is probably the least profane place I have ever worked at.

And that makes VMware special.

And that got me thinking about Twitter and this book I just read.  Donal Trump sets the bar for what is acceptable on Twitter. If the President of the USA can use ethnic slurs (Pocahantas Warren),  then so can Spencer. If David Duke can tell a woman like Lauren Duca to go back into the kitchen, then so can every asshole on the platform.

And I was morally conflicted. On the one hand, Twitter has enriched my life. On the other, I can no longer ignore the tone of Twitter. And when I routinely see Twitter refuse to remove violent language from its feed, it tells me who Twitter wants to hang out with.

And because I hang out on Twitter, Twitter’s decisions reflect on me.

My grandfather who was a very moral person, would have looked at Twitter, and said: I thought I raised my daughter better. He would have been so appalled with my choices, that he would look to my mother for her choices and how she raised me.

And that made me stop and think.

In my life, and I want to work with people like Pat. I want to interact with people who value civility and decency.

Going off Twitter isn’t a permanent thing. There is a lot that I value. And I learn a lot. And I am just one lousy irrelevant person.

But the company I choose to keep says a lot about me. And so I’ll walk away for a while.

 

 

 

Share this:

  • Email a link to a friend (Opens in new window) Email
  • Share on Reddit (Opens in new window) Reddit
  • Share on X (Opens in new window) X
  • Share on Tumblr (Opens in new window) Tumblr
  • Share on Facebook (Opens in new window) Facebook
  • Share on LinkedIn (Opens in new window) LinkedIn
  • Share on WhatsApp (Opens in new window) WhatsApp

Like this:

Like Loading…

Filed Under: Uncategorized

  • « Previous Page
  • 1
  • …
  • 10
  • 11
  • 12
  • 13
  • 14
  • …
  • 27
  • Next Page »

Loading Comments...

    %d