Thursday, October 18, 2012

Software building as Industry not handicraft

As it is known for all the people who work in the software, programming is the main tool for building application, games, online tools, etc... Each application is a master piece and it requires the complexity of the human mind to craft its features and making it work in the right way.


A lot of tools these days are available for making the programming a simpler task. But programming is still programming. I managed a software house for two years and I know that at the end of the day if you don't have a smart developers, you will stuck and you will fail in deliver the application for the client even if you are the best manager in the world. You need the developer to write the code for you.

Development is not an easy task; especially that you relay on how the developer is thinking. And the developer is not always thinking in the right way. This is the nature of the human beans.

And what was killing me the most; that a lot of the developer time wasted in repeated tasks over and over, especially when you work in a standard database business solution such as HR, Payroll, or any business work flow. The developer is repeating the work over and over and all what he is doing is just data entry for the database layer code, business layer code, GUI code! 

Of course there are a lot of code generators these days helping you in writing 60% of the code. But still you need to write code for a lot of things like style, validation, certain business roles, browser compatibility, efficiency, mobile devices, etc....

Also what will happen when the client asks for a simple change like new field in a certain form! You have to back into your development center, fix the database, run the code generator, fix the integration with the GUI, then compile the code and send it to the client another time! WAW, this looks as it will take a life time to finish!
Oh! And another big problem we have are the multi-languages interface. This is one of the worst things to deal with, especially if the client asked it after we deliver the application for him. And in my region this happen a lot and most clients asking for interfaces in both languages Arabic and English.

Another time there are solutions for all the problems I mentioned, but even it is very expensive or very hard to deal with. Such as RubyOnRails, SharePoint InfoPath, IceCode, Code Complete, PHP Cake, and much more.
But I am thinking in a totally new thing, what if we say that we have a certain type of application engine or builder which will be directly installed on the client machines or the development center machines. And we start build the application through the following steps:


  1. Login to the Engine.
  2. Determine the languages which interface will use.
  3. Add new application by telling the engine to add it through one step dialog. (let us say add a new HR application)
  4. Tell the engine using one page wizard that we have an object or business entity in the HR application called Employee and I care about his name, email, address, and phone number.
  5. Use another wizard in the engine to tell it that we have two users one with read only privileges and another with full privileges. Let us say that now we have user1 and user2.

Now imagine login to this engine without compilation, deploying, or any other step using user1 login information and finding all the application is totally ready to be used including filtering, validation, browser computability, etc... Wouldn't this looking great!

Only 5 steps are what I need to build my application. Why I need a lot of steps to do that?! Why I have to focus on the coding problems rather than focusing on the business and application itself?! All of this time and money is wasted on writing millions and millions of code lines where I should focus on the business itself not the technical stuff!

This is how software development should be. The developer should focus on building the business rules not the technical stuff.

Ok, I know that there are a lot of application builders like LightSwitch, Aware IM, Apitfy RAD, etc... But nothing in the way I think of.

What I am thinking of, is something much simpler and has more potential and scalability than these available application builders.

In the software house I had, we start building this dream and we got wonderful start point. The engine I dreamed of is now a reality. The following video shows you how we used our engine to build a simple application using the 5 steps I mentioned before.




Now we shut down the software house which built this application for financial reasons. I was the architect of this dream and I don't want to see it die. So I will share with you how we built this engine and the technology behind it through several articles in my blog and other places.

For more information please don't hesitate contacting me on hasanhalabi@gmail.com.

No comments:

Post a Comment