Week 4 – Stress, Imposter Syndrome, and Time Management

Finally the time has come to put the plan into action. Last week our group has finalized the project plan and split up the tasks. Since it has been a while since I’ve worked with MERN stack, I have taken most of last week and part of this week to review materials and watch tutorials. However, even with hours of tutorials, I felt I am incapable of doing the tasks. I was stressed out, distracted, and felt like I didn’t know anything even after days of tutorials. In this blog I’ll talk about how I have coped with this feeling of uncertainty.

During past few days I had difficulty juggling my time. I had many responsibilities including finishing assignment for another class, things needed fixing in my home, and some other personal plans. On top of that I needed to do refreshers on the tech stack and finish my portion of the project code. I felt really overwhelmed, which led to stress, lack of sleep, irregular eating, and not being able to concentrate, which led to more stress, and thus a vicious cycle. I was drained physically and mentally, had to find a way to break the cycle. I’m sure you probably had similar experience before and possibly in the future as well. I hope my escape plans can come in handy for my future self and for you too.

First, I made a list of everything that I needed to do for the week. I broke it down in small details. Next, I have picked out things that could be done in half hour or less and started checking them off one by one. I remembered that some research results showed getting up in the morning and making the bed helps boost confidence and give a sense of accomplishment to attempt another. I applied same approach with checking off todo list. It also helped me not get rid of other worries and distractions so I can concentrate.

Next I prioritized the remaining tasks. My other class assignment was due before this one so I have put that assignment as top priority and also determined time blocks I needed to do my personal tasks. This helped me create a rough schedule of what needs to be done by when. For this class assignment, I’ve broken it down to time for tutorials, and each web page, and its implementations grouped by frontend and backend. I felt that the feeling of overwhelm came from the fact that I had this one huge task I didn’t know how to do. Breaking it down into smaller pieces and assign time slots helped me get started on it rather than dreading over it.

Lastly, when it came down to this Capstone project task itself, I had to convince myself that I am capable of accomplishing this assignment. I have watched entire series of Udemy tutorial but I felt that I am not confident enough to do this task. The fear of failing has stopped me from even trying. I felt the best solution to this was to just jump straight into the coding. The more I sat and waited, the more energy and time I have wasted and it did not improve anything. So I just started coding the simplest smallest html structures I knew and started from there. Then I was able to slowly remember what I did from previous project and also from the tutorials. I was able to search what I didn’t know and added piece by piece.

The imposter syndrome and stress from poor time management are things I am still battling right now and probably will for a long time but I have found some ways to deal with it and hopefully be able to deal with them in the future as well knowing I can do it 💪

Week 3 – Software Project Planning

It’s week 3. After choosing the tech stack, Team QuizBanana went straight into project planning. Luckily there was a very extensive plan template provided for us to refer to, it was not too hard to break it down. The plan in my mind was jumbled up and maybe < 50% formed, but as we worked on this together, I feel a lot of ideas got organized. I have much more clear view of the project and smaller task goals I need to achieve.

I think the key to having a successful and complete project regardless of the project type (software, culinary, medical, etc.) is to have a robust and thorough project plan. It is very crucial in shaping the project and becoming the base of the architecture. It is the time where the base structure and shape are constructed. Without a good plan, it would be more time consuming and risky to restructure or start from scratch. Think of a construction site. If a building was designed without thorough consideration of safety, material, and design, it would be really costly in time and money to either tear it down or make it bigger once the walls are put in. Even if has finished with poor structure, it may be weak to disasters like earthquake and tornadoes, which is also not we want.

In order to create a thorough project plan, we have approached this in multiple angles. We had client and client’s requirements, initial plan of codebase structure, software and libraries, flowcharts, wireframes, database schema, and breakdown of tasks with assignments and hours. Client and requirements is where we started, and also what is the most important part of the project. The goal is to satisfy the client’s needs. Therefore we lined up all the requirements and made sure our plan covers all of client’s needs. Having the main tech stack settled last week made it easier to figure out software and libraries to use, since there are related packages we can use for the project. Codebase structure plan came naturally since there are standard ways of setting up the folders based on the stack we are using. For flowcharts, we have created web page flow, login/sign up logic, and actual quiz logic. These help guide the order things should happen and also prioritize which parts need to be done first. Wireframing and designing database schema reinforces and puts together everything from above, that somewhat works as a check. By going through the wireframe, we get a good sense of design layout and fill in the missing parts in database schema or the logic. Then we divided up the tasks by features and pages to assign to everyone based on their specialty.

