Author Archives: brutonc

Overcoming Mid- Term Stress

You would think that by the final class of my second bachelor’s degree, I would have mastered the art of balancing many different priorities: working full-time, being a parent and student. However, when you’re struggling with a difficult technical problem that needs to be solved on a deadline, the stress of that issue can follow you around like a vengeful ghost.

I have run many marathons and always find my “wall” to be earlier than other people’s. In particular, at mile 16, a nagging thought will creep into my head – there are still 10 miles left to go! Nowadays, if I train for a marathon I make a conscious effort to change my mindset at mile 16. I try to break down the final 10 miles into smaller chunks in my mind. I also tell myself to take more walk breaks until I reach mile 20 or some kind of concession that will help me through the remaining miles.

I have a similar tendency when it comes to the middle of the semester. Here are a few techniques I’ve come to use when managing stress in the middle of a class.

Get Enough Sleep

I remember one health professional reminding me that, without sleep, everything else falls apart. When possible, I try to avoid working on intense assignments within an hour of bedtime. When is bedtime? For me, I simply use the Apple health sleep timer to dictate that for me based on my required wake up time. Of course, I’ve learned that there is an ideal wake up time for me (5:30 am) and I always base it on that. My mind is always fresher in the morning, so I would rather skip working at night and solve the issue the following morning. Of course, if you were in the middle of a breakthrough, sometime sleep has to suffer. But no matter what, if I have under six hours of sleep I make up for the following day.

Deep Work Then Break

In the book, A Mind for Numbers, the author argues that the most efficient way to learn difficult topics is to focus intensely and then allow your brain to process the problem in the background. She cites taking a shower or a walk is good ways to get distance from the problem and let your “diffuse“ brain work on it. I can’t count the number of times I worked on a project late into the night only to solve it immediately after waking up the next day.

The Pomodoro technique and other productivity hacks have popularized focus/break practices.

It can be helpful to set down the puzzle and return to it later

Avoid Unsustainable Responses to Stress

Stress-eating and stress-drinking are familiar enemies for me when classes get difficult. They can provide a temporary measure of joy when it is lacking. However, it’s better to replace these behaviors (which usually make you feel worse) with more sustainable activities that also provide a feeling of well-being. I enjoy booking time at the pool or swimming in the ocean. Instead of staring at a computer screen to solve my problem, staring into the bottom of the pool or into the blackness of the ocean removes distraction and is meditative. Plus, the physical demands force you out of your own stress cycle. Running with friends or getting together with people for lunch to talk about non-school problems can help. A basic activity like cooking dinner with a family member is also therapeutic (depending on the family member of course).

Say it Out Loud

I recently had a problem for one of my projects that manifested into a lingering feeling of stress. I reached back to the days of our first programming classes where the professor talked about the concept of rubber duck programming. For some reason, even articulating your problem in a sentence to someone else (or even an inanimate rubber duck) will often make you realize that you’ve overblown the problem. It will also help you focus on what specific thing you need to research. Writing down the basic problem and then breaking it down into easier to solve sub- problems has been my go to way to dig my way out of stress.

The rubber duck is a great partner to bounce ideas off of

Through endurance training, I also learned the importance of having a mantra. Even if you are against the concept of positive thinking, one phrase or statement that rings true can help you through difficult times. For me, it’s an old standard: “This too shall pass”.

Git Nightmares

Even though I’m in the final class of my computer science program, nothing puts more fear into my heart than the concept of operating a group GitHub repository. After talking to a few of my classmates and reading some testimonials online, it seems that I am not the only one.

How Not to Use GitHub

In one of my first group projects, one of my team members wrote a large portion of the code at the last minute and put it up and GitHub. Of course, he checked it into the main branch because we did not have any main branch protections.

Since he was in a different time zone, he made major changes to the code without checking in with us. Since he was using a different IDE, files were checked in that shouldn’t have been and we encountered all sorts of errors trying to run it on our IDEs. No one knew how to use a git ignore or any sort of real git commands. As a result, we had to re-base our whole project on his code and try to merge ours in manually with one person entering the code into his files. My code and another member’s code stayed dormant in lonely, separate branches, with no one understanding how to make pull requests.

Even if you understand the overall process, it’s easy to get knee deep into git and lose your place. One of my classmates mentioned accidentally making their whole computer into a GitHub repository. A quick search online brought up some similar stories. There are plenty of traumatic git interactions to be had. Why else would a site called Oh Sh**, Git!?! exist in the first place

Git can be a real headache, but it’s better than the alternative. Photo by Elisa Ventur on Unsplash

Gitting the Basics

