While an undergraduate computer science degree may be a good starting place for learning how to be a successful developer, it’s the real-life application of these skills that will set you apart from a typical graduate. Although I don’t expect the university setting to be able to teach everything, there are still some areas that I found my education to be lacking. Here are three skills that I consider fundamental to software development that I ended up teaching myself outside of the classroom.
Debugging
If you’ve ever worked with C++, you know that trying to track down a segmentation fault without debugging tools is much like trying to find a needle in a haystack. As an undergraduate, I spent countless hours commenting and uncommenting regions of code and writing variables to the console when simply loading the binary into gdb and entering the correct series of commands would have pointed me to the exact line where my error was. With a little direction, students could save hours of time and learn valuable debugging skills by using modern visual debuggers.
Testing
Not surprisingly, when students don’t learn how to debug their code they rarely know how to test it. I didn’t start writing out test cases myself until I was a teacher’s assistant in grad school. It was out of necessity rather than convenience; a reliable way to grade homework assignments from students who used the phrases “it works” and “it compiled” interchangeably. If agile patterns like Test Driven Development are to gain a foothold, it is imperative that developers learn testing as a cornerstone of their curriculum.
Version Control
Tools like Git and Subversion are wonderful for working on teams, but I hadn’t even heard the word “Git” in university until explaining to an instructor how I’d lost a project to a hard drive failure. When I started an internship at RSI, one of my first fumbles was to commit merge conflicts into my mark-up, but thankfully the commit was easily reversed. Considering how I pieced together group projects with copy and paste, I’m disappointed these tools weren’t taught as an alternative.
Overall, I’m very happy with the knowledge that I obtained as part of my undergraduate education, but I encourage those in school now to take the opportunity to be open to beyond what they hear in lectures and labs and continue to learn outside the classroom.
What Are Successful AI Leaders Doing Differently?
In our recent study on AI-infused products, we wanted to get to the bottom of what really differentiates those who are leading the charge in AI and those who are falling behind. So what are AI leaders doing differently? Read this article to find out.
Why You Should Involve Your CEO in Your AI Implementation Process
Did you know that directly involving your CEO in the AI implementation process can significantly boost your chances of success? In our survey, we found out that companies whose CEO was involved in the AI implementation discussions were more successful in implementing it than those who did not have CEO support. Learn more about why CEO involvement is critical to a successful AI implementation in this article.
Testing in Data Modeling: An Essential Step Today
Data modeling is the process of analyzing, defining and restructuring all the different data types your business collects and produces, as well as the relationships between those bits of data. By using different tools and techniques, data modeling helps the organization to understand their data. Learn more in this article.
The Importance of User Interviews in User Experience Design
User Experience (UX) design is a crucial process for creating products and services that meet users' needs and expectations. To design a great user experience, it's essential to deeply understand the people for whom you're designing. One of the tools we can use in this process is user interviews. Learn more about why user interviews are such an important tool in this article.