Do you need to build a mission critical computer system for your business? Are you starting with a blank slate, so the first thing you have to ask your technical team is what platform and tools to use? For well designed, well built software, you can reasonably expect about 20% of its lifetime cost to go into creating it. About 80% of the cost is maintenance and enhancement. By making robust, highly maintainable choices for your foundations and tools, you can reduce the lifetime cost of the system substantially—and minimize your headaches!
Selecting the right foundations and tools are among your most crucial decisions. Your starting point is probably not hardware. Think about what your system must do, and the resources you have for building it.
You must decide which trade-offs make the most sense for you. Strictly speaking, some of your choices are not directly about the demands of your project. Some involve the future availability of upgrade paths, spare parts and expertise. Plenty of expertise is available in the marketplace for the tools that are most popular right now; but if those tools are not suitable for your needs, lots of readily available labor will not compensate for shortcomings in the tools.
So let’s begin by looking at the foundation of your system—the operating system.
What operating system is best suited? That will narrow the hardware and tools you can use. A few options:
- If rebooting once or twice a month to install patches is acceptable, you may want something ubiquitous and comparatively inexpensive like Windows.
- If processing speed and low overhead are important, and you have access to the right technical expertise, you may prefer UNIX.
- If the system must handle enterprise-class communications and data volume for business applications, you may want AS400 on a mainframe.
- If downtime is intolerable, you may need a special disaster-tolerant platform.
Sometimes Old Tools Are Just Right
While you consider this, try not to restrict your thinking to the newest products.
Why? Here are a couple of examples:
When the World Trade Center came down in 2001, CommerzBank’s headquarters were located less than a hundred yards away. CommerzBank was running its most essential banking applications on a properly configured OpenVMS wide-area cluster with shadowed (mirrored) disks. In an OpenVMS cluster, multiple computers act as though they are a single computer. Processing work and storage are spread across and shared by the member computers. The bank could lose a data center without a noticeable blip, so it had no interruption in service. With appropriate hardware and communication lines, computers in a cluster can be up to 500 miles apart–great for disaster redundancy.
OpenVMS was well established when I began working with it in the mid-1980s. It is highly secure and so robust that its computers commonly run for years between reboots. Many recent graduates have no idea what it is, cannot conceive of running five years without rebooting, and have never seen a “more modern” operating system capable of doing what the CommerzBank cluster did.
By contrast, due to Tropical Storm Allison in June 2001, flooding and a fire in Houston, Texas, took down both the primary and backup power sources for a major electronic transfer system. The system services a large percentage of automatic teller machine and point-of-sale transactions in 22 states. Those computers ran a more popular, lower cost operating system. Although disaster recovery plans were in place and a disaster data center was ready in the Dallas area, bringing the secondary data center online and resuming service took days.
University Education and Real-World Experience
Now you know why you should double check the opinions of your staff when you ask them to recommend the operating system, programming language, database engine, and other tools to be used in building your system. Double checking is especially important if your staff is young or has a tightly focused range of experience.
There are distinct limits to how much anyone can learn in a specific period of time, and computing is a vast field. No university can teach its computer science graduates everything about computing. For that matter, even the most experienced top notch computer expert can’t know it all, either–but the experienced expert has been learning a lot longer. Independent experts have often seen a wider range of technologies and ways of applying them than people in typical jobs, because independents get to see how more companies and groups approach their projects and how the projects turn out.
Fair warning: Some distinctly technical talk is next, but stick with me. This real life story will help you see what you need to find out before making your foundation decisions, and why.
At one project, the group I worked with tied itself in knots trying to take care of a procedural application written in C. That is a relatively low level language, not far above machine code. It would have been clean, easy code to maintain in a higher level procedural language such as FORTRAN. On the computer and operating system we were using, on average each line of C generated only 3 lines of machine code. Each line of FORTRAN generated 8, which means FORTRAN took care of a lot of details but C required the human programmer to do nearly all the details. That meant C left many more chances for the programmer to make mistakes.
To make matters worse, a portion of the software attempted to make the procedural language C behave like the object oriented language C++. It was convoluted and difficult for even the most senior programmers to update.
Eventually, the boss of the group told me that he was a programmer not long out of college when that software was conceived. He knew C and C++ from his degree studies, so that was what he recommended. He thought C++ was great, but the company was only willing to provide C. He personally wrote the especially ugly portion that tried to mimic C++.
He admitted those were mistakes, especially the C++ imitation. It should have been done in a higher level procedural language, where mistakes would be less common and the code would be easier to understand. Now he had to live with the budget and resource strains that came from his decision. He made choices which were harder to maintain than other choices that were available, simply because he did not know about the other options and did not think to inquire about them.
For well designed, well built software, you can reasonably expect about 20% of its lifetime cost to go into creating it. About 80% of the cost is maintenance and enhancement. By making a less maintainable choice, he increased the lifetime cost of the system substantially.
He shook his head. “I didn’t know any better. That was what I knew from college. All of us were right out of school. Nobody else knew any better, either.”
A Little Outside Opinion Goes A Long Way
You can still use a young team to build your system. There are some good reasons to want youth on the team—energy, creativity, comfort with some of the latest software. Besides, if your team is young when they build the system, you have the potential to keep original expertise on hand for a long time.
Don’t skip the double checking, though. It’s worth your while to bring in a consultant to look at what you want to do and give you some advice. Even if you don’t keep the consultant involved for the whole project, at least the consultant’s experience can help you make sure you’re going to use the right foundation.
When you’re tempted to skip that step, just think about how much that shortcut can cost in the long run.
Bonnie Huval Personal Website Cookie Notice
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Privacy & Cookies Policy
{"id":null,"mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/bonniehuval.com\/wp-content\/uploads\/2025\/02\/close-up-glass-with-money-as-tips-scaled-133x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Bonnie D Huval","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Bonnie's Tip Jar","form_subtitle":"entirely optional","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you *so much* for supporting what I offer here!","payment_confirmation_title":"Bonnie D Huval","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":"Some of what I make available here took quite a bit of work to pull together. If you want to use any of the material on my website, please use it with attribution and a link to it. Please avoid putting it on websites with a policy of feeding whatever they get into their AI engines. (Facebook and X are examples of such content hogs.) They would steal my work through you, and neither you nor I would like what they do with it. Thanks!","terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
{"date_format":"Y\/m\/d","time_format":"H:i","wordpress_permalink_only":"https:\/\/bonniehuval.com\/articles-and-essays\/technology\/choose-the-right-platform-for-your-it-system\/","all_default_visual_states":"inherit","modal_visual_state":false,"user_is_logged_in":false,"stripe_api_key":"pk_live_519vjE3HhU5m2IX7D6TDyZL7m2F5hu8GsJ5FSMdz5lokbMXEWqc2k7CHmCS7TiMfX1Wt7ZwAJ12HozPb9YoWA65iO00HwDOJx7Z","stripe_account_country_code":"US","setup_link":"https:\/\/bonniehuval.com\/wp-admin\/admin.php?page=tip-jar-wp&mpwpadmin1=welcome&mpwpadmin_lightbox=do_wizard_health_check","close_button_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/closebtn.png"}