By Harry Keller
Editor, Science Education
[Note: This article was prompted by an email exchange initiated by Lynn Zimmerman on 1.13.13. -Editor]
This sort of question seems to be on my desk daily in many different guises. I began writing software in 1960 and never really stopped.
There’s no simple answer. Also, the “philosopher’s stone” of software, a way to create software without programming, has been sought after for decades without result. There are some teaching languages for elementary school that are like that but are too limited to be of much use in the real world. Do not expect to be able to drag-and-drop an “app” soon even though Eclipse for Java, and other GUIs (graphic user interfaces) for other languages, do something like that for the UI part of an application. It takes more to make the software really do useful work for you.
As originally coined, the word “app” in modern parlance refers to a small program written for the iPhone. This coinage has extended to all smart phones and tablets such as the iPad and various Android tablets. The companies responsible for these have severely limited what you can develop for them. You must write natively for them, and you have to learn the specific language and API (application programming interface) for each individually, and they ARE different. Few people have the time, inclination, and talent to do this well. The HTML5 alternative is available but won’t look as slick or peform as well.
An app is not really an application or an applet (a term that only Java seems to use). It has taken on meanings that I did not expect when I first encountered it. Mostly, it means a modest software program sold through an app store, but that meaning has been stretched and bent a bit as you’d expect in such a rapidly expanding and fluid area.
Professional software development is a discipline as is any engineering profession. The big difference is that you can practice this profession with a very small financial investment and can learn the basics from web sites. Developing the discipline at the expert level takes the usual 10,000 hours of experience and much more if you’re to become facile across a number of software areas such as GUIs, databases, Internet communications, and so on. However, truly understanding what it takes to produce and deliver robust, industrial-strength software requires that you work in a professional development environment for enough time to pick up all of the experience necessary. During one recession many years ago, I spent three years working on contract for a computer company fixing bugs in many of its software programs. I fixed over 100 bugs on one program alone in about three months. That experience sensitized me to what exactly maintainable software should look like. Make no mistake here. Unless you’re writing a throw-away program, you or someone else will have to perform maintenance on it and possibly long after you’ve forgotten many of the details of your design.
If you’re going to write software alone, you have to be able to do so much these days: GUI art, GUI design, software architecture, back-end software design, database design, write in several languages (e.g., Java, SQL, HTML, CSS), and test and debug the resulting software. Testing software (known as QA or quality assurance) is a discipline in its own right.
Unless your software is going to be tiny, you should leave writing it to the professionals. If you’d like to have some fun dipping into software engineering, pick something small and simple and just do it. If you have a friend who knows how, that will help when you hit the inevitable problems. This friend (or online support group) should review your idea first to see if it really is small enough to serve as an introduction. I’ve often had people ask for a “simple” change to software without realizing that they’re really requesting a major overhaul. I’ve also had people ask for a “big” change that took only an hour to do. Outsiders and amateurs rarely understand the true nature of writing software. (The same is true of so many professions that look easy, even teaching.)
Filed under: Application |