Learning New Technologies (MEAN Stack)

Ideas on learning to develop for a new platform using Node.js.

Published on  • 📖 3 min. read Edit on GitHub

While taking the Software Design and Development course last spring, we (the class) used Backbone as the main framework on top of Node.js. I never really got the chance to appreciate Backbone due to being slammed with a towering wall of new technologies that make up the Node.js world. I mostly stuck to my own world of Hogan templates, jQuery, and plain JavaScript. This worked reasonably well. While it got a little messy, it worked, and I knew how it worked. During this whole time I was slowly feeling more guilty for creating a monster of jQuery calls that who knows how I was able to keep track of. I wanted to use Backbone to manipulate the page and handle all the functions, but at that point, I didn't want to tackle the massive refactoring that would have needed to happen to move it to Backbone properly and moved to a different part of the website completely (design and usability). Maybe I'll go back and properly refactor the code someday, but for now, that's a ways off.

This fall semester I have been working with a professor to take a directed study to assist the current Software Design and Development course. Unlike last spring's course, this semester the MEAN stack (MongoDB, Express, Angular, Node) is being used. One of the main reasons for using Backbone last spring was it's more clear separation of the MVC (model, view, and controller), however Angular had only gotten more popular and several people in the Computer Science discipline/major at UMM had used it. Having already committed to do a directed study for the course, I was thrilled to learn that we would be using Angular. This allowed me to have a fresh start for the main framework, while already knowing a lot about Node.js, Express, and MongoDB. I've been using Angular and now Yeoman generators (these are awesome) and I can say that I think it is an excellent framework and is incredibly powerful. I hope to continue using these frameworks for years to come.

Getting to know and start to learn Angular and the MEAN stack was far less difficult than I was expecting. This affirms what "they" say, "Once you learn one programming language, it's much easier to learn another." Having known Java before diving into the Node.js world, I felt pretty comfortable with JavaScript (these languages only share a reasonably similar syntax, despite the names), but knowing JavaScript doesn't determine how a Node.js project works. My experience with Backbone and my time in the Software Design course was much more challenging due to the amount of sheer content I had to learn. While not a language, Node.js setups are quite similar to learning about standard programming methods and concepts. This summer I wanted to learn to develop for iOS or OS X using Objective-C/Swift, but I think due to my absolute zero knowledge of any C based language or, for the most part, anything other than Java and web development, I was hit with a wall of new concepts, ideas, syntax, and languages that I had to learn all on my own on top of working full time. It was an overwhelming goal that led to me putting off and, aside from a couple of hours, not accomplishing at all.

I think that in order to learn to develop for a new platform, you have many hurdles to overcome, but that experience will add to your general knowledge of computer science, and will make every new endeavour a little more manageable.