Home > College > What You Need to Learn Before Leaving College

What You Need to Learn Before Leaving College

October 22nd, 2009 Josh Leave a comment Go to comments

Leaving College

In the last few years, I have interviewed a number of college students and graduates (Computer Science) and recognized an obvious deficiency in real world skills. While most have gathered details on how to work independently and discipline themselves to learn, the students lack exposure to life outside of a classroom. Those that understand stand to perform better since they are familiar with expectations.

What can the other candidates do to improve their chances of landing a decent job straight out of school?

…But I Have Straight A’s

Straight A’s will not make you a CEO, only a great entry level employee. Straight A’s means you are great at doing assigned work. Leading a company requires social skills, vision, and creating work when there is nothing tangible there.

– Ryan Healy in 8 On-The-Job Rules You Unfortunately Can’t Learn in College

Note: I am not making excuses if to not finish the curriculum. Put some effort in and you will be out soon enough. After all… I made it.

Traditionally in academics, we provide you problems that teach core concepts: object-oriented programming, data structures, proper database design, etc. Beyond that we need to foster the ability to perform independent thought and collaborate. You should receive an overview of software design patterns, when and where it is OK to sacrifice quality for the sake of performance, or to how to make accommodations to meet a deliverable.

The real world is much more open-ended. You are responsible for the decisions you make. Did you make a design decision that supports reusability? Does the design pattern hinder the ability of the application to extend beyond its initial scope?

Defining your own design, also requires you to sell that design. If no one else is biting, most likely it’s a bad decision or was explained poorly. Not everyone will agree and will find points of design failure. Expect that. Your ability to mitigate failures those will improve with experience.

Requirements?… Check

Requirements always change from start to finish of a project. Be prepared to be told your release date has been moved up a week or you are responsible for an entirely new set of features. How does this impact your current work to date? Do you need to modify your design without a complete rewrite? You may also be forced into a negotiation for what features are important enough to hit deadlines and which can be left out.

Twenty-One Year Old Looking for Solution Architect Position

Leading teams of one or two does not qualify you lead developer. No developer position in college prepares you for the pressure of the role of solution architect, responsible for multiple implementations and ensuring teams have a clear understanding. You will not know how to manage until you really manage.

Instead focus on team player skills. Work on an open-source project. Build a solution that solves a problem. Leadership skills are identified when you state, “I took ownership of building the flux capacitor by proposing a design to the rest of the team, and after some discussion, built a proof of concept and focused on integrating with the solution.”

Coding by the Book

Working with teams will get you exposed to other developers’ source code. When you went through your introduction courses, everyone was taught to code using the same standards. Just like fashion, people change coding styles over time. Stop reformatting their code to follow your standard and evolve a set of standards that the team will adhere to.

Stop Wasting Time Rewriting Existing Code

Moving into my last point, it is important that you build core understanding of basic data structures and OOP. Once that foundation has been laid, in the real world, you need to focus on using external libraries, and code that has already been written. Understand how frameworks are designed, how to integrate with third party components, and when not to reinvent the wheel. While doing this, you will easily see that there are many different styles (interaction, development, standards) that other authors use. In doing so, you may create your own unique development style.

As a last point, the following are skills I was not taught in college that are important to understand post-classroom:

  • Developing simple reusable libraries
  • Web services
  • Proper exception handling
  • Debugging techniques
  • Writing unit tests
  • Revision control and source merging

What do you think students stand most to understand before entering the workforce?

Categories: College Tags:
  1. No comments yet.
  1. No trackbacks yet.