RIAs, Adobe Flex, and related topics

About
Resume
Contact

July 11, 2007

To IDE or not to IDE

Filed under: Community, Flex — jimrobson @ 2:33 am

Ryan McGeary is a co-worker who, paradoxically, is both a Flex skeptic and a nice guy. In fact, he was good enough to attend FlexManiacs in spite of his aversion to Flex / Flash so that he could provide me (and our CEO) with some constructive feedback. As I had hoped, he came away from the conference with a bunch of thoughtful comments and questions, some of which made me step back and re-evaluate my own attitudes and approaches.

I hope to write responses to several of Ryan’s points in the near future, but I’d like to start with an observation he made about the Flex developer community: he noted that we tend to be IDE dependent. I know that there are some Flex developers out there who do all their work with text editors and won’t touch Flex Builder with sterile gloves, but based on my experience I have to concede that they seem to be a small minority. (Whether they constitute a proportionally smaller segment of the Flex community than their counterparts in other development communities I have no idea. Someone should do a study on that.) As for me, I use Flex Builder every day, and I don’t see a need to change that habit. Let me explain why.

Memory

I have invested substantial effort in developing a knowledge and understanding of the Flex framework. I’m sure that if I were to put the effort into developing a few applications using just TextPad and mxmlc I would end up with even more of the Flex framework committed to memory, and in fact I would need to have it committed to memory in order to be as productive with TextPad as I am with Flex Builder. But I don’t know why I would want all that stuff in my memory when it’s already in my laptop’s memory.

Don’t misunderstand me. I’m not among those who think that it’s a waste of time to teach arithmetic to children now that we have calculators. On the contrary, I strongly believe that everyone should learn to think and act independently - which is one of the reasons my wife and I home school our children. However, I’m not convinced that memorizing highly transient data is of any lasting value.

Like many other technologies, Flex is changing rapidly. While some people are just now discovering Flex 2, Flex 3 is in public Beta. By the time many of us are comfortable with 3, Adobe will be pushing 4 out the door. Who can tell what parts of the framework will change? Some properties and methods that are now private are likely to become protected. Some members - and even entire classes - that we now use every day will probably be deprecated. New methods, properties, and classes will be added that will provide native means of accomplishing tasks that we now hack for ourselves. It seems to me that memorizing all the details of the Flex framework in its current state would only make it more difficult for me to go with the flow of all of these changes, and hinder me from maximizing the benefit that could be derived from them. That being the case, it makes sense — having already built a strong familiarity with the framework — to allow the IDE to help with the details via code hinting.

Other factors

Besides memory helps, auto-complete is also a useful time saver. For example, it’s nice to be able to type “tabn” instead of “TabNavigator” all the time. Also, having the closing tag generated automatically is a helpful bonus. (Go ahead, call me lazy.)

Then again we have the annoying phenomenon of programmer error. I’m old enough to know that no matter how thoroughly I learn Flex (or any other framework) I will still make mistakes from time to time. When that happens, and the compiler fusses at me, it’s really nice to be able to double-click on the error message and be taken right to the very line of code where my error resides.

Another benefit of Flex Builder is the ability to quickly dive into the framework source. I can highlight a framework class or member identifier in my own code, hit F3, and be taken directly to the appropriate place in Adobe’s source code. This is a great help when trying to figure out why I’m getting unexpected side effects, or in determining the best way to extend a framework class.

Let’s not forget the other useful keyboard shortcuts: Shift-CTRL-C to comment a block of code; CTRL-O to open an outline of the current file; Shift-CTRL-O to sort and organize import statements; etc.

So far, I’ve only been dealing with benefits of the IDE’s source editor. The design view (WYSIWYG) makes it easy to quickly throw together a UI layout, and has saved me a substantial amount of time on a number of occasions.

Simply put, a well-built IDE is a useful tool, and Flex Builder - for all of its shortcomings - is a well-built IDE. I acknowledge that there may be some developers who are too lazy to learn the framework at all, and couldn’t even write HelloWorld.mxml without Flex Builder. However, the fact that some people misuse a tool is not an argument against using the tool. Murder has been committed using hammers, but when it comes time to drive a nail I don’t hesitate to reach for my Estwing.

1 Comment »

  1. Art for art’s sake is nice….

    But in most cases programming is production and not art. That does not mean it cannot be artistic. To me, those who express the utmost need to code in a mere text editor and have the entire code base memorized demonstrate an estimation of their ego rather than intelligence.

    Programming languages advance rather quickly, especially web scripting languages. They alter, add, deprecate, etc. I differ from many programmers who seem to want the utmost complexity in exchange for a philosophical programming language.

    Rather, I have for years held to the belief that we programmers deal with far too much syntax. And should not. We should be programming in logic. Syntax should be simplified to just logic. A lot of times I feel as if I am being forced to do and provide more than is reasonably necessary in order to perform a task. (ie: I should never have to specify milliseconds from x date in order to create a date/time occurrence - that is something that should be handled internally and never seen by the application programmer). Instead of code becoming simpler it’s often becoming more obfuscated. How much change in scripting languages is merely “pop trendy”. (ie: For all the rave about css & stylesheet, a great many websites still utilize tables for layouting - why? because css is unreliable in many platforms and the use of tables can often provide a more uniform appearance without the hurdle of customizing code to handle every version of every browser. In other words…it’s a quicker path to a reliable result.

    Recently I saw an article on Slashdot arguing that there is too much math in programming and that it should not be so. And I will agree to a point. I think we have divisions within the programming world. System programmers and application developers. For the latter, excepting those applications that inherently require complex math, there is little need for there to be much beyond PreCalc. Of course such knowledge is ALWAYS tied to what the task at hand is.

    But more often than not I find so many of these issues to be more about pride than programming. “You don’t use x, or you should use x, only ignorant people use x, and so on.”

    It’s very much akin to Linux. What is the number one thing holding Linux back from becoming a mainstream desktop OS? It’s not Linux…it the number of arrogant prideful users of Linux who rather than helping people get accustomed to and overcome the hurdles of Linux would prefer to use Linux as a measure of competitive intelligence.

    This might have been fine to me back when I was in high school. But I’m older, more tired, I’m not concerned with proving myself to all “you” out there. I know who I am…
    :-)

    Comment by Saj — July 11, 2007 @ 12:59 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment


Powered by WordPress