I’m afraid I traded my ability to understand SQL for the ability to understand Object-Oriented Programming a long time ago. That’s why I never have been at ease with databases in general and SQL in particular. Given the not-so-recent trend about NoSQL, I thought it was time to give it a try. When I became aware that 10gen - the company behind MongoDB, was making free online courses available at regular intervals, I jumped at the chance and last month, I registered for M101J: MongoDB for Java Developers.
Yesterday, I finished week 5 assignments. Even though it’s not finished yet, it’s time for some feedback, on the both the course and MongoDB.
On the bright side:
- First, I’d like to thank 10 gen to make those courses available freely. Of course, it’s not without second thoughts, but it would be a better world if other software editors would do the same.
- Also, the course is very practical and IMHO well adapted to a software engineer’s day-to-day work. I’ve prevoously followed Coursera’s Scala course, and I disliked it because I felt it was too theoritical: homework examples were about algorithms and had no roots in the real world. Compared to Scala’s course, this one is much more pragmatic and relevant to me.
There are some downsides, though:
- Productivity will be low, there will be tons of bugs, developers will complain
- Some smart people/company will provide a usable wrapper API around the native one (in fact, Spring Data already does)
- MongoDB will learn its lessons and provide their own improved API, based on their competitor, but not quite like it
- And it will be the whole JDBC to Hibernate vs JPA war all over again!
- SQL is not what I would call readable, but it’s expected for a technology that began some 40 years ago. I have more expectations for a technology a few years old, but sadly, they are to be unmet. Whereas standard MongoDB queries are not a model of usability from a developer point-of-view, but the palm goes to the so-called aggregation framework. As an illustration, this Gist is the answer to one of this week’s homework (obfuscated of course).
This is my feedback based on my own experiences and those are completely personal. I would recommend anyone even remotely interested in NoSQL to take those courses themselves and make their own mind. The next batch is planned for July 29th.