Personally, I dread doing planning despite it being one of the most crucial parts on project. However, having it broken down into pieces and being able to work on it in a collaborative team setting, I think the plan came out well covered and detailed enough for us to move along to the next step. Good team effort brought us a long way and I’m quite satisfied with the end result overall.

Week 2 – Choosing Tech Stack

It’s week 2 of the project. So far I have formed Team QuizBanana 🍌 with two wonderful persons to share this journey with and finalized on the project topic – software programming quiz. This project requires a responsive web application that needs CRUD features for users, have users create timed quizzes, send out links, receive submissions, and be able to view the result analytics. In order to create a good robust app, it seemed reasonable to start with planning. In this blog post I’ll talk about choosing tech stack as part of planning process.

There are many different ways of creating web app and different combinations of languages and frameworks. Mainly web app is divided into frontend (aka client side) and backend (aka server side). Frontend refers to everything that people can see on screen, mainly visual. Backend refers to all the logistics that happens to show what is on the frontend. A full stack refers to the set of tools/frameworks that are compatible to be worked with both frontend and backend. Since we are going to work on the entire project on our own, I would consider we are working on full stack development. Ones I’ve explored as options for our project were MEAN, MERN, Python + Django.

MEAN stack is shorthand notation for MongoDB + Express.js + Angular.js + Node.js. MERN stack is similar to MEAN except React.js is used instead of Angular.js. Both MEAN and MERN stack are based on JavaScript framework and Django is based on Python framework. The Python stack could potentially be Python + Django + Apache + MySQL. The reason I have picked MEAN and MERN are that those are the most popular and widely used stack for industry for web application. The reason I picked Python + Django is that python is relatively easy language and relatively easier to pick up.

Since I did not have experience working with Django, I’ve researched and found some information here1. This article lays out the key differences in the aspects of Django and Express.js side by side. Some of the points that stood out to me was that although Django is very fast, it is more complex than Express.js, less scalable, and less flexible. Since we’re going to be working on this in less than 2 months, I thought the key part was how fast we can pick up and use. Also no one from the group had expertise on Django. That ruled out the option.

Now left with MEAN vs MERN, I have found out some distinctions through this article2. Pros of MEAN stacks include many plugin availability, development possibility for different applications, while pros for MERN stack include easier learning curve, simpler UI, and better data handling for CRUD. Since one of our major functionality includes CRUD for users, and again easier to pick up, MERN seemed to be best option for our group.

After discussing these options with the group, we have unanimously agreed on using MERN stack since we all had some experience working with it and anticipated easier to find tutorials and solutions based on stack popularity.

References
  1. Jeel Patel. “Django Vs Express: The Key Differences To Observe in 2022”. Monocubed. https://www.monocubed.com/django-vs-express/. Accessed 12 Jan. 2022.
  2. Orione Solutions. “MERN vs MEAN : WHICH STACK TO USE IN 2021”. Data Science Central. TechTarget. https://www.datasciencecentral.com/mern-vs-mean-which-stack-to-use-in-2021/. Accessed 12 Jan. 2022.

About Me & My Blog

Hi there, welcome to my blog! 👋

This is first post so I would like to introduce a little bit about myself. My name is Pamela and I’m a former chemist in transition to become future software engineer. Currently a part-time computer science student working towards post-baccalaureate bachelor’s degree (aka second bachelor’s) at Oregon State University. I’m pretty close to the finish line and hopefully this program can help guide me to a career in tech that I can enjoy and grow in.

Speaking of career, I’m still in exploration phase and have not firmly decided what path I want to take. It is also why I took my time with the program to experience as many topics within computer science as possible. Hence I have diverse internship experiences too. My intern experiences include visual QA and creating tools at an AR/VR startup, big data and machine learning at corporate fintech, and building testing framework for healthcare solution at major tech company. I try to have an open mind and continue to explore both in school courses and outside so that I can give myself many doors to open.

The main purpose of this blog will be to document my journey throughout the CS 467 course – Online Capstone Project. In my future blog posts, I will be mainly focusing on the parts I have struggled, tips and tricks, and things I have learned as I work on a project with two teammates. It will help me organize my thoughts and hopefully benefit you as well. My blog posts will have two main topics: technical and management. Technical part will talk about project and code/language specific details and project management will be about communication between team members as well as project planning/logistics. 

This is my first time blogging, so it may be a little rough. But I hope you and I can both learn something new throughout this journey. Thank you for reading my poorly written first blog post, in return here are pictures of my two cute fur babies.

Mango (Top) & Jingo (Bottom)