Listen

Description

Guust Nieuwenhuis talks about “Modernizing ColdFusion apps (through evolution, not revolution)” in this episode of the ColdFusion Alive Podcast with host Michaela Light.

"We're going to be talking about modernizing your legacy ColdFusion apps through evolution and not revolution. And we'll explain what that means."

Show notes
Why not rewrite legacy apps?

A feeling (to rewrite) isn’t sufficient

Hot language
Blame the tech stack not the architecture, CTO or the dev team

Dev phrases

Only my language
Only rewrite not refactor - belief than is harder to recode than rewrite 
Tech > business

Delays release
Adds risk of project failure
Lack of written business rules
More bugs and less functionality
Expensive
“Rewrite code from scratch is the single worst strategic mistake that any software company can make” - Joel Spolsky cofounder of Stack Overflow, Fogbugz and Trello

Do nothing option

Build up tech debt
Increase security risk footprint month by month
User dissatisfaction grows
It works after years of tweaks and bug fixing and real world use

Refactor instead

Keep database the same
Incremental improvements vs waterfall

Agile
Just in time refactor improvements - surgical micro rewrite 
Refresh front end with JavaScript frameworks such as React, Vue

Business case driven

Legacy issues

Spaghetti code

Hard to follow
Hard to change
Poor naming conventions for functions, include and CFC files and variables
Poor variable scoping (global variables can be overwritten and are generally dangerous 
Hardcoded “magic” values

Deadwood code
Security issues due to…

Old framework
Unsupported libraries 
Deprecated integrations

No test plan or automated tests
Not documented
Hard to maintain or add new features
Performance issues
Adding features

Better architecture

API exposure for mobile app or partners
Encapsulate functionality

Set a boundary

Microservices

Vs Monolith
Specialized CF Engine package management to remove unneeded CFML features for fast load and running. 

Strangler Fig Pattern
Anti-corruption layer
Document architecture decisions in JIRA
Magic numbers to static variables
Wrapper functions
Event driven architecture 

Code trauma and political reluctance 
Same habits, same mistakes!
Read more

Eric Evans domain driven design
Martin Fowler blog and books 

Strangler Fig Pattern
Anti-corruption layer

Ben Nadel Feature flags 
Links below

Going CFCamp in June
Mentioned in this episode

His CF Summit preso
Joel Spolsky article and quote Things You Should Never Do, Part I 
Eric Evans domain driven design 
Martin Fowler blog and books 

Strangler Fig Pattern
Anti-corruption layer

Ben Nadel Feature flags 

Listen to the Audio

Bio

Guust Nieuwenhuis is a Full Stack Web Wizard with experience in a wide range of technologies. Over the last couple of years, he has been involved in projects for various clients like the European Commission, NSHQ (NATO), Adobe, AS Adventure Group, NS (Dutch railways), CZ Groep, Proximus, Avery Dennison and Mediagenix.

Through We Are North, we do 'Customization-As-A-Service'. We don't build from scratch: we find the best solutions out there and tailor them to our customers' business needs. In doing so, we never lose sight of the goal of the client.

In his free time, he plays the double bass and drums, crosses the forest on his mountain bike and coaches the youth at their local football club (where he is a board member as well). He likes spending time with his wife and two kids or meeting friends for a chat, game or drink.

If he still has some time left, he mainly spends it behind his computer to fulfill his hunger for the latest trends in IT.

 
Links