What means RAD anyway?

ClimbingOnce upon a time, Rapid Application Development “meant” IDE. This was Turbo Pascal. One could way faster work with an integrated environment rather than with disparate programs trying to fit them together in order to form a toolchain.

After this was the Visual bubble. The Form Designer with an Object Inspector near to it in order to speed up the GUI development process. This was Delphi and Visual Basic…

But I think that Delphi remained mostly there whereas the methodologies to boost the developer’s productivity advanced.. And this is really bad because Embarcadero is in the (almost) unique position to control everything in the toolchain: the compiler, the linker, the IDE, the standard library and of course the language specification.

I don’t know any other company (except of Microsoft, of course) who can say such a thing in such conditions. Well, perhaps there are other open source projects or closed source companies but they doesn’t have the necessary coordination and focus and/or the necessary community. Well, Embarcadero has them all, it is upon them to leverage this.

But what means RAD anyway?

Let’s see first the Steve McConell’s definition:

To some people, rapid development consists of the application of a single pet tool or method. To the hacker, rapid development is coding for 36 hours at a stretch. To the information engineer, it’s RAD—a combination of CASE tools, intensive user involvement, and tight timeboxes. To the vertical-market programmer, it’s rapid prototyping using the latest version of Microsoft Visual Basic or Delphi. To the manager desperate to shorten a schedule, it’s whatever practice was highlighted in the most recent issue of Business Week.
Each one of these tools and methods is fine as far as it goes, and each can contribute to increased development speed. But to provide full benefit, each must be orchestrated as part of a full-fledged strategy. No one of them applies to all cases. And no one of them can measure up to certain other practices that are not commonly thought of as rapid-development practices but that nonetheless have profound development-speed implications.
Rather than identifying a specific tool or method, for purposes of this book “rapid development” is merely a descriptive phrase that contrasts with “slow and typical development.” It isn’t Rapid Development™—a magic phrase or buzzword. … It means developing software faster than you do now.
A “rapid-development project,” then, is any project that needs to emphasize development speed. In today’s climate, that description fits a lot of projects.

Steve McConell, Rapid Development

Well, as you see is all about humans.

So, in few words a RAD tool should support the developer in his human thinking, allowing him to concentrate on his human (business) which has to solve. The tool must obey to programmer not the programmer must obey to tool’s possibilities. A good RAD tool should favor the best practices and discourage the dangerous ones. And for this we need a lot of feedback. And I think that this is the most single important point in our industry today: write good code, cheap, fast. And we must pick all the three.

Of course there are many improvements which can be addressed in this area (stay tuned for more posts) but I think that, knowing the direction where Delphi is heading (ie. cross-platform), usability improvements and new features to the UML engine as well as to the Class Explorer would be a must. Closely related to this, a MVC pattern generator tied to an Object Persistence Framework based on the actual data which we have (IOW, on database schema, developer intentions etc. – see Ruby on Rails for a skeleton) with support in the IDE will make the things a lot easier.

Trying to decouple as much as possible the Presentation Layer from the Application Logic require more code to be written and we need tooling for that. Otherwise we’ll end up 99% of time using Delphi just like any other code editor which sends commands to a command line compiler.

Comments? Thoughts?

