On Flex 19:13 on Monday
For the past two months I’ve been deep into a Flex project, trying to figure out best practices for Flex work. I can say I’m not happy.
In fact, I’m frustrated. I feel inadequate. I feel like I must know nothing about programming because a bunch of surely wise men and women have put together this beast of a framework, and I can barely manage. I struggle with the simplest of things.
On the other hand, I feel I would have finished the project already, were it not for the frikking Flex framework and the miserable Flex Builder built on top of the house of cards called Eclipse.
Discussing the project with my colleague (who has vastly more programming experience than I do), few things seem clearer every day:
- Flex is barely production quality software. Depending on “in progress” software in a client project is a bigger risk than one would like to acknowledge.
- Frameworks should be limiting, not flexible. The best frameworks enforce constraints. If you want to create something with what everyone can find their way, create a library instead.
- When a problem arises, the time spent perusing the complexity of the Flex framework and the inexplicably inadequate documentation blow off all benefit gained from being able to build stuff quickly.
- This is important: Efficiency in programming doesn’t come from being able to achieve a few simple things using many different constructs. Efficiency comes from being able to achieve many different things using few simple constructs.
Building a framework is an intriguing idea. Who wouldn’t want to create the perfect environment for creating perfectly executed projects, with ultimate ease. But it is so easy to go into space, and forget about the problems of the real world when looking at the beautiful view of the neatly organized framework repository through the tinted visor of the astronaut’s helmet. I know. I don’t like Flex (for now), and my instant reaction is that “I could do better!” Of course I couldn’t. Building such a huge framework is not a task for a single coder (if not for anyone).
I understand I’m in the learning phase with a new technology. But I also think learning anything new should be fun. It should be rewarding. It should not be about going home every day feeling like a failure.