Tuesday, August 12, 2014

Don't Overcomplicate Simple

It amazes me how the simple things can become so complicated sometimes. As developers, there is expected complexity in our jobs to deliver something that is easy for a non-developer user to utilize. It's really useful, however, to also have something that is simple to deploy for other developers. When it comes to utilities, plug-ins, extensions, and APIs, it's always nice to be able to avoid installing and manually configuring 60+ options and configs to get a simple rich-text editor.

That's what set this off for me - a simple rich-text editor. I am working on a project that has a section for "additional notes" on the page, and the expected functionality is for the textarea to allow simple functions like bold, italics, bullet and number lists, and hyperlinks. Being the involved developer I am, I started searching for something to avoid writing my own. And man are there options. The problem is I needed free (don't we all) and simple (ditto), and while free is actually easy to find,  I didn't realize what a problem simple could be. When I searched for editors I found ratings and lists of "The Best Editors" and "The greatest free editors!" and yet nothing focussed on ease of use or simplicity to configure.

Now, most of the editors I was looking at were "simple rich text editors," but what did "simple" really mean? In most cases, it actually meant limited features. The "simple" piece that I was looking for was in implementation and most seemed to over-complicate that. I wanted something I could quickly throw in, configure, and know what I just did, without needing to drown it out of my mind with a beer after.

I finally whittled the options down to two: NicEdit, and CLEditor. I didn't need projects actively being developed or at the latest and greatest point in technology. Both were "limited" and appeared to be "simple," keeping the number of files required to 1 or 2. But there can be only one (note my "appeared to be"), and if you look at the usage instructions for both you can tell which one I went with.

Decent, but not ideal
NicEdit had the buttons and options I needed, but the styles were set on the elements via JavaScript, and the implementation made me want to just hit delete; and I did. I wanted ease of use as for users and as a dev.

jQuery does simplify things
CLEditor, on the other hand, got it mostly right. I say mostly because there were still a few "gotchas" I had to work around with a little more JS. But this was possible. Most of the styling was done via CSS, though the mouseover events on the buttons annoyed me a bit (more about this in another post).

In the end, though, it really reminded me what our job as developers is: make the "simple", simple. Good documentation is one thing, but there are some other important things to remember when developing an application, extension, plug-in, or whatever:
  • It's okay to add options, but make them manageable. If it's more of a chore to set up an XML config than it is to look for a new solution, you did it wrong.
  • If you don't have to dissect everything into micro-managed pieces, don't. There's little more annoying than having to dig through 3,000 small files when you could do it in 3. Plus, I can search through 1 file more easily than all 3,000.
  • Set default values for options. This should be a no-brainer, but I still encounter it so often I want to cry. If I miss passing a value to a plug-in or extension, expect that. I understand if it's a command line and a value is required; just tell me.
  • Try to imagine setting up your application as if you had never seen it. If you walk away from it for a couple hours or a day, come back, and have no clue what you did, you did it wrong, again.
  • Go further than you "have" to. If you can spend an extra hour on it to make it easier to use, do it. If you can use an installer to make set-up quick-and-easy, do it. People will be more likely to use something that's easy and quick to configure over something with more options and complications.   
The irony in much of this is that most of us developers have been that person using a product where we said "That's stupid," or "Why the hell did they do that?" And then we go and develop an application with 40 tabs on the options screen, and 15 files you have to manually copy into folders, while holding ctrl + f7. It's unfortunate, but we often forget to pay attention to how we are developing. Remember, it's our job to do a little more to keep it simple for all audiences.

Don't over-complicate it.

No comments:

Post a Comment