I was really relieved and interested when one of my later courses devoted a lot of time to git, GitHub workflows and continuous integration techniques. After completing this class, I had a much firmer grasp on basic git commands and best practices. One of the hardest concepts for me has been the staging vs. committing process. In fact, even this week, my group mate and I realized that we erroneously had expected that a file on the group repository would be deleted from that location if we added it to a local gitignore file. We kept trying to push the local changes, expecting that file to go away, when really, we were just replacing every other file in the repository. This went on for an hour – which is really painful when you are working full time and going to school. But it was good for a laugh when we realized the flaw in our logic. Yes, it seems really dumb now, but when you really get into the weeds with this stuff, you can easily think git staging follows a different convention.

Every new group interaction brings the possibility that people won’t follow the basic tenants of frequent commits, reviewing pull requests before checking them in etc. So I was glad that my current group mates understood the value in methodically following a standard continuous integration workflow. We will still have plenty of merge conflicts to deal with while working in the same Unity project, but at least there is hope.

It Could be Worse

It’s only fair to talk about an even worse nightmare scenario than using git: trying to have a group project without using a shared repository. Unless each member is dealing with a discrete area of the code and one person is tasked with combining all these together, a group project without a repository seems pretty unworkable. While it does have a bit of a learning curve, the git repository is surely worth that investment.

Who Needs Graphics?

As processor speeds increase and game development technology improves, photo-realistic graphics have become ubiquitous. However, as I watch my daughter discover her favorite games, I wonder if high-definition graphics matter at all.

Having grown up in the 1980s, I witnessed firsthand the evolution of graphics from arcade classics such as space invaders and Pac-Man to more intense immersive experiences like Sonic the Hedgehog and Mortal Kombat. If you asked me which game was the most fun and engaging, I’m pretty sure the answer would not depend on graphic quality.

Early pixelated video game characters have become part of our culture

2-D or 3-D

For the past week or so my capstone student developer team has been discussing the look and feel of our final project. The project will include the ability to edit and play board games. This has made me wonder about the benefits of 2-D games with simple graphics vs 3-D games with more immersive photo realistic graphics. Granted, I don’t anticipate anyone in my program developing high definition in-game cinematics, but making these considerations as an important part of game development.

Since we started the project, I’ve had a few opportunities to think about the types of games my 10 year old daughter plays. In particular, she enjoys Roblox, Minecraft and the 2-D chess platform Lichess. All three games could be considered “Lo Fi“. While Minecraft and Roblox are 3-D, their focus is primarily on simplicity and massive online interactivity. Similar to my group’s project, Roblox allows individuals to create games and play levels.

Roblox – Adopt Me! has had 3.0 billion plays on Roblox. Image Credit: Roblox

The Demands of Immersive Gameplay

Many video game players have become accustomed to an immersive experience. For example, first person shooter style games such as Crysis have lead the way in interactive surroundings and high definition graphics. However, they have often been notoriously demanding on PCs and processors.

Similarly, open world style games such as Red Dead Redemption allow the player to travel across wide landscapes and interact with a sandbox-style environment. In my days as a video game tester, I worked on an open world project that presented considerable demands for the developers. In particular, they had to design the game in such a way that objects loaded into the world only when the player approached them. They had to avoid objects appearing to “pop-in” to the player’s field division. Often, using artfully placed fog or other artistic elements can help camouflage this effect. In the case of the beloved Red Dead Redemption, an immersive gameplay experience when coupled with a good story line has proven to be an extremely effective.

In my daughter’s case, she has been exposed to a variety of styles of games. However, at this point, she gets the most amusement out of Roblox. It allows her to interact with others and screenshot awkward visual bugs. Although I’m sure it’s not the intent of the developers, allowing users – particularly kids – to design their own level result in a lot of wacky chaos that young players find particularly entertaining. Like Minecraft, the 3-D graphics in Roblox are simplistic and block-like, easy for young players to manipulate and understand. There is no true realism but a very basic sense of physics that can be used to design levels.

The discussion of whether or not “good graphics” are needed in a game has been going on since the beginning of video games. The conclusion always seems to be somewhere in the middle – it depends on the goal of your game design. If it’s a lightweight, social experience that you’re going for, no need to rely heavily on graphics. But if you are looking for a realistic immersive experience, it’s worth investing in quality graphics.

How to Run a Team with Varied Skill Levels

In one of my first group projects as a computer science student, a team member with a background in software engineering overwrote a segment of code that I spent a lot of time on.

However inconsiderate, in a group project, I was thrilled to have members who actually showed up and worked on the project. It dawned on me later that I had spent the same amount of tuition as he did, but was robbed of a potential learning opportunity. Not only was I unable to see my own code used in the project, but I missed out on the potential learning opportunity to improve my improve my skills.

Unlike short-term group projects, tech organizations have hierarchical structures and training processes. However, team members will always have different strengths and areas of expertise. Ideally, a knowledge sharing strategy and code review practices could benefit the whole team.

Code reviews can benefit the whole team

Internal Knowledge Base

Senior team members are pulled in many different directions. Asking them to document their best practices and instructions in an internal knowledge base may seem painful at first, but will save them time in the long run.

