Life is a software, Society is the platform
Body is the hardware, Beware! Load is not uniform
Wrote the above lines while trying to draw parallels between Life and Software.
You cant see a software, you can only experience its output, and so is life. Software is the soul of hardware.
What is a hardware, without a software? What is a body without life in it?
You can see hardware and can measure the load on it and see it wear and tear, and so is human body.
How a software runs depends on the platform it runs. How our life passes depends on the society we live in.
How a hardware runs depends on the load it can handle, and how our body performs depends on the fitness it has.
So first things first. Health is Wealth and much more than that. Call it gym, yoga, morning walk, jogging, dieting, fasting or whatever you can. Make sure a fitness mantra exists in your life.
No matter how good your software is, if the hardware fails or underperforms or is unable to bear the load, then so does the software which comes down crashing. Similarly no matter how well planned or well performing your life is, if you dont take care of your health, your life comes crashing down too. You cant eat gold biscuits when you are hungry.
If you want the greatest performance from your software, then greatest should be your hardware too. An odd combination of this causes the system to hang. And so if you want to achieve the greatest heights in your life, then absolute fitness is a must for your body so that you dont waste your time by resting to overcome an illness. Time is precious, both for a software and for our life. Database Software performance is measured based on how quickly it can run a complex query, and the performance of our life is based on how quickly can we find answers to the most complex questions or problems we face in life.
Make life configurable and alter yourself to accustom to your surroundings. The best of the breed software which outlive others in terms of generations are the ones which not only run fast, but run everywhere – the cross platform ones which can run on a variety of platforms be it windows, linux, macintosh like Java. So tomorrow even if one platform dies away the software still survives since it can still run on other platforms. But if a software gets tied to a platform, then the death of the platform would also measn death of the software. Similarly for you to survive always you should be able to run in a variety of societies. Not just be a roman in rome, but slowly convert everyone in rome to be like you.
People, Governments all embrace Open Source Software with open arms, Not because they are mostly free, but because they dont hide anything. To be liked by all, make your life an Open Source. Not to mean give up your privacy, but to mean not to hide your thoughts. Be bold to speak up your mind. But lo beware, most companies and businesses usually do not embrace open source software quickly or readily since they usually dont have dedicated support. So does being open in life. Established institutions and systems in life do not like revolts or revolutionary ideas. They hate those who oppose the norms. So be careful to strike the balance. Make sure that the quality of the open source software is so great that it doesnt requires any support at all. Make sure your thoughts are solid, have great analysis and factual background. Then it will become a mass movement like Mozilla and Linux. You will find institutions supporting you.
Thorough testing of a software is essential before releasing it to ensure success. Make sure the plans in your life are carefully designed and validated before executing them. Sometimes a revolutionary idea untested till then is used to create ground breaking software. The first database, the first operating system, the first browser were all created by such untested ideas being tried. Most such ideas failed, but the ones that clicked outshined the failures. So is life. Many a times you will have to take chances to plan and design something which you havent done earlier in your life. It may or may not succeed, but you will have to go by your gut feelings. The catch is to take calculated risks, even though nobody can well define this term. Always keep asking yourself, when was the last time I tried something new?
Too much of memory load causes the software to crash and overloads the hardware. Do not allow memory leaks or memory loads in your life. Past is past and it has to be quickly garbage collected as soon as it goes out of your life’s current scope. Neither a software not can life handle too many things at the same time. Each thread costs processor cycle, every byte in main memory occupies valuable RAM space. Only what is required for your current activity should be in the main memory of your life. Dont let your life to be bogged down by unnecessary memory load by wasting your time worrying about the past happenings.
Too much of work overheats the hardware and will ultimately crash your system. All those carefully built software will be of no use then. Too much of work overloads and kills your body, and no amount of success you have achieved in life at the cost of your body will be able to save it. So just like the way hardware has cooling systems, just like the way computers are shutdown, give your body regular rest, have vacations, have fun. Software needs a restart and so does our life as and when necessary.
Sometimes we find that a software design is flawed and the entire software is then redesigned and written from scratch. So does life sometimes requires a complete redesign and re-alignment of our goals and we have to start from scratch. There are no hard and fast rules to develop a software as long as it works as expected. You can use either a waterfall model or an extreme programming approach or an incremental build life cycle. So is life. There are no hard and fast rules to succeed as long as you enjoy what you are doing which is also the case of designing a software. If you want to get something that you never had before, then do something that you had never done before.
No design is perfect and all software have bugs. But the catch is to fix a bug as soon as you find it. The sooner the better. So is life, no design is perfect and you are bound to have issues or bugs no matter how well you have planned it. But the one who succeeds sooner will be the one who addresses issues quicker.
No software will succeed if it is used to do something which it wasnt built for. A database server shouldnt be used to serve web pages. There are webservers specially designed to do that job. A virus scanner cannot be used as a firewall, nor a notepad be used to draw pictures. So is life. Do what you know best, if you are a runner, run.. If you are a bell, ring. Do not waste your time and try to get back to your taste as soon as possible if you arent already there.
Software has beta lifecycles. So should our life. Just like the way a software spends its life in incubation to be tested before being released to the public, so should our life contain incubation periods where we test our designs before making it public.
A software whose requirements and goals are not clearly defined during design is bound to go into long never ending lifecycles of development and many a times so long that by the time it is ready it is outdated and hence will never gets released. So is our life if we are not clear of where we are, where we want to go, which is the best path for that and do I have time to go so far? Without these considerations we will only go through our life, not grow through our life and will vanish without a trace.
Programming today is a race between software engineers stirring to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning.