Last week we got matched up with a group for the capstone project, which is the last class I have for the computer science degree program. We had our first meeting a few days ago. We did a video chat, and I like the people in the group. They seem really nice, and smart. I am sure that I will like working with them.
This week we are in the planning phase, and an interesting question has come up. We’ve been discussing which tools and frameworks to use. Do we use a framework that we all are familiar with, or do we expand our knowledge and learn something new? We had a mild difference of opinion. We could choose to see that as conflict, but I think we should choose to see it as a fascinating opportunity.
In my opinion, at its core this decision is about whether we want to learn new skills, or go deeper on some skills we mostly already have (or a combination of both). Which route will lead to a better final product, and which route will teach us the most about this profession that we all aspire to?
Here’s my take on this. I think our priority should be to make the best possible app that we can show potential employers. One thing about this program I’ve noticed is that we get a little bit of experience with each thing and then move one. There was one term of assembly language, one term of databases, one term of data structures, one term of operating systems, etc. But I feel like I while I’ve gotten a good overview of a lot of things, but I haven’t gotten really good at any one thing. I haven’t had a chance to go deeply into one area, at least not as much as I would like. This is not a criticism of the program. I think it has to be this way. There is a lot of ground to cover, and it’s impossible to cover everything. A broad overview is exactly what we need.
But I personally would prefer to use this project as an opportunity to show some of my best work. We only have 10 weeks, and week two is already almost over. I think if we use this term to learn brand new frameworks, we’ll lose time figuring out how to the framework works, and we run the risk of spending the time it takes to get familiar with it, only to find out that it’s not the best tool for the job. Whereas if we use tools we have experience using, we hit the ground running.
I just realized that I’m approaching this as a musician might. When I was a music major we had to do recitals at the end of our program, and the recital was supposed to show our most polished work. Most recitals are video and audio recorded, and people use the recordings to apply for graduate school, or for auditions, so you want to put your best possible foot forward. That is how I was thinking about this capstone project. Its a culmination of all of the skills we’ve learned in this program to make the best possible product.
In another situation, it makes sense to make something using a new framework as a way to learn the framework. This is a great way to learn. You can follow a tutorial step by step, but when you start deviating from the tutorial to do your own thing, that’s when the fun begins. I’m a big fan of learning by doing, because that’s the learning that really sticks.
If the tools are equally effective for the job at hand, I prefer to use the tools that we are more familiar with. I want to maximize our chances for successful building a great app in the time we have to do it. That’s not necessarily the best path or the only path.
But one important aspect is how we handle the disagreement within our group. We each have to be able to articulate our reasons for what we want in a way that’s respectful. But even more importantly, we have to listen to each other’s point of view with an open mind. And I have to say, our group has done this really well.
At first the question was about whether to use one framework or another, and after some messages back and forth, we quickly got to the real question which was, do we want to do something we’re familiar with and try to learn it more thoroughly, or do we want to learn something new? I think neither one is the wrong answer, it’s just a matter of decide what our priorities as a group will be. We’ll have a face to face meeting in a couple of days to discuss the pros and cons. I do have an opinion, but I’m willing to be overridden, especially if we can determine that a new tool is better for the job at hand.
Almost every student I’ve talked to across many disciplines says they don’t like group work. But I believe that the people who designed the curriculum knew that working with others is going to be a permanent part of our professional lives. When you work by yourself, you get to have full control over how you meet the requirements of each assignment. In a group, you have to discuss pros and cons of various solutions, and come to an agreement, which sometimes means compromise. Our group has a great opportunity to practice that right now, and that’s how I think we should look at it. We all want the same thing: to make a great app, and learn as much as possible in the process.
It’s good that we’re facing some differences of opinion so early on. If we can solve this in a way where everyone wins (and I am almost positive we will), we will be building a group dynamic that will serve us for the rest of the project.