Ten years ago I’ve been doing PowerBuilder and my mentality was different: first, I was the best friend of business users, and second I did not really worry about what’s under the hood. I could do stuff quickly, or using the modern jargon, I was an agile programmer without even knowing this (on the same note, lots of people were creating Ajax applications five years ago without knowing this, but it’s off topic). I’d ask the business user Joe, “How do you usually do your business, what would you like to have on this screen, what step do you do after this step?” Most likely Joe did not really know, but I’d still give him a wide American smile: “No problem, I’ll come back tomorrow and will show you something”. Mary, yes, you, “What’s the most important word in my last sentence?” No, Mary, not “I’ll come back”, but TOMORROW. Not next week, not next month, but tomorrow.
With DataWindow component it was easy. I did not have to pull Joe’s teeth, I was able to create a working prototype in a day, show it to Joe next day, his glassy look all of a sudden would become friendly and understanding. Now Joe was back in control: “No, Yakov, you did this part wrong, I want it differently”. No problem, Joe, I’ll see you tomorrow. Mary, what was the most important word in my last sentence? Good girl, Hasta maniana! I did not really know how DataWindow worked, but I trusted this component. PowerBuilder used event-driven programming model, which was clean and simple. An object A triggers an event XYZ on object B, and this event can carry a payload – the data that the object B needs to operate. Using the modern jargon it’s called Inversion of Control or Dependency Injection design pattern. Whatever. What’s important is that the object B does not know about the object A. Loose coupling in action.
Then I became a Java programmer, and my mentality have changed. Big time. I realized that the user’s screens are not that important, because I have an intimate knowledge of how programs work internally. Screw users. I’ll spend majority of my time designing a multi-tier system that does not really depend on any specific screen and is universal. Joe still asked me, when is our next meeting? In a month. Mary, do not raise you hand. I see that you know the most important word here. Why in a month? Because I could not do a decent prototype sooner (Java folks, easy, easy – Matisse was not even in the picture yet), and more importantly, we started to make fun of PowerBuilder or Visual Basic programmers who were thinking screens, while us, cool Java gurus, knew how the motor worked inside! These guys were enjoying a ride and counting cup holders, while we were thinking sparking plugs and combustion chambers. We were enjoying the process of programming in itself.
There is this Russian stand-up comedian Mickhail Zhvanetskiy, and one of his excellent phrases was “Who cares about the soup, when so much is going on in the kitchen!”
Now, with Flex I started to care about the soup again, because I can. I can change the prototype twice a day, and Joe does the same with his business requirements. No six-freaking-sigmas documentation. Napkin on the knee is back and it works. I’ll give the final OK to my server side Java team only after Joe is 100% happy.
Besides, with Flex I can have the best of both worlds: the source code of the Flex framework is available, I can learn how it works inside and override it (not always it’s as easy as it should be, but it’s doable).
Working with Flex promotes agile development. If you do not know what it is, get a really good book Agile Java Development with Spring, Hibernate and Eclipse. This is one of these mis-titled books, which has not much to do with Spring, Hibernate and Eclipse other than the fact that it comes with the working sample application written with these tool/technologies. It presents an excellent overview of the development process in an enterprise Java shop. You’ll learn how to set up the environment, gather business requirements, and build the project deliverables in agile way.
Dear user, I’m your friend again! Now I’m as flexible as Flex can be. What do you want me to change?