creating long living software: development, reuse, cross platform, diversity, vinyl, team scaling, re brand, open source, master and marketing bullshit, AK-47, T-34, mother instinct…

Context:

Few things happen, I moved to new house, bought vinyl gramophone in my mom house, cleaned my attic, basement and drawers, boxes, sorted a lot things and junk collected via many years. Some things landed in trash and other ware kept.

I delivered and participated in few projects that now are 10+ years and very modern but when think about vinyl, AK-47, T-34, and many others it don’t look so old and mature.

Additionally I was thinking about negative scenarios: Steve Jobs fired from Apple by marking guy, Adobe Flash killed by Steve Jobs, stolen profits from Nokia and Blackberry…

Will any of my children could run long years after its creator how to do it?

In IT we are bombed with technologies, “innovation” flavored with marketing bullshit.

Technologies that serve fairly well for customers after few years are “deprecated”, not trendy and out of people to support it.

CDs, DVDs, VinylSQL, ADO, LinqToSql, Framework, JS Frameworks, MVP, MVC, MVVMs, Xamarin, MAUI, Blazor.

What are factors that my solution would serve for many years?

  • easy to build
  • easy to replace broken or deprecated parts, solid fundamentals
  • easy to make changes and support
  • if possible 0 support

Easy to build and breaking changes

Lack of developers and how fast you start is one of key factors why technology gets deprecated.

Easy to replace broken or deprecated parts

Modular thinking reuse and cross platform are many heads of same beast.

Easy to make changes and support

Technology popularity by sold customer solutions and count of developer heads and their level of skills. Count and diversity of substitute parts: frameworks, UI and database, hardware access and other components. Braking changes in sub components will slow me down.

Big corporations have no real values main reason is to make profit.

If product don’t make minimum 14% of profit, product will be killed.

Knowing that makes me predict and avoid many failures.

As creator of product I have mother instinct and product is my baby.

If it’s not hobby than product should be always profitable or made this way that cheaper provider or even company could take it’s next iterations and provide supplements of modules.

When Steve Jobs was fired from Apple wan’t that exactly the case of product maker mother instinct?

*Take it into account that using big corporate services is have bigger risk of being killed where creators are teach to have no emotions to their products or are anonymous or being muted what is more not only profit reasons but also politics check my article:

There are many examples of killed products Windows Phone, Silverlight, whole Google Graveyard…

There are also good examples Adobe Flash support passed to partner, Blackberry Mobile brand passed to startup.

If possible 0 support

Picking solutions that you have no influence it can kill my solution.

Picking 3rd parties is bad because we are dependent but independence have it cost.

We pick 3rd parties to speed up work, we can’t do all by yourself.
Risk of picking 3rd parties is no influence on braking changes, picking popular open source product is way to minimal risk.

Here you have often have large choice and technology diversity as well as programming language notation diversity.

Main problem with open source project is they are done by passionate people after hours not always solving real problems or simply don’t have time.

Open source project driven by corporate is hybrid where you can see passionate creator focused on customer needs.

Unfortunately here as we are in corporation we are exposed for corporate marketing and that only popular opinions will be picked.

Technology Diversity as slogan, too expensive to implement? Range of technologies is limited.

In other words democracy in practice if technology is not used or don’t have any views of growing user population it won’t be developed.

If you picked niche technology and you are in minority you might be strongly dissatisfied.

Good example is Xamarin.Native, Markup Extensions or CSS in Xamarin.Forms or soon whole Xamarin.Forms.

Related additional work:

Namespace changes by politics or marketing reasons.

Corporate are affected by politics good example is Mater change to Main so be prepared to such surprises.

Marketing reasons are more tricky.

If you remember Microsoft marketing struggle with Windows Phone and many mistakes done there, names changed before users could remember it Windows Mobile, .NET for mobility, Metro design, Modern design.

For sure you are happy to do cross platform to be independent form it.

On other hand many customers know Microsoft products as from simple naming as sql server is MS SQL, mvc is MS MVC, so re branding to Xamarin.Forms to MAUI fallow that pattern.

Other Microsoft products names to keep in mind are MS word, MS Excel, MS messenger, after Microsoft acquisition Skype, Skype for business, MS Teams, please remind stories behind them.

Selling Xamarin solution to customers before Microsoft acquisition was hard, after it many doors ware open and lot of good happened.

Nevertheless few years have passed Xamarin brand is recognized on .NET developers level. Xamarin is stronger brand than MAUI. Corporate customers don’t like ideas which are less on market than 2 years.

One .NET and Windows 10 looks as solid fundamentals for product that will run for many years. MAUI:Xamarin.Forms.6 is not only re brand but also removing many pain points and learning bottle necks and deprecated ideas.

On other hand I don’t want go threw Windows Phone marketing experiences. Promoting new brand, delivering new content, updating old is quite time consuming and expensive. Being visible brand in end customer on global scale takes long years.

Time will show is it Skype or Windows Phone marketing case.

Summary: Balance and good luck

To deliver long living products it is need to balance between how easy you can introduce new people to project, speed of building and updates, team work, addiction to 3rd parties, marketing and politics of 2nd parties.

Creating Zero Support solution that could be passed to many providers, possibly as much as independent from modules dependencies. Using popular, replaceable parts.

Sharp dress man that have instinct to predict which technologies can be used in substitute modules will make problem or be successful, all build on solid fundamentals.

Checkout also article about fault tolerance Model View Actor:

Did small internal corporate and big projects with over 1 000 000 active users in ASP.NET and XAMARIN.FORMS and XAMARIN.NATIVE. Blogging for better sleep.