Monday, May 23, 2011

Learn From What Other People Do

Some years ago I acquired the software source code with Private Label Rights for a program that would let you create your own simple software applications which you could then sell or give away as you pleased.  At the time, I was quite naive when it came to online marketing and I thought that I had struck gold.  There was already a popular program on the market, called Make Your Own Software, but to me it was quite expensive and lacked certain features that I would have liked.  Now, not only did I have the source code for a competing product, but I could modify, extend  and improve it to make it better than any other versions of it out there.  After all I did understand that other people would have also obtained the source code too, so it was my intention to add features that their versions wouldn't have.

As it turned out, the program was written in an early version of Microsoft's Visual Basic.  That wasn't really a problem - it's not a language I was familiar with, but it shouldn't take a professional software developer a long time to get to grips with it.

As I got into the code, something dawned on me.  I discovered that I had been supplied with only part of the source code.  You see the program worked like this:  There was the "application generator", and a "runtime" - a previously made "empty" application.  Basically, the application generator took all the information that you entered and embedded it in a copy of the runtime to produce the final program.

What I discovered was that the source code for the runtime program had not been supplied.  This meant that I could not change anything about the way the generated applications worked.  My dream of making a super-improved version of the program were dashed, and I left the source code to gather virtual dust on my hard disk.

About a year later, I decided to see if I could write my own version of an application generator from scratch.  It turned out to be a lot more difficult than I thought because I had no idea how to embed data into another program, so instead of wasting more time on it, I abandoned the idea.

Some years later, a friend told me that he had the source code to an application generator program and wondered if I could make some changes for him.  Sadly, it was the same one that I had, and he too had not been supplied with all the source code.

That same friend had some other source code for a different application that he had had written for him a few years previously, and we decided to work on that.  It was written in Delphi, which is my programming language of choice, so I was quite happy to be involved with this project.  The software, written by somebody else was complete, but my friend wanted to make some changes to it.  As it happens, it has changed beyond recognition now as we have developed the concept.

Incredibly, even though this was not an application generator, this program also worked by having a "generator" and a "runtime" and worked in exactly the same way as the application generator programs work - it embedded data into an existing program.  The difference is that this time I had all the source code that I needed.

I put 2 and 2 together and realised that I could use exactly the same techniques used by this program to make an application generator.  Within a couple of days I had developed a small test program and proved that it would work.  So now I am well on my way to creating my own software product that I can extend and improve to include features not available in any of its competitors.  And it's all thanks to learning from what somebody else had done before me.