I'm a bit disappointed in myself. I haven't been keeping up with Flex 2.0 the way I should have, and it really looks pretty awesome.
I spent some time with one of our talented programmers today, refactoring a form validation framework for Flex 1.5. Flex's original validation model was well-intentioned, but (truth be told) somewhat poorly implemented, and didn't lend itself well to server-side validation. We require server-side validation because we want to write our validation code once, and once only.
So luckily, between Russell's in-depth knowledge of the quirks of Flex 1.5's validation model, his elbow grease, and my pontification by way of UML sequence diagrams, we were able to refactor out a large chunk of a validation framework that will integrate beautifully with Flex's front end validation features while running all the validation logic server-side. The validation logic will then be accessible for other views and for the business tier of our applications (where necessary), allowing us to achieve true reuse. The best part is that the framework is practically 100% transparent to the developer, because the mechanics of the framework are hidden away in genericized utility classes and entities.
I'm pretty excited to see where it goes. If it's as good in practice as it looks on paper, we'll give it to the community.
That being said, I'd be equally happy to see new validation features in Flex 2.0 completely eclipse our need for such a framework. It's obvious to anybody who watches the product demos that
Macromedia Adobe really paid attention to the challenges of Flex development, and came up with solid time-saving solutions. I watched a video on the States and Transitions this evening (which are now all completely declarative) and marveled at how much time and ActionScript I could have saved myself, if only I had access to those features in Flex 1.5.
Time to
download the beta.
Yep, I got one. 15" 2.16 Ghz with 2 GB of RAM.
I really must say, if you are an IT professional, or somebody who spends more than a few hours a day on a computer, and you haven't bought yourself a Mac yet, you really must dislike yourself.
Yes, they're more expensive than bargain-basement PCs. Yes, they're still a niche product. But the user experience and productivity boost you'll gain by not having to deal with Windows is unparalled, even if (like me) you're running
Parallels for the things you really wanted to leave behind (but couldn't because they're isn't a native OS X port yet).
I'll say this now, and I'll stand behind it: Apple is ready for their comeback. The
new commercials are airing, the
Apple Stores are packed, and the sales and market share are climbing. They're going to own the home entertainment segment when they finally release some kind of home theatre application. And even without knowing what Leopard will bring, I think we all know that it will make Vista look like 1970s technology again, the same way that OS X neatly trumps Windows XP today.
You have a choice - make it.
Join the revolution before you're the last one left behind.
What a year it's been. I'm just getting back on my feet after so much time in the trenches, so I figured I'd dust off the old blog and see if I can't put a post up every so often.
Let's start with the news.
We've made wicked progress with the development team I inherited at the beginning of the year. For various reasons (spanning many years and multiple managers) there wasn't much in the way of structure or process when I arrived. Those on the team who chose to take charge of their destiny and share their thoughts and ideas with me were rewarded with more structured interaction with the business, the ownership and responsibility to lead their respective specializations, and (at least for one individual so far) a promotion.
To give you a brief understanding of the business units we support, we're in a call center environment. The call center supports the largest sales and marketing machine in the organization, responsible for over $200 million in annual timeshare sales. With most of the management staff on the business side being sales people themselves, strategic planning doesn't really exist; what matters is launching new programs and putting out fires.
Unfortunately, the laws of physics for software development don't support this sort of environment, unless you have the most nimble software applications in the world - which we don't. This isn't solely a slam on our software, since we're not the only business on the planet that is held back by our legacy applications - but it is a fact.
Also unfortunately, the growth of our applications has not been managed in a structured fashion, which means that most of the growth has been untamed and organic. The net result is that there are so many interdependencies and so little documentation that we're hard pressed to keep up with the speed at which our business moves, and the applications often end up getting in the way of the success of business initiatives since they can't be enhanced fast enough.
Couple this with the fact that our process and technologies often produce new defects as old ones are resolved, and you've got a very difficult environment to maintain.
The obvious solution to this quandary is to build nimbler applications, with the process and documentation in place to support true rapid application development. The problem is that we've got a hell of a lot of catching up to do, and I'm supposed to be leading the charge since January of this year. Since I spent the majority of 2006 playing the political game, while restructuring and tuning the development team I inherited, I haven't been able to get the charge organized (let alone lead it).
So the ($200?) million-dollar question is:
(a) do we continue the way we're going, acting in a reactionary fashion to a constantly changing business environment, using an application platform that was never intended to change as rapidly as it's being forced to, or
(b) take the bull by the horns, roll up our sleeves, and get to work creating the next generation of software that will be able to meet the challenge of our business?
Obviously, we need to do (b), or we need to quit while we're behind.
If you kept up with my blog in my last iteration of posts, you'll know that we made a commitment to transition technologies and processes at the end of last year. Unfortunately, without being able to lead this initiative, it hasn't gone as far as it should have - not by a long shot.
The good news is that its moved somewhat... just not enough or as fast as it would if I were where I need to be. Sure, we've got RUP-based Flex and Java projects coming down the pipe - but we haven't expanded our internal skill set as broadly as I had planned to, and the inertia with our team members to stay where we are (rather than moving on to the new platforms) is beginning to set in again with the lack of rapid movement on the new frontiers.
If you know me, you'll know that I'm not one to sit and bitch about something without beating my head against the problem until either (a) it falls over or (b) I hurt myself. In this vein, I've taken steps to get things back on track, but like everything else in life there will be some maneuvering required to make things happen. Meanwhile, we'll continue to lose business opportunity and add fuel to the old software application's fire, while we wait on the new initiatives to ramp up and put out the blaze.
As always, I'm hopeful. Impatient - but hopeful.