I wrote this in response to a question on quora, but I want to stash it here for future reference:
I have given this question a lot of thought over the years, and have gone back & forth in my opinion about the importance of GPA, and particularly cumulative GPA. At this point, the culmination for me of all that thinking is that I *do* believe that cumulative GPA is an important criterion.
To explain why, you’ll have to indulge me for a few paragraphs of seeming digression. I promise there’s a point coming. If you must, you can skip down to the bullet points below, although you’ll lose some of the context.
The nature of our industry has changed enormously over the past 30 years. There was certainly a time in the past when the standard operating procedure in the tech industry involved hiring lots of coders, sticking them in a windowless room somewhere, and feeding them stacks of detailed technical specifications which they converted into code, with the assistance of pizza & caffeine.
One formal name for that process was the “Waterfall Method” of software development, in which some non- or semi-technical person talked to the customer, gathered their requirements, handed them over to a somewhat more technical person who translated them into a tech spec, which was in turn handed off to the coders to code. Their code was then handed off to the testers to test against the original requirements, and if all the tests passed, the end result was delivered to the customer with a handshake and a wave goodbye, possibly a year or more after the project started.
This was, of course, terrible, if the goal was to actually please the customer. Maybe the folks recording the requirements got it right – and maybe they didn’t. Maybe the person translating those requirements into a spec got it right – and maybe they didn’t. Maybe the coders were able to accurately convert that spec into working software – and maybe they weren’t. Maybe the customer’s requirements hadn’t changed during that year – but they probably had.
There is a reason why pretty much the entire industry has converted to variations of Agile software development, a process whose foundation is based on getting continual stakeholder feedback, and which by its very design puts the developers into more direct contact with customers.
Couple that with the rise of the web, and more recently cloud, and what you have is an industry where much smaller teams, consisting of a mix of coders, designers, testers, product managers & business people, are developing software over very short time-scales, and in intimate communication with their customers on a weekly or even daily basis.
Sounds like the recipe for a successful startup, right? It also sounds like the recipe for a successful Extreme Blue team, and that is intentional.
But what that means is that everyone on the team has to be good at a wider variety of things. Our software engineers need to be good at coding, but they also need to be good at:
- communicating with teammates and customers, in clear language, using the appropriate level of technical detail depending on the audience
- juggling multiple timelines and multiple, sometimes conflicting, deadlines
- working with stakeholders to evaluate and constantly reprioritize pending work
- understanding customer pain points and translating them into software solutions that actually solve those pain points
- identifying roadblocks quickly, notifying stakeholders of potential risk, and asking for help
The more that I have thought about cumulative GPA over the years, the more I have concluded that while it’s by no means perfect, it is still a valuable indicator of a student’s ability to be successful at all of those bullet points above. Your required non-major courses [hopefully] help you learn how to communicate more clearly, and also give you perspectives that are different from your own – perspectives which might be similar to those of your future customers.
Having to juggle 4-6 courses per semester, and perform satisfactorily in all of them, is excellent training for the multi-threaded, multi-tasking nature of modern industry. Time management is critical to us – if we tell a customer we’re going to ship on a certain date, we either need to ship on that date, or we need to alert them as far in advance as possible that we’re going to miss that date.
And recognizing that you’re struggling early enough to raise the alarm, ask for help, adjust expectations, renegotiate priorities (or drop the class) is a critical part of that.
To be brutally honest, cumulative GPA also tells me how good you are at digging in & doing stuff that irritates you & which you would much rather not be doing. Because EVERY job has some of that. EVERY JOB. I love my job more than any other job I have ever had – I have told many many people that I think it’s the best job at IBM – but there’s still occasionally some stupid thing I don’t want to do. Thankfully my parents’ and teachers’ [unwanted] attention to my grades back in the day gave me the focus to power through the occasional TPS report & move on to the fun stuff.
I wrote this in response to a question on quora, but I want to stash it here for future reference: I have given this question a lot of thought over...