CUNYCodes and Working with MERN Stack

Sashary Morel
breakpoint
Published in
5 min readMar 12, 2018

During the month of February 2018, I joined a program offered to CUNY students called CUNYCodes. I sent in my application back in December 2017 and got a phone interview so that they could get a grasp on my skills. After that, I was invited into a whiteboard interview where one of the product managers, Gregrian Vassell, gave me a programming question and analyzed the way I tried to solve it. The task I was given was to create a function that would print out the amount of legs if you are given how many dogs there are. The answer was simple and thus he gave me a limitation after I got it right: I was told I couldn’t use any mathematical operations. While the answer seemed obvious (recursion), I froze on the spot. This was my first whiteboard interview, and it was nothing like what I experienced when meeting clients to do a website for. After he asked the 2 other people in the room (who were also given other questions to test out their skills later on), he gave me a hint in which I understood that the answer was recursion. The downside of this is that I had a grasp on how to go about it — A recursion has a base case to stop the recursion from going into an endless loop, and a statement that made the recursion continue. To save some time, although I had the idea in mind I couldn’t get the code right. He gave me the answer, but aside from that we moved on to another question that was given to someone else. After 2 or 3 days of waiting and a lot of personal reflection (the amount of times where I thought I did absolutely terrible was absolutely agonizing), I ended up getting an email that I did indeed get accepted in this program. I was probably one of the lucky few out of thousands that got accepted into the program, and that made me feel somewhat proud.

In this program, about 70 or so students are split into teams of 7 or 8 to create a program. I personally joined a team that deals with a restaurant point of sale system, with the idea that current POS systems tend to be locally hosted and not very customizable-friendly. Our team decided to pick up a programming stack called NERM, also known as NodeJS, Express, React and Mongoose. For me, this began the long journey that comes with learning any new programming language. To give some context, before the program most of my projects were either programs I created for myself or used a back-end that was already established. My current freelancing job uses Wordpress because of how easy it is to set up and teach business owners. Aside from that, my tool-set just consists of your typical HTML/CSS, C#/Java for Object Oriented, and very basic Python/JavaScript + somewhat decent PHP knowledge. Back-end web development was not my first rodeo though, as I did spend 6 months learning about PHP and Laravel, which is probably one of my most favorite frameworks.

However, NodeJS was extremely different from Laravel. First, NodeJS uses asynchronous programming, meaning that code performs a task and moves on without waiting for a specific task to end before continuing. I’m somewhat familiar with this concept, as one of my C# program uses an asynchronous task to start a loop, get data from various RSS sites and then display that data in a communication server called Discord (all while still taking user input.) The asynchronous task would allow the loop to be put to sleep while still allowing the program to take input (I’ll go more in-depth about this bot at another time). Moving on, NodeJS uses modules, which I’ve come to look at as libraries. The big difference between NodeJS and Laravel to me is that Laravel is an all-in-one package, and there are very few libraries in it that you can take out as they are a core part of the framework. For NodeJS, in it of itself is a very basic framework that allows you to build on top of it. This means you get to pick and choose what you want to use, and every module has it’s own guides, tutorials, and release schedules. I think throughout the project, I’ve come to appreciate this while coding because there are a ton different ways you can approach a task with all the modules you can choose. Lastly, NodeJS runs on various platforms. PHP requires you to have Apache or Ngnix, which could be a limiting factor for running code in different systems. With NodeJS, it runs in most modern OS, so it became nice not having to worry about running code in my Ubuntu or Windows OS (while my teammates could run it easily on Mac).

I want to say that programming has been the hardest part, but this has been so far from the truth. One of the things we learned has been SCRUM, and with that comes the limitations of how we can apply SCRUM. I’ve come to realize that maybe the purpose of showing us SCRUM is to give guidance on how to organize ourselves, but the fact stands — We only meet twice a week and my entire team has various schedules and knowledge of MERN that we need to work around. We’ve used SCRUM in a very unorganized way, with the upside that we could actually work around our different situations. For example, our sprints are set to be every week by the program director, but we’ve been lenient that not everything has to be finished in a week. We could extend any deadlines we have, as long as it doesn’t conflict with finishing base product we need to present. Next, the challenge of people dropping out. If there was 70 people in our program, there’s probably only 50 now. Our team suffered 2 losses because those members had no time or felt intimidated by the difficulty of the program. I’ve had thoughts of dropping out, but I’ve come to accept this is a welcoming struggle that will benefit me in the long run.

To end on a good note, I believe our team will be able to deliver a good product (CUNYCodes wise). I’ve also started applying the SCRUM method in my own little way, as I’ve seen that being able to decide what has to be done during a sprint has made my tasks a lot more organized. Finally, my college semester has started, and I plan to make the most out of it (classes range from Ubuntu courses, to e-commerce and advertising, to Operating Systems and how they work with hardware). This should be an eventful half of 2018.

For my next blog post, I’ll look to get more into the technicalities of MERN and how my team is using it, while also explaining more on how I’ve come to use SCRUM in my day-to-day tasks. I’ll give a summary on our first login system and how we’re going about our next phase of the project.

Part 2 : https://medium.com/@sashary/cunycodes-and-working-with-mern-stack-serve-and-the-finale-f801fa2ce985

--

--