So I haven’t been the best person about keep this up to date. School got the most of me, but I don’t have that excuse anymore because I completed my degree three weeks ago. I finished off my last semester with a 3.53 GPA, which means I graduated with honors! It’s been a lot of hard work and I’m glad it’s over. Now that I’ve completed my degree, I was thinking of looking back at what the most prominent pieces I learned were. Let’s take a look.
Data Structures and Algorithm Design run the CS world.
I took a Data Structures class in my second semester at BU. It was one of the best classes that I took, and learning the difference between linked lists, binary search trees (BSTs), and hash tables keep coming up in all of my other classes. I mean, everywhere, like in Operating Systems and in Computer Architecture classes.
At the same time, these data strcutures need to be performant. Enter algorithms!
Understanding the number of computations you’re asking a computer to do is
really important, and studying algorithms gives you an opportunity to determine
often misconcieved notions. In general, try to make a few loops as possible,
if..else statements check the most common cases first, and keep data
sorted if you receive it sorted.
Pick a Team that knows the tech
Wait, a lesson about working in teams when working in a CS degree!? Novel, I know. But this is one of those lessons that I learned the hard way. Storytime. I work with a web application day in and out. So I figured my Web Application class would be a walk in the park. Sure they wanted us to use PHP, but PHP has actually come a long way since I last touched it in 2006; I was pretty happy to do so. So a team of two asked if I wanted to work with them. Not wanting to seem stand-offish, I agreed. We meet about the idea, and then one of the team member unilaterally decides what the application will be. At this point, I get nervous; but that changes when I see that they’ve even comitted to getting web space and a domain name. Great, they’re super excited and proactive. This will be great.
Except that they just wanted to “design” the site, despite the fact that we were in a CS degree. So I try to get this person to commit to making basic HTML templates. Yet they can’t work with a text editor, and keep sending out image files of wireframes they created… not so great. Knowing I can’t make this person change if they don’t want, I ask them to make graphic elements for the page. Simple things that we can then put into a cicada pattern for scalable background elements. Somehow they went entirely off the rails. They had a melt down that they were losing control of the project, and decided to get us to do what they wanted. Not wanting a power struggle, I relented. Yet each commit I tried to make to our repository wasn’t used, and by the end of the project we had a fake sales pitch to present instead of a completed project.
The left me with a B in that class, which should have relly been an easy A for me. Had I partnered with people that knew the technology, then I would have been much better off. At the same time, I learned some important things about team dynamics. Avoiding conflict isn’t always the best course of action.
I think this is enough for the time being. Hello again, internets. I’m glad to start writing on this some more. See you in a few days.