About Software Development
Posted: Tue Oct 01, 2013 4:14 am
Hi guys, I'm not going to say much with regards to the opinions and claims being made about Command... but since I've worked in the defense industry as a software/systems engineer (mostly command & control stuff) and currently work in the information security field, I believe there are some things you should know in case you are not familiar with software development:
Creating software is complex. Software is imperfect (specially in its beginnings; in some cases it never ends up working!).
You wouldn't believe the amount of buggy software that have made it into mission critical applications, such as flight management computers, avionics, autopilots; firmware for things like gyroscopes, radars even weapon systems may run for years with "silent" bugs that are discovered (sometimes by pure chance) and fixed at much later dates! Not to mention critical software in the automation (nuclear plants) and healthcare industries! (pacemakers!). Things like CMMI, DO-178, ISO 12207 are there to try to improve the situation, but in reality developing quality software is hard! As longs as a human (programmer, coder, developer, wizard) is involved in the process of software development, there will always exist bugs (fact: Google has a 100% autonomous car solution to improve the safety and to optimize road traffic in the next few years, but no news of an artificial intelligence solution for developing software autonomously. Funny eh?). CASE (Computer-aided software engineering) solutions were hyped in the early 90s as the next big thing to solve the quality in software products and to even replace programmers... it never happened.
Software takes time to reach a good level of quality. Software development is expensive, very expensive in industries like the ones mentioned in the paragraph above. Sometimes software projects are never finished... big investments (millions of USD) thrown down the drain because of human factors (most of the time people don't know what they want and software projects are built on top of faulty or poor requirements analysis) ... and most of the time if you want your software to succeed, you just need to launch it! and there will be compromises down the road to "perfection"! Otherwise if you wait until "perfection" you will never launch a product, or if you do you will probably fail because you never got people involved in the process, and people will always play and break software in ways a programmer never imagined it. It will happen regardless of the amount of "use cases", "test cases", "stress testing", "assertions", "exceptions" or whatever you think might prevent a user from trashing your application. The only guarantee you may have (and I have no doubts whatsoever in this regard knowing the Warfare sims team since the HHQ days) is that as long as the bases of the software are properly designed and there exist a committed and competent group behind their creation, willing to support their software and their users/customers, then it's a matter of letting the product continue its evolution (never perfection tho'). The days when someone like Donald Knuth could code an application perfectly and bug-free in the first attempt are over, things have become much more complicated.
Many knowledgeable folks in this industry agree that software development is not and will never be a traditional branch of engineering. There are those who say software development is not engineering, nor science, nor art. It's a great mix of all three. I agree with that.
So... let's take a deep breath and sit back and play the game while the Command folks hunt down and squash the outstanding bugs and improve this fine simulation. For those of you who are angry about the bugs, disappointed with performance, or disgusted with the price, bear in mind the troubles that plagued the multi-billion 787 Dreamliner project. You'd probably travel the world on foot if you knew the glitches and strange bugs that continue to plague aircraft avionics in this day and age (pilots just know these and how to work around them).
Here's an amusing link for killing time: Software Horror Stories
regards,
Enrique
disclaimer: I'm a volunteer beta tester (late beta) now turned into a regular paying customer just like you. I did so the very same day Command came out. I have no relationship with Warfare Sims nor Matrix Games beyond this.
Creating software is complex. Software is imperfect (specially in its beginnings; in some cases it never ends up working!).
You wouldn't believe the amount of buggy software that have made it into mission critical applications, such as flight management computers, avionics, autopilots; firmware for things like gyroscopes, radars even weapon systems may run for years with "silent" bugs that are discovered (sometimes by pure chance) and fixed at much later dates! Not to mention critical software in the automation (nuclear plants) and healthcare industries! (pacemakers!). Things like CMMI, DO-178, ISO 12207 are there to try to improve the situation, but in reality developing quality software is hard! As longs as a human (programmer, coder, developer, wizard) is involved in the process of software development, there will always exist bugs (fact: Google has a 100% autonomous car solution to improve the safety and to optimize road traffic in the next few years, but no news of an artificial intelligence solution for developing software autonomously. Funny eh?). CASE (Computer-aided software engineering) solutions were hyped in the early 90s as the next big thing to solve the quality in software products and to even replace programmers... it never happened.
Software takes time to reach a good level of quality. Software development is expensive, very expensive in industries like the ones mentioned in the paragraph above. Sometimes software projects are never finished... big investments (millions of USD) thrown down the drain because of human factors (most of the time people don't know what they want and software projects are built on top of faulty or poor requirements analysis) ... and most of the time if you want your software to succeed, you just need to launch it! and there will be compromises down the road to "perfection"! Otherwise if you wait until "perfection" you will never launch a product, or if you do you will probably fail because you never got people involved in the process, and people will always play and break software in ways a programmer never imagined it. It will happen regardless of the amount of "use cases", "test cases", "stress testing", "assertions", "exceptions" or whatever you think might prevent a user from trashing your application. The only guarantee you may have (and I have no doubts whatsoever in this regard knowing the Warfare sims team since the HHQ days) is that as long as the bases of the software are properly designed and there exist a committed and competent group behind their creation, willing to support their software and their users/customers, then it's a matter of letting the product continue its evolution (never perfection tho'). The days when someone like Donald Knuth could code an application perfectly and bug-free in the first attempt are over, things have become much more complicated.
Many knowledgeable folks in this industry agree that software development is not and will never be a traditional branch of engineering. There are those who say software development is not engineering, nor science, nor art. It's a great mix of all three. I agree with that.
So... let's take a deep breath and sit back and play the game while the Command folks hunt down and squash the outstanding bugs and improve this fine simulation. For those of you who are angry about the bugs, disappointed with performance, or disgusted with the price, bear in mind the troubles that plagued the multi-billion 787 Dreamliner project. You'd probably travel the world on foot if you knew the glitches and strange bugs that continue to plague aircraft avionics in this day and age (pilots just know these and how to work around them).
Here's an amusing link for killing time: Software Horror Stories
regards,
Enrique
disclaimer: I'm a volunteer beta tester (late beta) now turned into a regular paying customer just like you. I did so the very same day Command came out. I have no relationship with Warfare Sims nor Matrix Games beyond this.