Nicolas Frankel is an IT consultant with 10 years experience in Java / JEE environments. He likes his job so much he writes technical articles on his blog and reviews technical books in his spare time. He also tries to find other geeks like him in universities, as a part-time lecturer. Nicolas is a DZone MVB and is not an employee of DZone and has posted 228 posts at DZone. You can read more from them at their website. View Full User Profile

MongoDB Course, Thoughts and Feedback

06.16.2013
| 5504 views |
  • submit to reddit

 

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:

  • The course is said to be “for Java Developers”. Unfortunately, some – if not most – of the courses and their associated homeworks are about the MongoDB shell, which is plain JavaScript. I would have prefered to have two different courses, one for the shell and one for the Java API.
  • Speaking about the Java API, to tell it’s a thin wrapper is an understatement, for it’s only the literal transcription of JavaScript shell commands into the Java language.
    I know API design is hard, but come on guys: no enumerations, no constants, only Strings! I was expecting more in 2013 than JDBC reinvented, complete with String concatenation… Now, here’s what one who has been around a few years can expect if MongoDB becomes widespread:
    1. Productivity will be low, there will be tons of bugs, developers will complain
    2. Some smart people/company will provide a usable wrapper API around the native one (in fact, Spring Data already does)
    3. MongoDB will learn its lessons and provide their own improved API, based on their competitor, but not quite like it
    4. 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.

See more at: http://blog.frankel.ch/mongodb-course-thoughts-and-feedback#sthash.RmUTHkMQ.dpuf
Published at DZone with permission of Nicolas Frankel, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)