20. October 2012

Observation of software system: Starting with idea

Idea. Idea is starting point for life of software system. Pure raw idea and vision of future able ignite spark of hope that new software could work.

First stages of system evolution are very vulnerable. Idea need to form protective shell from enthusiasts who are helping to grow it. Idea also needs power and resources to survive. Enthusiasts must form some form of protective structure. It could be startup.

Idea is safe for the time being. It starts growing and eating more and more resources.

Time is passing. Enthusiasm is depleting. Dwindling resources could barely support life of idea.

Key turning point. Idea must transform into system which is able to sustain next phases of its life. It must turn into the system which is able to acquire new resources. Sell or bankrupt.

Luck, serendipity or deus ex machina. Somehow it starts selling. Early adopters begin to emerge. They like new system. They sense that it could become something great.

Idea is adapting protective its shell. Startup is no longer viable solution, because original enthusiasts are nearly exhausted. They spent many many hours and sleepless nights to push this idea forward.

Idea is transforming startup shell into company shell. First it is small, but it is growing.

Transformation will take some time. Software system is growing and consuming more and more resources. Balance of income and consumption is critical for survival of idea.

Maintenance. Software system has been around for several years. Idea prospers. New things were introduced with blinding speed, but this is slowing down over the time.

New changes in software system are causing pain. Idea doesn’t like it.

Idea must protect itself and its system. New defensive processes will emerge. Idea is able to deflect all dangerous changes with carefully designed processes.

System continues to grow and attract more resources. It is obvious that everything is ok.

Unfortunately entropy in software is growing. Hidden. Protected. Old parts of system are becoming legacy.

System starts to deflect even good changes by making them hard to implement. Legacy became so big that there is no way around.

Even minor changes must be introduced with careful precision of surgeon. Adding just one line of code to the system could take several days.

Legacy became burden. Development processes are slowing down. Maintenance is burning tremendous amount of resources.

This is a deadly trap. There is no way out. For some companies it is true.

One approach could be to set aside very high amount of resources. Develop wast change and then deploy it in one BIG STEP. It seems to be right! Welcome to booby trap.

More reasonable approach is to diverge small amount of resources from maintenance furnace. Remove clutter and legacy by small steps in the time. Keep a steady flow.

 

27. August 2011

Try to create aux.h file on Windows 7

Try it :-)

I was playing with one package from Linux. I grab source code of package using Cygwin. This source code contained one funny file: aux.h.

Windows version of Vim refused to open this file with error message: Permission denied.

Even Notepad refused to open this file.

Finally Visual Studio gave me interesting hint about this aux.h file name:

 

I tried to zip this file by 7Zip and extract it back. Result was that 7Zip decompressed file as _aux.h.

Interesting issue. :-)

20. April 2011

Productivity in software project drops at least to 1/2 after handover

It is quite clear that productivity in software project will fall down “little bit” when you hand over the project to somebody else.

New team does not have all the knowledge of original author and it takes longer time to solve project issues.

The problem is that this loss in productivity is not quantified and project managers relay just on some fuzzy feeling.

I found interesting talk given by Audris Mockus about Digital Software Archeology. He made deep research in the topic of productivity in software development and he defined several useful terms.

Audris formulate very interesting result of his research: Productivity after handover dropped to 1/2. This is quite important to realize. It affects project planning and resource allocation.

 

15. April 2011

jQuery workshop – FRI Žilina – slides

I was invited to give another talk at FRI Žilina. Previous topic was development for Google Android platform.

This time I focused on jQuery.Together with Michal Kaukič we started jQuery workshop. Attendees learned basics of jQuery in two hours. At the end they have running application with simple animation in HTML.

You can download slides in PDF version.

You can also download ZIP file with all demo applications.

I was using IntelliJ Idea IDE. It has very intelligent code completion for jQuery, JavaScript and HTML.

I suggest to download also jQuery Cheat Sheet, it is very handful manual.

I mentioned two interesting projects. One was Adobe Browser Lab which allows you to get snapshot of your web site displayed in different browsers on different systems.

The second project was jQuery Mobile. This project could help you to create applications for mobile environment.

I provide this workshop also in form of training for companies. You can find more details about available trainings at sinusgear.com.

Do not forget to watch lauch of Adobe CS5.5 Dreamweaver. Adobe promised to provide support for packaging JavaScript application as a native app for Apple iOS, Google Android and Blackberry.

29. March 2011

Cloc – how big is your software project?

Do you want to know how big is your software project?

There are several tools that could give you the answer.

Here is the example how to use cloc tool.

Usage: cloc <directory>

For more information pay a visit to cloc.sf.net.