Today was my first day at Oracle OpenWorld and here are my first impressions from the sessions I attended.
The first one was Building Web 2.0 Social Applications in Ruby on Rails with BEA AquaLogic Interaction by Chris Bucchere where he explained how they built social application for BEA conference participants. And it was interesting to see also some code examples from this application that he presented.

And then after that I participated in three Oracle Develop hands-on sessions about Oracle SOA suite and WebCenter. I signed up for these sessions because I thought that they will be more technical and code-intensive compared to other sessions.
As a result I spent three hours in Oracle JDeveloper but all I was doing was dragging-and-dropping and filling some pop-up dialog boxes. I did not write single line of Java code during these workshops. And as a result I had just vague idea why all the dragged components worked together.
Having experience of coding in Ruby and trying to create small and beautiful code this drag-and-drop development did not feel quite natural for me. And I am afraid that this drag-and-drop development approach will create bunch of developers who will not be able to create real code anymore.
The other consequences of this drag-and-drop style coding is that it is hard to version control the resulting generated code and it is also much harder to unit test such generated code. Probably this is the reason why I could not find any OpenWorld session about unit testing and test-driven development.
Am I missing some hidden beauty of drag-and-drop development? Or am I spoiled with beauty of Ruby?

Interesting points about SOA and WebCenter. If interested in more technical deep-dive discussions, I’d recommend you to stop by at the demo grounds where development and product management staff the pods. We’d be happy to go into details there.
The overarching theme of Oracle’s development stack is to provide a productive environment for you to build enterprise applications. The most typical and basic capabilities can be built using DnD, but there’s a lot of space for coding to fine tune your applications.
Not sure I fully understand your concern and the relationship of drag and drop and version control. I do agree, that you as a developer have to know what’s happening behind the scenes when you perform a drag gesture.
Peter
Comment by Peter Moskovits — September 22, 2008 @ 6:17 am |
@Peter
That’s me in the first row of your photo :) I’ll try to come to you in demo grounds to discuss my concerns.
Comment by Raimonds Simanovskis — September 22, 2008 @ 8:51 am |
One thing that JDeveloper aims to do is simplify development with a more visual and declarative development approach – but this doesn’t mean you can’t or that you won’t be doing coding also. In fact for every visual editor that you are working with there is a “source” tab at the bottom – you can click it to switch for example from the BPEL diagram to the BPEL XML – and then you can directly edit your code.
And you can also version control those files. In fact JDeveloper automatically does mini version control for your files – this is what the history tab at the bottom of each file will show you.
Comment by shay — September 22, 2008 @ 2:27 pm |
@shay
What I am afraid is that majority of developers will not look at the source code and for them after drag-and-drop some magic is happening and after that something works or not. I just think that for programmers we need to raise the bar and programmers should do the code and should understand in which files what is located. Otherwise we have too many developers who do not understand what they have built in their programs :)
And regarding version control it seemed to me that the source code is split into very many Java and XML files and as a result if you do even just small drag-and-drop change it might result in big changes in source code. And as a result such changes might not merge very well if several developers are working together on the same BPEL process or WebCenter page. But I need to see it more in detail to understand if this is really so.
This was intentionally provocative post :) I will try to go to demo grounds to have a more deeper look what is happening beneath this visual development.
Comment by Raimonds Simanovskis — September 22, 2008 @ 5:01 pm |
Software engineering is not about writing beautiful code – it’s about productivity. You can’t develop enterprise level applications by using only drag and drop approach, even using Jdeveloper/ADF ;) On the other hand, why should I take care for instance of BPEL code
Comment by er — October 7, 2008 @ 11:23 am |
Why I like small and beautiful code? You write code just once but read it many times. Small and beautiful code is much more easier to understand, test, refactor and change.
From my experience the problem with large automatically generated code using “productive” GUI tools is that programmers quite often do not understand “magic” of generated code, it’s more harder to debug problems, they do not know how to do unit testing of such generated code and also it’s harder to identify performance bottlenecks of such generated code.
Therefore I am advocating that programmers should understand code and they should not rely just on GUI code generation where initial productivity hides larger unproductive maintenance work.
Comment by Raimonds Simanovskis — October 7, 2008 @ 1:12 pm |