Software for a Blue Sky
I realized at a young age that computer software could indeed be beautiful and have a positive impact on our world. In grade school I was put in a remedial reading class because I had difficulty reading out loud in class. It may have been because I can be incredibly shy in intense social situations. Well, having my peers listen to me read was intimidating to me back then. Anyway, I aced all of my remedial reading lessons usually finishing early. Since I had extra time, the instructor let me write some simple programs on the computer that was used to run some teaching software. That is when the programming bug bit me. I was hooked. That enthusiasm followed me to college where I studied computer science. The sun shone brightly in my blue sky. I ravenously studied algorithms and software architecture. I read books outside of the assigned course material. I experimented with new ideas. I wondered what software was like in the real world. I was excited by the promise of working on computer software that could make a significant impact on society. In real world there are storm clouds in the skies. While I hate to say that my enthusiasm has diminished, I prefer to say that I learned a number of lessons over the years. There are problems that computers cannot solve. It has been shown that it is impossible for a computer to decide whether statements in arithmetic are true or false. Computer software is written to tackle real-world problems. A vast majority of software is written to meet business problems. I do not believe that custom software will become a commodity because business problems are never the same long enough for the proposed solutions to be economical. The ultimate product of a software project is an executable. But that product is not useful without good documentation. Documentation is often overlooked. Open source documentation is underappreciated. I will never forget the sinking feeling the first time a colleague told me he did not need documentation since his code was self-documenting. Writing great software involves managing complexity and balancing design decisions. Programmers tend to eliminate redundancy by refactoring common code. So, if new code is necessary, it will be unique and will increase the complexity of software. A good design will mitigate how complex a system needs to get in order to meet its goal. Writing software is limited by time and budget. For example the work on Y2K software had a deadline of New Years Day 2000. A disciplined company has a regular release schedule of software. As a manager put in once at some point you have to cut the baby and deliver a product! For all of the dark clouds there is still a reason for software architects and engineers to get out of bed in the morning. There are problems for which elegant algorithms do not yet exist. In fact there are problems that people have only imagined for which no software exists. Futurists imagine a world, for example, with flying cars. In order for flying cars to be as easy to use as conventional automobiles we need sophisticated computer software. I do not think the futurists picture a generation of people spending time to learn to use a vehicle that is as complicated as a helicopter to operate. I regain my enthusiasm when I think about the challenges that the world continues to face. Friends, I want to write the computer software that rises to meet them and makes life better for us all. Posted at 4:21 PM
|
Search
Recent Entries
Merry Christmas 2008
Video Games That are Freely Available Host a LAN Party Mines of Kevos For the Veterans Deep and Wide Heroic Adventures Glad That I Was Born Creative Limit Archon 32 Recap (Older Entries) Other Journals
License
RSS Feed
|