Bruno Raljić

A Java Developer's Blog

10gen free online MongoDB course – feedback

M101 MongoDB for Developers (Oct 22 – Dec 17 2012)

Before this course I didn’t know anything about mongoDB (or anything about NoSQL) so it was a good opportunity to learn something new. I’ve mentioned this course before, in my article about Python IDE. I’ve attended few talks at Devoxx 2011 about No SQL but then I didn’t realize the importance of all this. I also worked on a project that included a lots of medical reports, analysis (different number and types of fields) and etc. One of my colleagues, Igor Mađerić, said it would be perfect to use some kind of NoSQL, mongoDB perhaps. But, we didn’t have enough knowledge (and time) to implement it back then.

- Do you have any expertise in SQL?

- No.

Doesn’t matter. Write: “Expert in No SQL”.LiewCF

General overview

I would say it this way: If you don’t have any mongoDB knowledge right now, complete this course and you’ll have a lot of ideas how and where you could implement it. Maybe you’ll even want to start small mongoDB project, just to learn it further. I’m not saying you’ll know everything, but the guys from 10gen covered many important topics here. Also, they chose, in my opinion, good “background story”. Your homework are based on small blog project mostly, and you need to implement many things, improve performances, search through a lot of data (comments, posts) etc.

If you’re wondering which programming language they used, it’s Python. But, don’t be afraid of that. There are introductions to Python in this course as well. You can also use whatever language you want, but for this purpose you need to learn few “Python tricks” and get along with it in no time. Your homework shouldn’t be too much Python dependent. Although I did some of the first homework in Python fashion, because it was easier for me, but here’s the advice: stick to the mongoDB. Whatever you can do on the mongoDB level, do it there, because it is really powerful. Mongo shell is based on javascript, so if you know it, good for you.

Main topics

This course is divided into seven weeks and each week has different topic.

Week 1 – Introduction

In the first week you’ll get introduced with the concept of NoSQL, installing everything you need, Python syntax needed for this course, JSON objects, Bottle framework etc.

Week 2 – CRUD

CRUD operations, inserting, finding, matching documents, sorting, using logical operators in matching, upserts (yes, upserts, update or insert), deleting etc.

Week 3 – Schema design

Here you have described how to response to “standard” SQL one to one, one to many, many to many relations in a MongoDB way. What’s the best practices for embedding documents. Handling blobs.

Week 4 – Performance

Indexes and all about them. I’m satisfied how they explained whole concept of indexing in MongoDB. They explained how to use and understand some profiling tools. They also covered .explain() method. One thing here that just blown my mind are geospatial indexes. Check it. I didn’t see anything like that before.

Week 5 – Aggregation

Aggregation framework allows you to perform a lot of analysis on your collections. You can do grouping, sorting, counting, extract sub-fields into the top-level of results etc.

Week 6 – Application engineering

This topic is more in DB administrator fashion because it deals with things like how to build replications, how to ensure write consistency, divide database into nodes etc. But, anyway, as a developer it’s good to know what’s going on in the background.

Week 7 – Case studies

This is the last week. Videos in this week are not so important for your final exam. You have two great interviews with Jon Hoffman from foursquare and Ryan Bubinski from Codecademy

How the homework and final exam are organized?

There are six homework plus final exam (similar format as homework). To pass the exam you need to have 65%. On the final exam you can achieve maximum 50%, other 50% are from homework. So, it’s important to do them also. Just to mention, after some lessons you have a quiz, but this doesn’t count for final exam.

Every homework consists from 3-5 tasks/questions and you are allowed three times to submit your answer. After submitting your answer, you’ll know if it is correct or not. As I said there are two different types of homework. Sometimes you just need to answer the questions, but there are also some tasks, where you need to download some dump and perform some actions (modify, make it to work etc.) and there are validation scripts which will give you a hashcode if you complete your task. For every homework you have some due dates, after that you can’t submit your answers. You can watch your progress from week to week. There is one rule regarding the homework score – Week with the lowest score will be dropped. So, if you didn’t complete one of your homework or you had low score, it won’t count for the final.

Final exams are, as I said, in same format like homework but there are few differences. First, you have 10 questions/tasks (same process of verification). Second, you can submit your as many times as you want. But, they wont tell you if your answer is right or wrong until the due time. So, with homework you knew immediately but have three chances and on the final you are not limited but you won’t know if you answered it correctly or not.

Impression

Speaking in general, I’m very positively surprised about this. First, they shared a lot of knowledge. Some things perhaps are left unclear (from my point of view), but they provided a good starting point for those who want to learn.

Also to mention, guys from 10gen did a great job in organizing all of this despite the hurricane Sandy, which caused power outages.

There is also a good place to communicate with other students in the discussion section. Of course, you can ask 10gen guys directly to help you with some technical stuff.

I contacted Andrew Erlichson, the man who presented the lessons to us, but via Twitter (@erlichson), he replied me as soon as he saw my tweets and I appreciate that. It’s good to have such healthy communication. Keep up the good work.

Few things I would still change

You have your way. I have my way. As for the right way, the correct way, and the only way, it does not exist.Friedrich Nietzsche

Although I said this course is good, I would do something in my way.

Student specific homework results

Right now, we are all submitting the same results, so the answers can be shared and then submitted by others. I would introduce some hidden unique key for every student and during the validation that key would be used. So every student will have different validation hash codes.

Don’t reveal if the answer is correct/wrong

Do it like for final exam. No feedback until specific date.

Less theoretical questions

There were too many misunderstandings regarding those questions. Keep it straight. I preferred tasks over questions.

Value between 0% and 100%?

Did you noticed there is only zero or hundred percent for your homework. Nothing between. Why not? Now we have just flag if someone did or didn’t finish the homework. It’s not same if you get the right answer from first shot or from third one. Maybe you can give 100% for first shot, 75% for second and 50%. Or if you have multiple answers, count every correct answer (minus incorrect ones). These two examples may not be the best, I’m just thinking about the possibilities right now. There is a lot of space to improve this, but idea is to allow someone to have for example 72% for specific homework.

Code examples

While you are watching the lessons, sometimes you see code in videos that is too long for you to type (for some reasons, you don’t have time, you are not sure about syntax or you’re just lazy). It would be nice if we had every piece of code used in lesson right there below the video or next to it. OK, I know, you can download the examples for every lesson, but I think this “quick access” solution would be better.

The end…

Yes, this course is finished (and this article will be soon, I promise). I passed the final exam. Score is not so important as I took this course to learn something (and I did). We’ll receive certificates soon via email. As I read on the their forum, certificate won’t be just a file on your disk. They are working on creating the unique ID. We’ll see what that means. Maybe there will be a record on their site with our names. Once again, guys from 10gen did a great job with this. It’s also a really good way to expand the community and motivate more and more developers to use MongoDB in future.

, , , ,

One thought on “10gen free online MongoDB course – feedback

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Show my latest blog post with this comment!