An internal knowledge base is a central, inward-facing site featuring knowledge articles, guidelines and examples for staff. This is similar to a customer service knowledge base that is commonly used for customer to seek solutions; in this case, it is used for employees. It can be an invaluable tool for on-boarding new staff, standardizing processes and reducing on-one-on training.

Many organizations use a wiki tool such as Confluence to organize a knowledge base. Confluence has some built in “How-to” article templates that can be used to and several easy-to-use navigational features.

Code Reviews

A code review is a way to ensure that your more experienced team members can share their knowledge and help others grow. At the same time, junior team members can begin to incorporate improved practices. This process offers accountability for the member whose code is reviewed and is perhaps the most beneficial form of training available to a junior engineer.

While some styles of code review require in-person meetings, repositories such as Github offer additional tools for lightweight code reviews. Over the shoulder style code reviews or paired programming can also be used. Experienced programmers must understand how to deliver quality feedback respectfully, will also help their soft skills.

Mentoring is important part of training

Avoid Competitiveness and Intimidation

In analyzing ways to improve diversity in computer science, some programs such as Harvey Mudd School College have implemented ways to prevent students from dropping out or avoiding computer science. In particular, women tend to drop out of computer science program in greater numbers than men. There is no definitive consensus on the reason for this phenomenon. One potential cause is that beginners who are new to programming are intimated by others in the program who have already had experience with code.

If an organization would like to remain competitive, it is important for all team members to accept the responsibility of mentoring less experienced programmers. Beyond this, seasoned members should realize the impact that they can have on those with less experience and work to empower them. This will ensure a long-term benefit for all.

Why Go Back to School?

In his book You’re Not That Great: (but neither is anyone else), Bachelor Executive Producer Elan Gale argues that a negative mindset is more motivational than a positive one. Many success stories, he contends, are the result of trying to prove someone wrong. In other words, we want to teach the haters a lesson by becoming successful.

In my case, I decided to get a science degree more than 10 years ago when pregnant with my daughter and unemployed. Getting a degree in computer science would be the ultimate way to address a major case of imposter syndrome. Attempting to switch career tracks as a mom in my 30s and 40s was a daunting prospect. People (imaginary haters) might ask, “Who is this old lady telling me about computers, she can’t possibly know what she’s talking about!” Maybe a CS degree would prove them wrong.

Major life choices like getting a BS can be difficult

Why Computer Science

My first degree was a BA in English from the University of Minnesota Twin Cities. The youth of today might refer to this as a “chill” program. Not because it is the eighth coldest campus in the United States, but because it was relatively easy. I won a writing award for doing a Freudian interpretation of the 1970s zombie movie Dawn of the Dead. Yes, that’s the kind of thing you win an award for when you are an English major.

To decide on a new degree, I made a list of all of the science degrees I was interested in – economics, life sciences, computer science. Then I looked into the requirements and the career areas for those degrees. After a while, it became clear that computer science would have the most practical application for my career and was a reasonably good investment. The Bureau of Labor and Statistics consistently shows a great median pay and job outlook for computer science.

Why Spend the Money on a Degree

Before being unemployed and pregnant, I had worked as a QA tester in a video game studio full of engineers and designers. A few of the engineers taught me a little bit about coding – which had inspired me to learn more about it. One of them was adamant that you don’t need a degree or formal education to code.

I’m sure he is right. There are certainly many examples of highly successful people in tech without traditional degrees. But research suggests that the financial success can be linked to degrees and certifications.

Conquering Math

For me, the ultimate roadblock in any science degree would be math. I knew a computer science degree would require some math. Sal Khan, founder of Khan Academy notes how math competency builds on each previous skill. If you are not solid in Algebra, you will struggle with Calculus. If you have any gaps in your fundamental math skills, those compound each time you try to learn something new.

I spent many of my pregnant days on Khan Academy progressing through the math modules. I started with elementary school math where I found weaknesses in my times tables. Khan Academy took me all the way through algebra and geometry. After that, I took formal online courses through the university of California in pre-calculus, calculus I and calculus II. This process was not easy, I cried on more than one occasion.

An online degree is helpful for non-traditional students

Choosing OSU

It may be harder to imagine now, but back in the day when I began researching programs, traditionalists believed an online degree did not provide quality or legitimacy. For me, the choice was to either get an online degree or to do nothing. As a new mom, the fact that it was online made it possible. Once I decided that doing nothing was not an option, the decision was obvious.

Oregon State University’s online Post-Bachelor’s in Computer Science seemed like a straightforward path to complete the degree. (Of course, it took me a few times to be accepted into the program as I worked my way through the math requirements. )

Was it Worth it

Five painstaking years later, I’m on the precipice of completing my degree and being in the program has allowed me the career change I have been looking for.

While the imposter syndrome is still there, I often remind myself of all of the difficult technical classes I made it through to get here. That confidence is ultimately what my pregnant unemployed self needed to silence the haters.