4/1/2012 12:00:00 AM

I can't begin to tell you my love / hate relationship with you. I should probably add that IntelliJ is causing me gripes too. I'll add to say I think JetBrains make great products.

What started as a simple idea, continually leads down a path of pain and suffering. I come from a magical world known as c# and Visual Studio. In there, to me it's the best development IDE (in addition to having JetBrains' Resharper). There the language is just so intuitive. The IDE is so responsive. The framework is smooth-like butter!

A while back I had the Thomas Edison moment of an Android app. The concept made sense and it filled, in my opinion, an important void. Over the past year, I've gone through learning how the Android SDK functions, then to rewrite of the application. What I've found is that the SDK is buggy. Whoa Kelly, everything has bugs! Duh! This one for me has been relating to system settings. I'll chalk some of it up to lack of experience with Java. The other thing is how key items don't exist yet in the open source code claim to be.

There are also two different worlds colliding. On one hand you have Google, hell bent on using Eclipse for their development. While Eclipse is free (and should really be used as a reason), it's slow. It's cumbersome when you want to quickly navigate your code. On the other hand you have JetBrains that makes Idea or IntelliJ. This product allows you to see your enterprise code base (meaning super huge code base) without sacrificing speed - actually improving it. Along the way, it has this amazing ability to cleaning suggest ways to approach problem areas and makes refactoring a snap. To me it was a no brainer. I want incredibly clean code; I'll go with IntelliJ.

I put everything I could under unit test. At this time, no user interface (UI) elements are under test unfortunately. I'll supply more later on why.

Then I fought it like crazy, and realized I need to do some dependency injection. Doing so, will help me reduce boiler plate code, and maintain the SOLID principles. I stumbled across RoboGuice. It uses Guice as a base, and then builds upon that and the Android SDK. I've stayed with 1.x version because 2.x doesn't have documentation and at the time was beta. I've had my fights with this framework too, and great news, the issue with this framework has been the UI automation testing. I feel this is the sacrifice I've made with this item, but in the long term it's a small one considering the testing I've put in place with all the other items.

Lately, it's been SDK and IDE hell in general as IntelliJ points at Android is saying something is invalid. As I've seen in the past, I'll check my IntelliJ code with Eclipse, and it'll fire back better erroring. My guess goes back to the idea that Google strongly supports Eclipse development. At the same time Android source compiles aren't the best either. If you check the source file reference it'll claim it's compiled everything nicely. Of course if you go and check the open source code in git, you'll see it missed public variables and methods.

All of this wraps up where I've produced a custom checkbox. IntelliJ just throws an error where the resources aren't found, and now I get to load my project in Eclipse to see what it has to say. For me, this has been a HUGE setback in terms of getting all this stuff out. I hope Google does a better job and source compiles. Equally I hope JetBrains comes up with better integration with the Android SDK.

There are times in my frustration where I contemplate just doing a windows phone app instead. I don't have a windows phone, and they look slick. I know it would be a niche market at this point, but I would feel some level of success. I honestly don't know how the framework is, but since Microsoft did it, I'm sure it is quite solid.

Cheers,
Kelly