I’ve only been turned down for an interview once with this stated as the reason. With 20+ years in IT behind me that’s pretty good going from a personal perspective. However, I know this happens to others more frequently, and it’s a problem.
What has prompted this article is that I recently picked up a CTO role for a budding startup. They’d already spent time and money on producing the basis for a tech startup. They’d also engaged with a company to develop the mobile applications. That relationship had only managed to produce what they described as a working prototype and needed things finished with some additional features.
Once I’d started digging around in the code my heart sank. The company that wrote this code had been recommended to them from no less that a Microsoft MVP. So they should have been in good shape to get things built. The main developer had a Masters Degree in Computer Science from a prestigious university, so should know a few things about technology, right? … wrong.
This developer had managed to produce the most garbled and confused code base I have ever had to work with, the quality of the code is indescribably poor. He’s displayed a complete lack of understanding of even the most basic principals of object orientation and displayed a complete, fundamental lack of understanding of how the internet works. Yup, a mobile apps developer that doesn’t understand the basics of the internet.
I can forgive some programming language hiccups and idiosyncrasies but to not even understand what you’re doing at such a basic level is inexcusable. Especially when you are selling yourself as a mobile application expert with a masters degree in comp sci and taking peoples money.
I cannot fathom where to start to describe how bad the code is. Right up from executing POST requests when they should be GET (Or PUT sometimes or any variation thereof, never the right one) or thinking that authentication is getting an Id from a local device database and considering that as “logged in”. Or maybe the method called GetPeople that gets locations (inside an object called People) but is actually pointing at the endpoint that gets Activities (using a POST of course). Or is it the droves of test data being generated in the body of production code methods? … sheesh I don’t know. Or is it one of the 35 dialogs that could be shown between login and the first application page being displayed? Does a user really want to be informed every time you make a web request? I literally don’t know where to start. There isn’t a single line of code worth keeping. Not one.
The architecture isn’t even worth mentioning as there simply isn’t any. Need to make a web request? Fine, create a new one and copy all the code from somewhere else and change the URL. In an application with just a few pages there are 262 instances of “new HttpClient(“. For the uninitiated that number should be between 0 and 5.
Unfortunately, this isn’t the first time I have encountered a situation like this. I once worked with a guy that had equally tied himself and consequently his entire development team in knots. This chap had a Masters in Mathmatics and Computer Science from Oxford University. Yes, the Oxford University. He had equally ballsed up in a completely different way.
The point I’m making here is just because someone has a fancy sounding qualification, don’t assume they won’t or can’t ruin your application development efforts. “But, but, but he’s from OXFORD!” And conversely don’t assume that someone without a fancy sounding qualification can’t get the job done. That is a complete and utter fallacy.
I know it’s anecdotal but the two biggest messes I’ve encountered in my career were both entirely created by the “qualified” developer.
(image credit http://www.waxlyricalgames.com/megabadcode/)