Thursday, March 6, 2014

Oh shiny, that new framework for…

Let’s face it, all of us at some point in our lives, have looked at something and became completely obsessed with it because it is new and shiny.

This is a two way street with software development.

The Good

Early adopters are integral to improving new hardware, software, etc. There is an entire subculture around people who will always try out the newest toys. But without those people, how well would Apple really have done with the iThings.

Not only do they help the proprietor of the new technology with feedback and bug reports, they also generally get to take advantage of it and can in some cases, drastically improve in the area the technology is relevant.

The Bad

While you have a chance of improving, you still are left with a giant risk with an unproven technology. Another pain point is the training required for the new technology, and finding answers to problems with the technology is near impossible, as there are not that many people (think early .Net 1.0 times).

I generally approach new tech libraries with many questions:
  • Is it released?
  • Does it cost money?
    • Is it really worth that money for what it provides?
  • Is it complicated to get up and running?
  • Does it have a good feedback loop?
  • Is the content creator responsive to feedback and requests?
  • Is it Open Source?
    • How many contributors are there?
    • How many pending pull requests are there?
    • How many open issues are they, and how old are they?
    • When was the last commit?
  • Who else used/is using it?
    • Did they have something to say about it?
    • Are they still using it?
      • Why did they stop?
  • Is there online documentation?
    • Is it up to date?
  • Are there training videos?
    • Are there up to date ones?
    • How many different people are contributing videos? (YouTube, Pluralsight)
  • Are there any books written on it?
    • Are they actually any good?
    • Who wrote it?
  • Are there people blogging on it?
  • Does the API/Code follow proper language best practices?
    • Casing
    • Naming
    • Testability
  • Will it blend?
    • Does it fit with the software I am building?

This pretty much sums up my evaluation for software, in answering some of those questions, I will spend a decent amount of time doing research.

I am in love with AngularJS right now, I want to use it, and I want to use it for everything. However over 15 years of experience has taught me that doing due diligence on the tools is going to save me tons of headaches and time. After roughly a month of casually investigating AngularJS, I am finally ready to sit down and actually use it.

I am 100% confident at this point that with the project I am working on it the absolute best fit for the technology gap that I have (JS UI framework), and am completely signed off on the interface, content, and training available for it.

Just remember, due diligence up front with new technologies when your software relies on it will pay off in droves later on, just don’t be afraid to take calculated risks where appropriate.

Now I just need to figure out how to get my new website to work with Oculus

3 comments:

Dan Fearing said...

I've been using Angular for the past few months. I really love it.

Larissa Espinosa said...

Tom, we are currently evaluating Angular too- teammates really like it. We have the new DevCraft Complete Telerik Tool set and are looking at Kendo for web responsiveness, mobile- it is also compatible with AngularJS. I think there is something to be said for using the controls so that you can focus your already strapped resources on the business logic. Any advice?

Thanks,
Larissa

Tom Anderson said...

Larissa, make sure they evaluate each of those plugins, once you adopt a 3rd part control kit for example, it could be pretty painful to find out later that it doesn't work out.

I would recommend having test pages for each use case you guys might have for the controls, that allows you to easily find out if it supports what you need, as well as test out any updates, etc...