Day 022: Observations to date

Today I'd like to do something a little different: rather than take another chunk out of the tutorial, I'd like to offer some general observations on what I've seen so far in WinDev.

Complaints

I'll get the bad stuff out of the way first. 

The biggest issue I've had with WinDev is that it stores pretty much all program code and data in binary format, from queries to window definitions to classes. I don't have any reason not to trust WinDev's editors and storage mechanism; I just like to have the option of viewing source with my own editor, or putting up code on a GitHub repository as I've done with the DevRoadmaps Clarion Library

I wish WinDev were more open, although clearly this isn't going to be a problem for everyone. 

I've found the IDE to be generally stable. I've had a couple of crashes, and I've seen others have a few crashes as well. But on the whole I think it's quite reliable, and comparable to my experience with Visual Studio. 

The runtime libraries

The runtime code (the DLLs you need for your app to run) is pretty big; 40 megs or so to get a pretty simple CRUD app deployed. 

There's a lot of runtime code, however, because the functionality included with WinDev is remarkable, from a rich set of controls to libraries for many commonly-needed program features. There isn't much of a third party market for WinDev because the product does so much out of the box. 

You have a lot of options for prettifying your applications, and WinDev makes it relatively easy to create apps that look at least respectable. You don't have to be stuck with battleship gray. 

Code generation

Obviously the ability to generate code based on your analysis (dictionary) is most useful, but these days I don't worry nearly as much about code generation as I once did. 

All business apps have a certain amount of duplicated functionality. All browses, all reports, all forms do the same sorts of things. So yes, one way to deal with that is to generate the same sort of code over and over, with minor variations for the particular purpose at hand. And that's where code generation tools provide the most benefit. They're busy writing thousands of lines of code while you cash the checks. At least that's the idea.

But code generators don't have nearly as much to do as they once did. Their jobs are becoming less important; a lot of what they used to do has been taken over by code libraries. These days a code generator isn't all that likely to write all your code for you; instead, it'll help you assemble an application out of existing building blocks. Blocks that you can also use relatively easily by yourself. 

So yes, WinDev has code generation, and yes it can be a help. But there's a lot of stuff in WinDev that's just as and probably more important. 

Code reuse

I'm huge on code reuse. And WinDev lets you decompose an app into a lot of nicely reusable pieces such as queries and UI components. There's also the usual support for classes (although again I'm annoyed that I can't save these as text files). 

Code testing

I'm huger on code testing. WinDev's support for automated tests, both of UI and non-UI components, is something every developers should be using. 

Project management, team development

Beyond providing a programming toolset, WinDev also has management tools to help you see the status and health of your project (closely tied to the testing capabilities). With SCM, WinDev's code repository, you can more easily share code between projects and developers. 

Multi-platform support

The ability to share code across platforms including mobile devices such as Android and the iPhone is a clear benefit. And for Windows desktop developers, the ability to create 64 bit applications is a big marketing advantage even if your app doesn't really need all that extra memory. 

What I still want to learn

I still have some questions about the suitability of WinDev for really large applications. Can you build an app in WinDev with numerous projects and thousands of windows? What's it really like using WinDev's own management tooling to manage a large project? Does SCM stand up to intensive use? Is it easy to create and maintain large class libraries? Is HyperFileSQL really a good choice, and if so for what kinds of projects?

I don't expect the tutorial to answer all (or even most) of these questions, but I am looking forward to seeing what else is in store.