Welcome to my new Blog, “The Software Developer” !
This blog will be about my experiences as a programmer and I hope to be able to share with you some of the things I have learned over the years.
The best way to start is to give you a little history about my programming experience.
In my last year of high school I was exposed to programming in BASIC in an advanced math class. This was in the 70′s, long before the computers of today. We has access to a local colleges main frame computer, via a teletype terminal (no screen, just a printer). Later when in college I took a class in programming (Fortran if a remember correctly) and code was entered via punch cards. I left college and I don’t have any computer degrees, but I had my start in programming which would eventually find its way back into my life in the 1980′s.
When the “home computer” revolution began, I got some great deals on a number of home computers, the Commodore 64, TI-99 and a few Atari 400′s. I decided to open up a small office and to teach local people how to write Basic programs on these computers. While not a big success, it brought me into contact with a local company and their quality control engineer who needed a programmer to write some software which interfaced a shop machine with a computer to download test data. Even though we have a local college which taught computer science, he could not find anyone who could accomplish the task, so he gave me a try. Probably my two biggest strengths (when it comes to programming) came into play then, (1) I am a quick learner and I know how to do research and (2) I have an excellent math background which I believe is crucial to good programming.
To make a long story short, I started writing all sorts of data retrieval and statistical analysis programs for this engineer. He really loved how I could write software which generated some complex graphs on their dot matrix printers (this was on CPM based computers).
I began my new trade as a custom programmer and over the years I wrote software for everything from mom and pop operations, like a local video rental store, to software for engineers and manufacturing. There are at least 3 local businesses who even today are still using software I wrote for them in the mid 90′s (2 DOS apps and one a hybrid 16 bit Windows which emulates a DOS app).
I have to say that I was (and still am) a bit unique in how I developed software. For one, I would write the custom software for a customer totally at my expense (my risk) and told them, when it was done if they didn’t like it they didn’t owe me a penny. If they wanted it, they simply would pay for it. Not one customer ever failed to pay me for my work. It forced me to be exceptional in my software design, because if they didn’t like it, I would lose big time (thousands of dollars in some instances).
There are a lot of experiences I can share with you about designing custom software, but that will simply be for another time.
But let’s discuss some of the features of some of the software I wrote and how I created them.
There is not a lot of things you can do with text based software, but I found ways to push the limits. I designed things like popup screens, scrolling listboxes, drop down data entry screens (imagine a combobox in Windows which dropped down a Listview), etc. all in DOS applications in text mode. I wrote my own printer drivers for the common printers of the time (HP Laser, Epson and IBM dot matrix). I wrote all my own proprietary database engines from scratch. I would resort to writing in assembler (machine language) when necessary for some of the UI stuff. But amazingly, all my software (except assembler routines) was written in BASIC!
I started with GWBasic (on CPM), then QBasic, Quickbasic compiler and then PDS 7.1
I even wrote a “family friendly” video game called “Chopper Pilot” (a rescue helicopter game) for the Commodore 64 computer, which I sold to a popular magazine (Compute Gazette) in the late 80′s. I had to learn 6502 machine language to do this and I wrote my own compiler first so I could write the game.
I think a good understanding of machine language is beneficial, even if one uses a higher level language for development.
Today I write development tools for use with the Powerbasic compiler, for Windows.
Suffice it to say, that programming, in my opinion, is more than simply knowing how to write some code in some programming language. It is more than simply knowing how to build applications using a drag and drop environment where you just drop in high level components (which someone else wrote).
Programming is an Art!
It requires logic skills which are not easily taught.
It requires even more than coding skills, but the ability to examine a human task and to be able to break it down into logical steps which can then be coded.
Programming requires a degree of modesty!
Because a programmer needs to be willing to learn himself, rather than be the “keeper of all knowledge”. Even if one is exceptional at coding, you still have to be able to put yourself into the shoes (so to speak) of those who will use your software. For example, one of those custom applications I had to write years ago for a local business, was going to be used by nice older lady in their office (who did all the paperwork) who had never used a computer in her life. Even the owner of the company had little or no experience with a computer. I had to be able to write an application which didn’t require any written manuals, but instead could be taught to a novice to computers in just a few short hours of personal training. That nice older lady is still working in that office today, 18 years later and still using that DOS app I wrote (on a Windows XP PC though).
(Click image to see entire image)
The goal of this blog will be to share some of that experience I have gained over the years. The way I write software, my views on programming and the techniques I used will likely be out of the ordinary for any of you who are college trained programmers. I am a self taught programmer with real world experience. I learn things as I need them. I am not a fan of some of the common practices in programming today, you will find out. I also have high standards for the software I write. If you can learn anything from this blog, I hope it will be helpful to you. Please remember, that while my experience is quite extensive (today I am experienced API programmer), it does not mean I am always right. Often there is more than one way to handle a task. But I do feel that some of the things I have learned over the years is valuable, so feel free to try any of the suggestions I may make in this blog.
Thank you for visiting “The Software Developer”!
Date: November 22, 2010