I am having a devil of a time with the Flex rewrite of the SVN browser. Not because I don’t have a clear direction. Not because there is some magnificent and interesting flaw in the underlying design. Not because I’m asking Flex to do things it wasn’t meant to do. In fact, I think this project should be hella simple.
But, for the life of me, I cannot grok Flex.
MXML, sure. ActionScript, sure. Flex’s quirky implementation of CSS, sure. Declarative/event-driven programming, sure. I love view states, and it’s easy for me to think of them as windows or pages. Even the wacky not-quite-managed constraint-based layout, sure.
Wrap it all up into one package? Apparently not so sure.
Each attempt with Flex starts off well: I get roughly one half-hour of good, productive work done. But then I stumble. Maybe something isn’t as intuitive as I think it should be. Maybe it’s that Flex tries too hard to hide the details, but I really want to see those hidden details. Maybe it’s that something I think should be dead simple (like zebra tables on DataGrids) turns into “extend and reimplement the entire frickin’ class” level of difficulty. Maybe it’s that Flex suddenly stops building a debug version of the app so that no matter how many code changes I make, I’m always debugging the same broken version.
Whatever it is, it all goes downhill from there. I’ll make stilted progress for the next hour, if I’m lucky, but it will eventually grind to a halt. It always seems to end with me frustrated, angry, and regretting that I keep dumping time into Flex when there are dozens of other things I could be making actual progress on.
I’m not blaming Flex. It obviously works for at least a few dozen people out there. When I’m frustrated and angry, it’s really at myself for not getting it. The funny thing is that I’m already familiar with this feeling — it’s the exact same feeling I got every time I tried to learn (old-shool) Flash. I never got it, either.
To be fair, though, I think it was the Timeline in Flash that always tripped me up. Coming from a world of event-driven programming, a Timeline is anathema. Even if you could coerce Flash to pretend to be event-driven, it never quite felt right to me. Thus, I was never able to do anything useful in Flash. For whatever reason, Flex is turning out the same way for me.
And yet, I know that I will continue to bang my head against it. As smart as I think I am, I am obviously too dumb to learn my lesson.
- That’s the one thing I always hated about Delphi — the lack of a decent non-pixel-based layout manager. Now if CSS would just let me do it without requiring absolute positioning I’d be in heaven.