Home Up F/C Conversion Interface Design Offensive Programming Zero Defects? Code Maintainability Encapsulation Comp. Aided Disaster The Silver Bullet Clarion for Dummies DevCon 97 EuroDevcon 97

 

Productivity @ Large

Target App : 10 files, ave 20 fields per file, 3 keys & 3 foreign keys

Description Mins /Task # of tasks Total Hours
Load file 1 10  
Add Validation 0.5 200 (10*20)  
Relations 2 30 (3*10)  
Data Corruptions 30 11 (220*5%) 5.50
Decent Dictionary     8.34
Wizarding 10 1  
3rd Normal form in lb

(Add File, Populate Field)

1 60 (3*20) 1.00
Column width change

(Widen window, buttons etc)

3 20 1.00
Re-order tabs 3 10 0.50
Delete unwanted fields 3 20 1.00
Locators (incremental) 3 40(3*10+10) 2.00
Icons on buttons 0.5 120(20*6) 1.00
Print & QBE buttons 2 20 0.66
Decent Browses      
Browse Problem Again!     7.33
Lookups (Combo)

Delete entry, pop combo (and prompt) align, map vars

5 30 2.5
Delete Field? (Shuffle) 20 3 1.00
‘Logical’ tab usage 30 3 1.50
‘Req’ fields blue 0.5 200 (20x10) 1.66
Decent Updates     14
3rd Normal form reports

Change header, shuffle columns & furniture

5 90(10x3x3) 7.5
Totals, deletions etc     7.5
Compile / run / test …      
Total     44.7

Why should I spend a grand? (1K)

Well, if marketing want me to cough up that kind of money the product has to pay for itself, and soon. Christmas is the sticky time of year so assuming I splash out now I have 6 months to make up the damage. I can probably pull in 2K per month, so to make up the K I lost I need to gain two billable weeks. IOW I need to be 10% more productive.

Can TS deliver?

Decent dictionary : 8.34 hours.

Relations, validation & no corruptions. => 0.17 hrs

50 hours goes to 42. 16% improvement. Hourly rate goes up?

What about new data? Field pools & picture pools & data modeller.

Is that compelling?

Rational & logical that 16% is compelling. Unbelievable. People do dcts then forget them. What you need is something you work with every day that makes a difference. Where the machine is taking away some of the grunt. 3rd normal form :

Currently we populate the longs, and if there is a key on those longs we populate a sort order for that.

We have added a couple of new bits of syntax to the user options in the dictionary.

On subject ID field : DISPLAY(Sub:Title)

On author ID field : DISPLAY(Aut:FirstName,Aut:LastName)

Browses populate secondaries, update forms use a drop combo or lookup button and the report wizard populates the secondaries.

Once only work on dictionary, better yet once only work you may not have to do …

Description Mins /Task # of tasks Total Hours
Load file 1 10  
Add Validation Automatic   0
Relations Automatic   0
Data Corruptions N/A   0
Decent Dictionary     0.17
Wizarding 10 1 0.33
3rd Normal form in lb

(Add File, Populate Field)

Automatic 0 0
Column width change

(Widen window, buttons etc)

N/A 0 0
Re-order tabs 3 10 0.50
Delete unwanted fields 3 20 1.00
Locators (incremental) 3 40(3*10+10) 2.00
Icons on buttons 0.5 120(20*6) 1.00
Print & QBE buttons 2 20 0.66
Decent Browses     5.5
Browse Problem Again!     5.5
Lookups (Combo)

Delete entry, pop combo (and prompt) align, map vars

Automatic 0 0
Delete Field? (Shuffle) 20 3 1.00
‘Logical’ tab usage 30 3 1.50
‘Req’ fields blue 0.5 200 (20x10) 1.66
Decent Updates     9.66
3rd Normal form reports

Change header, shuffle columns & furniture

Automatic   0
Totals, deletions etc     7.5
Compile / run / test …      
Total     22.83

50% improvement on original productivity.

Double your RAD, but get it right. The wizards now produce code that is very functional, totally reliable and utterly predictable. In fact, dead boring. The problem with wizarded code is it all looks the same. You can have any screen colours you want as long as it is black on grey. Any screen layout you like as long as it the default. You like 13 dlu buttons rather than 14? Tough. From what I’ve show you so far the apps are just as boring as ever, it is just the RAD that is startling. And even that isn’t that spectacular. Sure we are industry leaders anyway, and a 50% improvement is well worth the entrance fee, but it is generally acknowledged that if you want a revolution that can shake the industry then you need a whole order of magnitude. If you are 10x quicker then it radically alters what you can do, 2x just makes life easier.

So what I really want is a new kind of borg that does everything I’ve seen so far, but that also allows me to completely re-design the way my app works, brings my visual interface cruising into the late 90’s and at the same time reduces the amount of work I have to do by a factor of ten. And, believe it or not, that is exactly what we have.

<Show borg>

Notice a standard wizard type interface.

Defaults button :

Description Mins /Task # of tasks Total Hours
Load file 1 10  
Add Validation Automatic   0
Relations Automatic   0
Data Corruptions N/A   0
Decent Dictionary     0.17
Wizarding 10 1 0.33
3rd Normal form in lb

