David A. Windham thumbnail

FooBar Challenge Fail

I managed to not only to waste a bunch of my, but also my programming confidence over the last couple days because Google sent me down the rabbit hole. I’ve really been digging on the Go1 language recently. One of the first Go applications I hosted was Gogs2 and it’s turned out to be extremely memory efficient and reliable over the years. I’ve been searching around for a good lightweight framework fit for a project I’ve got later this year when I ran into the Fiber3 framework. I’m very comfortable with Express4 so I thought it might be a good fit. There is a little small hurdle though. I haven’t spent enough time with Go to give me the 99% confident sorta feeling I really need to feel comfortable about maintaining a Golang project for years to come. So I’ve been spending some free time with Go.

In doing so, I’ve been rummaging through the internet, (e.g. StackOverflow and Google) hitting up Golang issues like a newb5. Let’s face it, it’s how problems get solved. I’m at least 90% confident in my ability to find answers if I’m unable to solve them. I always tell folks it’s not rocket science, it’s really just about reading the instructions and being able to scan documentation. Read the Readme. It’s not some mystical mathematical or programming ability. I really believe it’s pretty simple stuff once you understand the fundamentals. I’ve sat through some coding challenges before and I’ve endured a couple whiteboard interviews. Well…

Google FooBar

Last weekend, I was googling around about garbage collection5 in Go and viola… The ever allusive Google Foobar Challenge appears. Google uses this as a secret hiring challenge to find developers. I use the word allusive, because after looking into it there are evidently bunch of folks who are desperate to give it a shot. They obscure links to it in source code and through various queries. I wasn’t looking for it and let this be my word of warning. It’s tough and it left me feeling like I shouldn’t use the word programmer in a description ever again even though I rarely do. I prefer to use the term developer because I’m realistic about my own skillset and I understand that what I’m capable of. I’m perfectly capable of developing reasonable programming logic and reading the documentation. I’m perfectly capable of maintaining a software stack end to end. I’m perfectly capable of finding the best solutions to problems. I’m capable of building software that works and is maintainable. I’m capable of… you can see my effort here in building my confidence back up.

foobar fail

Evidently, I’m not capable of solving the programming challenges in Google invited me to complete. In my defense, the coding challenges were in either Python or Java and I’m best with PHP, Ruby, and Javascript. They all translate though and after failing the first challenge four or five times, I was tempted to use my other skillset of reading the docs and finding a solution online. There are a couple out there if you go looking, but I really wanted to test myself. I managed to fumble through the first couple problems digging around, but I really got stumped on the third and gave in to hunger and reality that I was wasting my time trying to prove something to myself. I did give it a go and spent some time with the challenges. They’re not the type of programming you’ll need in the majority of development work, but the type of high level challenges that a company like Google is up against. The FooBar interface has a 48 hour timer on it. I left it up on a monitor just watching the timer count down thinking some stroke of genius might hit me. It never did.

With that being said, let me just say that the IT world is full of bullshitters, just as I would imagine any other industry. I like to say this often… “you don’t know what you don’t know until you do”. When I look back at earlier work I’ve done, I’m often embarrassed. It’s just so true in programming and other software related businesses. Programmers, developers, cloud experts, system architects, analysts, security, consultants… all of have em. In many cases, the folks doing the hiring or writing the check don’t fully understand what is actually being built or how it operates. The skillsets change so rapidly and finding talent has developed into an industry. I once had an employer bring me into a meeting with the top brass where they proceeded to ask me “if I was some sort of hacker” simply because I pointed out a loophole that allowed me, or anyone else for that matter, unfettered access to a bunch of sensitive data. Sometimes I feel like folks don’t even know what their actual skill levels are. I’ve been guilty. I ended up in a gig one time where I was in over my head and I spent months trying to keep up with the rest of the team. It eventually wore me down to the point that I ended up physically ill from the workload. I recently interviewed a potential partner where I noted that although he listed his occupation on LinkedIn as “Software Developer” and he had a computer science degree from a local university, he had virtually no experience and really didn’t have the slightest of clues as to what he is doing. Some of his Github projects were littered with passwords and other evidence of operating on a thin veil of knowledge. I felt bad for him. That type of blind confidence can be dangerous.

The team at Google does very much know what they’re doing. Even the fact that they managed to pick up on me delving into Golang error reporting and garbage collection is evidence. Their hiring process is likely even more challenging even if I had gotten through the FooBar tests. I also ran through a serious of tests years ago for Facebook too and I think I failed half of them. I’m Ok with that. I didn’t want to move to California anyway. The weather here is more suited to my taste. Part of me has become a little jaded on the ‘sell yourself’ economy where we’ve all become our own PR agents. I try very much to just let my work speak for itself. I’m not a dev-ops magician or ninja. I have the experience to know to read the documentation and test for errors. I have the years of practical application that gives me some insight. My best skill, and the one I enjoy the most, is solving problems. My little niche is a blend of programming, design, and development… where I’ll continue to excel even if Google doesn’t want me.

  1. https://golang.org/
  2. https://gogs.io/
  3. https://fiber.wiki/
  4. https://expressjs.com/
  5. https://en.wikipedia.org/wiki/Newbie
  6. https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)