24 thoughts on “What means RAD anyway?

  1. I’m agree with you.
    Today “RAD” is not related to putting a Dataset in a form (or datamodule), choice a table from the object inspector list and to see your data into a DBGrid. This could be RAD in the 90′.
    Today’s RAD is more related to Define an entity of your business logic, define where (not how) must be persisted, and then display you data somewhere with some kind of databinding.

    My 2 cent

    • I am afraid the D in RAD for Teti means “Database” 🙂 RAD is not in anyway tied to databases, although in many business environments a database pops up more times you wish.
      Anyway, RAD is abstraction – a way to take advantage of the underlying technologies – which get more and more complex – without having to fight with the low-level technical details.
      But there’s a boundary where the abstraction is pushed too far, at the expenses of raw power. And sometimes raw power is all you need.

      • @LDS:
        Obviously, I cannot do an example for every use of RAD! So I’ve choice the database side. But, acording to you, RAD meens more that “R”apid “A”pplication for “D”atabase 🙂

      • In other words: RAD should allow the developer to focus on what, doing for him the how, but not hiding it from him and allowing changes, if the developer thinks that these changes are appropriate.

  2. One of the problems with RAD is that it is often confused with being Rapid Application Design instead of Rapid Application Development. It is very important if you want establish where Embarcadero should be going if this should include the design part.
    I think that was the problem with Borland. They tried to solve both and failed in both.
    Don’t think I wouldn’t love to be able to do both design and development in my favorite environment. I’m a strong believer in model driven applications, and with the other tools in the portfolio of Embarcadero they are in a position to go there.
    Delphi should however remain a tool for every situation and tying in frameworks or generators tend to always diminish focus on general development issues.
    It should be up to community and third-party providers to present solutions in that direction and Embarcadero should provide to means to interact in natural way with those solutions.

    • Do you think that having a visual design of classes limits the power of Delphi in any way, taking in account that you have the generated code, if the generated code follows the VCL guidelines (formatting, no noise added etc.)?

      • No. I don’t think that at all. In fact I have used ModelMaker Tools for years for exactly that purpose because it was missing in Delphi and is the direction I was aiming for with my remark about interacting in a natural way.
        To be more precise: Delphi should embrace and stimulate the use of frameworks and methodologies that improve productivity and closes the gap between Business and IT. However it should always remain an enabler for such things and not an implementer. IMO Delphi’s strength has always been to enable us developers to implement our ideas without really limiting us in the way we would like to do implement those idea’s.
        However Borland lost focus and choose a path in which it was reduced to the role of trend follower and only frustrating developers who saw all the possibilities .net and especially c# where providing. What I expected 5 years ago is only know starting to happen with delphi 2009/2010 and that is still catching up.
        Dropping ECO (bold) was, although I like the framework, a wise decision. Don’t make the same mistake again.
        Extending RTTI as it was in 2010 again opens up a lot of new opportunities in building advanced frameworks. Perhaps a concept like using delphi as a service for third party frameworks is the way to go?

  3. Unafortunately, RAD concept was a “boom” is early years of Borland’s Turbo and MS Visual tools, but, in my opinion, it is more a concept of making more in less time but not always well.

    RAD gives programmers freedom to avoid good programming practices. It is possible to create really “Frankestein” applications where data and business layers can “live” inside every form (presentation layer). RAD per se doesn’t encourages the use of any good practice, you can do whatever you want in the way you like.

    Of course, trying to follow any programming pattern involves more coding, that’s the cost to pay for. On the other hand, using RAD allows faster developed with not so maintenable code, that’s cost for speed.

    Anyway, Codegear’s Delphi and MS Visual Studio allows us to use or not the RAD philosophy or use design patterns. The resulting application in fact must solve the real world problem(s) it was design to solve. Final user doesn’t mind if it was poorly designed, he just want that the application do whatever it is supposed to do.

    • “RAD per se doesn’t encourages the use of any good practice, you can do whatever you want in the way you like.”
      That’s why I put the quote from Steve McConnell’s book. Because he emphasizes that in his opinion RAD is a methodology (a “good practice”) and not Form Desinger + Obj. Inspector etc.

      “Of course, trying to follow any programming pattern involves more coding, that’s the cost to pay for. On the other hand, using RAD allows faster developed with not so maintenable code, that’s cost for speed.”

      Imho, here comes the IDE (primarily), the language spec and the VCL which should provide tooling for this.

  4. I forgot to comment that Embarcadero’s strategy of deploying new versions of Delphi like if it was making pizzas without making deep changes in Delphi’s philosophy of work is a good reason to try other environments like MS Visual Studio.

    In VS, developer has tools to manage database connections, database models, business objects, etc. so coding becomes less important because the IDE allows us to maintain a constant style of design.

    On the other hand, Embarcadero’s Delphi keeps his structure and have lacks of this tools. In fact, VS can do ORM directly in our app. Something that Delphi can’t yet.

    But, Delphi Language per se give us a lot of features that Visual Basic can’t. That’s where IDE makes a difference.

    • Yes, I agree with you. The IDE nowadays should be an important part in the programmer’s workflow which should help in doing the repetitive tasks. But beware of making the IDE to “think” about itself that it is more intelligent than developer because then we have other troubles… 🙂

    • “In VS, developer has tools to manage database connections, database models, business objects, etc. so coding becomes less important because the IDE allows us to maintain a constant style of design.”

      Is is so? I think quite the opposite. Check out this question in Stack Overflow:

      http://stackoverflow.com/questions/695491/best-way-to-set-strongly-typed-dataset-connection-string-at-runtime

      Fixed connection strings inside external files, created by a “Wizard”, that you need a lot of work to change in runtime. Nice use of ” tools to manage database connections, database models, business objects” 😉

      Best regards

  5. “A good RAD tool should favor the best practices and discourage the dangerous ones”

    It annoys me when committees decide how programmers must work. A pure object model can in some cases be limiting; strict typing (as in the original TurboPascal) meant fighting with reality, and sometimes, and a GOTO really can be the best solution. Let experienced programmers make that decision. We are all adults.

    RAD in the Borland Delphi sense is really Rapid Prototype Development. Click together a form, add some glue code, and voila!

    Today, with everything being object oriented, the actual language syntax used is secondary, but can unfortunately put some people off. But PCs have become very powerful and it would be remiss not to use that power to assist the developer.

    Visual Studio truly has passed the Delphi IDE in many ways. Embi is catching up, but there’s a lot to do.

    On the other hand, few tools allow the developer to target native code so effectively as Delphi. As long as this remains so, I shall still use it.

    Many tools offer features that seem cool, RAD at first glance. Only after you spend some time with them do you realize they are not mature yet.

    • “It annoys me when committees decide how programmers must work.” (emphasis mine)
      Sure, that’s why I said in the text you quoted favor. I know how annoying is to have an IDE which thinks that’s smarter than you. That’s why I propose UML, Class Explorer enhancements and I didn’t say let’s get rid of text editor alltogether. Also, like I said in other contexts, there must be emphasis on what to do, having tooling on how to do it. For example, do you know all the mechanisms implied in an eg. TSQLTable.Post? I do only generally, as a principle. And for me it is enough. I know what is doing and not how. For example a welcomed RTL addition would be a TDataSet Scan method:

      
      myDataSet.Scan(procedure  //it uses anonymous functions
        begin
          myDataSet.Edit;
          myDataSetSTATUS.AsString:=''; //clear all the values in a field
          myDataSet.Post;
        end;
      
        end;
      
      
  6. Just recently I ran into one such RAD tool. And I was amazed by its functionality.

    It is from PCSoft. http://www.pcsoft.com and it is named WinDev.

    It has so many things to offer in the way you have described.

    When I compared that tool with Delphi from price and resource requirement point of view my first reaction was Delphi should be like what is WinDev. Both are priced high but their prices are very close to each other.

    Do check it out. WinDev has got Express version for unlimited time usage. I am currently playing with it.

    HTH

    • That’s exactly what I mean when I wrote “But there’s a boundary where the abstraction is pushed too far, at the expenses of raw power”. There’s a boundary where a RAD tool becomes a CASE tool and lose fexibility. It’s possible to create a very powerful RAD tool for a given class of application, but IMHO it’s impossible to create a RAD tool that allows you to code everything from low level utilities to database frontends in a “visual way”.
      I don’t mean those products are useless. If all you have to code is embraced by the product capabilities, the better. But if your needs are broader, you can easily it the limits of those products.
      And, believe me, if a company feels the needs to fill a product brochure with pretty women instead of tech details, I guess “under the dress” there’s very little…

    • Oh, no, not again… 🙂
      We discussed many times about WinDev in the .non-technical. It allows you a shiny start but if you what to do something that isn’t/wasn’t in WinDev’s sights then you’re lost. Mostly the French programmers can tell you their adventures with WinDev (PCSoft is a French company).

  7. UML is the current favored methodology. I really don’t think Embi should sink too many resources in this sort of thing. Who knows what the next big thing will be?

    By all means, provide and API to open up the IDE to 3rd party tool developers, but I think basic, basic IDE enhancements, the kind of thing you use every day, are far more important.

    Look at Visual Studio. Just simple things, like better Help, or better popup intellisense. In VS the user can even add intellisense using tags on his own functions, very easily. Such an easy-to-use commenting feature, yet I find this very useful.

    These are the things that Embi must catch up on. Everyday tools. Better ways to find the header of a function after you have edited the body’s signature. Or do away with headers altogether. Ways of declaring variables locally. Things that accelerate the day-to-day programming process.

    Leave UML and such things to the experts.

  8. Pingback: Community pulse: New ways to enhance Delphi « Wings of Wind Software

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s