(Add File, Populate Field)

Automatic 0 0
Column width change

(Widen window, buttons etc)

N/A 0 0
Re-order tabs 3 10 0.50
Delete unwanted fields 3 20 1.00
Locators (incremental) Automatic   0
Icons on buttons Automatic   0
Print & QBE buttons Automatic   0
Decent Browses     1.88
Browse Problem Again!     1.88
Lookups (Combo)

Delete entry, pop combo (and prompt) align, map vars

Automatic 0 0
Delete Field? (Shuffle) 20 3 1.00
‘Logical’ tab usage 30 3 1.50
‘Req’ fields blue Automatic   0
Decent Updates     4.33
3rd Normal form reports

Change header, shuffle columns & furniture

Automatic   0
Totals, deletions etc Totals Auto   2.5
Compile / run / test …      
Total     8.88

A factor of 5. Close but no cigar

Let us put a factor of 5 into context. In our 50 hr scenario, the spec is in the e-mail Monday morning. Work all week, skip lunch hours, stay and hour late each evening and the program is just ready for testing by the weekend. The following Monday irons out all the problem.

Now the memo comes Monday morning. By elevenses you have the app working to demo-level which enables you to flush out spec flaws leaves the afternoons for all the exceptions. Tuesday through Friday down to the Golf club….

Let us look at what our development now consists of : Exceptions. Essentially our Borg is an autopilot, that will cruise through your development schedule doing everything your way. The only time you have to step in is when there is an exception to the information available in the dct or in app styles. And your day is spent hacking those.

Now, as the astute amongst you will have spotted I have one button left. This is your detail tree. You could consider it to be the ‘work list’ your Borg is going to implement. And you can hack & change to your hearts content. You do need some work, by definition, but you specify at a higher level (I don’t want this field on this report) and the Borg does the rest. You can also change any of the defaults you require to be locally applied.

Description Mins /Task # of tasks Total Hours
Load file 1 10  
Add Validation Automatic   0
Relations Automatic   0
Data Corruptions N/A   0
Decent Dictionary     0.17
Wizarding 10 1 0.33
3rd Normal form in lb

(Add File, Populate Field)

Automatic 0 0
Column width change

(Widen window, buttons etc)

N/A 0 0
Re-order tabs 1(Semi) 10  
Delete unwanted fields 1(Semi) 20 0.34
Locators (incremental) Automatic   0
Icons on buttons Automatic   0
Print & QBE buttons Automatic   0
Decent Browses     0.84
Browse Problem Again!     0.84
Lookups (Combo)

Delete entry, pop combo (and prompt) align, map vars

Automatic 0 0
Delete Field? (Shuffle) 1(Semi) 3 0.05
‘Logical’ tab usage 5(Semi) 3 0.25
‘Req’ fields blue Automatic   0
Decent Updates     1.11
3rd Normal form reports

Change header, shuffle columns & furniture

Automatic   0
Totals, deletions etc SemiAuto   0.5
Compile / run / test …      
Total     3

So there we have it, an automated assistant that produces apps the way you want, in one tenth the time it takes you today. And gets it right first time, everytime. We have a product that is evolutionary in its’ usage but revolutionary it effect. So what do we do now? Start getting flash.

You see a lot of the exceptions you would change in the detail tree are really dictionary specific rather than application. What do I mean by that? Well take our book file, with 3 keys, primary, authorid & subjectId. You will never want a book browse sorted by authorId, only by author. There are some fields you will never want on a report (such as subject Id) but you might want on an update form to hasten user entry. IOW quite a few exceptions are not really exceptions at all, they are simply high level data concepts that didn’t get into the dictionary. So, we’ve put them in the dictionary. Again the user options field is used to allow you to specify additional sort orders, which fields should (and shouldn’t) be populated in different procedures. To specify logical groups for fields so that the update tabs are populated logically.

Now these won’t always be enough, you always need the override, but let us assume our dct is well specified and let us see what effect it has :

 

Description Mins /Task # of tasks Total Hours
Load file 1 10  
Add Validation Automatic   0
Relations Automatic   0
Field twiddles 2 10 0.33
Data Corruptions N/A   0
Decent Dictionary     0.5
Wizarding 10 1 0.33
3rd Normal form in lb

(Add File, Populate Field)

Automatic 0 0
Column width change

(Widen window, buttons etc)

N/A 0 0
Re-order tabs Automatic   0
Delete unwanted fields Automatic   0
Locators (incremental) Automatic   0
Icons on buttons Automatic   0
Print & QBE buttons Automatic   0
Decent Browses     0
Browse Problem Again!     0
Lookups (Combo)

Delete entry, pop combo (and prompt) align, map vars

Automatic 0 0
Delete Field? (Shuffle) Automatic 0 0
‘Logical’ tab usage Automatic 0 0
‘Req’ fields blue Automatic   0
Decent Updates     0
3rd Normal form reports

Change header, shuffle columns & furniture

Automatic   0
Totals, deletions etc Automatic   0
Compile / run / test …      
Total     0.88

50x faster, and for the second application ….?

The Christian Counter

Top Christian Web Sites The Fundamental Top 500