Don`t Give Up: There still hope for Software

We are in 2015 and yet we still have management that have no clue whats going on. We still have developers who deliver bad code and dont like to study and just keep complaining and dont move a finger to improve things.  We still have business, companies just carrying about money.

Unfortunately because there is lot of IT - pretty much everywhere people think is commodity - but its not. It`s very hard to get it right.

I don`t know why, maybe because i have strong faith in right software and win-win for everybody - i still did not give up.



Classical Iron Triangle

That`s what most of companies still do now a days. Fixed price, fixed scope, fixed time.  There is no way what so ever to everybody get a win-win its very hard.

For several reasons, maybe because we dont know what we want, maybe because software is very hard to do it. Maybe because software is a mix with engineering work and creativity/artistic work(this 2 things don`t go along but yeah we got that on software.)

Maybe because or engineers are still very unprofessional and just care about money or turning into a manager. Or maybe just because every software is different so its almost impossible to estimate it right on the beginning. Maybe we are very amateur and will get it right on the next 500 years or something - maybe - who knows? Bottom line: NEVER GO fixed scope - otherwise you will get into trouble.

Software sucks. It takes to long to fail, it take to long to become really bad, or we just sack in sense of quality that we took to long to realize that is not working out. I like our body, clearly God is a way better engineer them us. Why? Because we have safe-built-in if something hit you fell the pain, but in software looks like we pretend there is no pain we take so long to realize it. I wish DEVOPS and Lean Starup make a better future to us, i wish you make our users and the world used to quickly deploys to production everyday, to faster, faster and faster improvements, thats could be the solution so no boddy whats to wait 3 months for a release or spent 500K bucks to have bad software in 9 months.

Someone needs get screed

When we go FIXED price, scope and time its like a WAR. Someone need get screed. So could be the customer because the vendor inflate the estimates and is get 100% more tham it cost. Could be the Vendor because the customer knows the software cost 1M and it gives only 250K so the vendor get the project knowing that wont fit the scope but does it anyway and them charge 3 times the price of the first contract because of CHANGE REQUESTS, thats the way to get the money back.

Maybe the vendor gets screed because it try to make it happens and try todo REAL agile into fixed scope, price and cost(worst thing ever you could possible do - i did - get screed) .
Maybe the customer get screed because the vendor deliver on time, on budget and with the correct scope the the quality sucks, software is awful and is not what the customer want(worst part of that is that thats a successful metrics for most of companies :( .

SO in the end of the day, someone needs get screed, could be the vendor only, customer only or both  but there is not happy ending with fixed scope, price and time.

So it`s a ambush


Whats the best way to safely survive an ambush? DO NOT ENGAGE. Thats a strategy, so you could use the industrial age dirty solution some companies use: Put managers todo the dirty job and as a director or business just focus on something else - its commodity in the end of the day so who cares? The customer does not want to change his methods and values and he is asked to fixed scope and price so how cares? Yeah companies do that. Its worng for me - but they do.

Some companies refused to take this kind of projects(ambush) as a engineer you could avoid working for this companies but i guess we wont have many companies to work in this world - so thats not a solution neither.

But maybe we can do it?


I though like that once, and tryed a couple of times but its hard - its very hard. Its hard get a win-win from a fixed scope,price,time contract.

So this is like the devil, you think you can trick the devil? Good luck - he will get you somehow one way or another. So its just a matter or time you cant hide forever.

So if for some reason you need engage in this kinda of projects - try to make it small as possible last than 3 months. Smaller the better - bigger its the size of the nightmare as you add weeks you are adding less and less chance to get out with win-win to everybody.

Okay - I still want to live with software - so what could i do ?


First of all do your part. Engage the resistance. Try to educate your company with lectures, events and all sorts of training to change they vision on software.

Try to bring your workmates with you, try to change the way your company manages software - Go kanban - Go Lean - Keep learning and try to improve things.

ITs hard, i wont lie, its easy just do nothing and just stay outside of the radar but thats changes nothing - and the world need change we need do better than this. This is blocking a lot of things - we need be able to overcome this, so dont give up - keep strong.

What it needs to get it right? Vision.

Vision is everything. You just need 2 people with vision and influence :-). If you got 1 guy into the customer thats knows whats he is doing and you got 1 guy into the vendor thats knows what he is doing you can make it.

I saw that happening several times - all create projects and most successful projects i worked was based into this simple assumptions and lucky blessed fact: 2 guys at leat - with vision. If you dont have that dont give up you still van build it - people eventually get tried to fail. I need admit so people have huge GUTS to keep doing the wrong things and dont care and move on - but eventually they changed.

There is no triangle - It`s a line!


TIME == COST because people in software houses make money by hours rates, So there is not difference between TIME and COST, since man-hours model is the 99% model everybody uses.

TIME is COST. COST is the MOST important constraint for 99% business, i would love someone approach me and says: do whatever you want i dont care about the cost - just he scope.

So what matter is the COST, so you will need to couple with a COST,  Them whats left? Its the SCOPE - you open the scope and make it flexible thats the way to still have software and dont do waterfall - FIX COST, OPEN SCOPE thats the model you should go for it. :-)

Control your Greed


IF you call for a GUARANTY you doomed. There is no suck a thing. So you will have a software in the end a kinda of - thats the reason todo AGILE, XP, Kanban because them you have REAL collaboration between vendor and customer.

Your SCOPE could be defined by USER EPIC and you agree deliver most of them of something like that, you still could play a bit with the quality but most will be doing more or less feature. This could could work and it work - I have some experiences with it.

THE KEY THING: Dont Get Greedy - why? In this model the RISK is shared with vendor and customer so the vendor whats deliver, the customer wants: CHANGE and new FEATURE and FIX BUGS. So it need to have a balance between this.  Another KEY thing is the SIZE, I love LEAN. Leans says reduce batch size, so as small this is better. So get a big project and break it into releases. Agree one release at the time and manage everyday - everywhere looking to the code and the software - thats the best way to mitigate risks.

Lean Start up and the MVP


We are getting this back to development. This should not be used by start ups only - i would say thats a waterfall-killer. So you agree in each release that should be small 1 month for instance and make a MVP.

So both customer and vendor agree on MVP thats a viable solution as long as you keep the M(minimum) small.

This needs to be re-established for each release cycle - thats a great thing so we gonna do more releases and thats the case for DEVOPS and likely have less useless features and this would contribute to a better software. Its the model getting back REAL agile, xp, lean and making the case for DEVOPS.

It`s all about having TRUST

TRUST is very fragile. So you need have a open-relationship and keep talking about things. This model only works with trust. So just open space to have Agile Coachs working here to support this model and to make lessons learned and improve things and make sure the issues dont repeat and both sides keep happy :-)

Deming(from Lean) used to say a system could take the best or the worst from people. So lets move on and keep improving the system as whole and maybe we can not only make your self's happy as professional engineers but make software better and help the world a little bit. :-)

Cheers,
Diego Pacheco





Popular posts from this blog

Kafka Streams with Java 15

Rust and Java Interoperability

HMAC in Java