I’m working on a project right now, inherited a codebase from a junior level programmer, so spent a lot of time refactoring and fixing a lot of bad habits.  As the adage goes, you get what you pay for.

By the time I could focus on server communications, it became clear to me that the server implementation was also rife with bad habits, and again I felt sorry for my customer, as it seems they paid for poor quality development that wasn’t even complete.

Although I was hired to fix a client and bring it to an MVP state, it became apparent to me that this wouldn’t be possible with their current server implementation (in PHP, no Sessions, no User Auth, no security), which didn’t have any of the required functionality for push notifications.

After everything I read about I thought here would be a good opportunity to try it out.  What it promises seems to be great, the documentation seems incredible, the onboarding is great, the functionality of their web interface is great, in short I thought “here’s a good bet”.

There is always risk going forward with unknown technology, but as developers we should always try to do about 20% new stuff on every project.  One, to stay current with technology, two to keep pushing things.  It’s normal to have a learning curve.  There will always be landmines on the road ahead.

I’m writing this post to express how disappointed I am with Parse.  It’s like a beautiful girlfriend that you wish would be just slightly different and you would be in love forever; sadly, a few fundamental character flaws make this impossible and you think seriously about your future together.

Parse often fails.  And it’s unclear why, and given the nature of their asynchronous API, it’s very difficult to debug because you rarely can trace back to the calling context of a block.  You literally have to set breakpoints on either side of a block’s call, which sucks.

Software quality is important.  If you don’t trust a product, your instincts may lie to you.  You assume it’s the sketchy product when in fact it can sometimes be a simple error on your side.  Parse has caused me to miss a few of my own bugs because I just thought “Oh, probably Parse not doing its thing again.”