Be grateful even for hardship, setbacks, and bad people. Dealing with such obstacles is an essential part of training in the Art of Peace.” – Morihei Ueshiba
When the venture down this road into the public world of blogging began, I am afraid I boxed myself in by saying, “The purpose of this blog is to take known coding interview questions, analyze them, formulate requirements, find a complete solution, and present one or more solutions for the question. The question will be the kata; the nameless interviewer will be the tori; and I will be the uke.” I have grown quite a bit in the past several months of silence. Reading, studying, learning and practicing have helped me to understand that my subject is restrictive and misleading. I don’t know if anyone should ever apologize for naivety, but it will help me by way of taking a first step forward into a new way of thinking. I am sorry for my restricted view that technical interview questions, whiteboard questions, and the ability to code on the fly in front of interviewers was the key to the golden opportunity in software development and also about the implication that this blog made that these were the most important things to consider. There is so much more to this software development thing than I could imagine. I vow to break free of this restricted mindset and state a new purpose, but let me tell you about my journey first.
I work for a small company. A company still struggling to find its foothold in the world. A company in its adolescence. A company kind enough to take a chance on a budding software developer, sans any training in actual software development. The leaders of this company, while extremely knowledgeable in their fields of expertise, are not business men, and are still learning how to be business men. Earlier this year, after months of subtle suggestion and coaxing from my product manager, my team members, and most notably myself, the Chief Executive Officer announced that it had come to his realization that the company website must be updated, and that, being the most vocal of the proponents, I would be the lead of this project. I was energized by this validation and poured my soul into the project, admittedly unbeknownst the the CEO.
In 3 weeks I had learned enough about .NET MVC3 to become extremely dangerous. In 3 months I had the current static website translated into MVC3 so that it worked exactly as the current static pages did; however, notably faster, and without the cruft that built up after many years of various developers adjusting and tweaking the site, without source control and the other tools common to the trade today. The goal was to learn MVC in the real world, and get the site into source control where it would be safe for posterity. Both goals were achieved.
In addition to the translation of the website, I helped build the front end UX for a web application that was going to be part of the updated site. It had been announced with great fanfare by the board of directors in a press release in which a deadline of 120 days was given to complete the web application. Despite the development team’s opinion that the cart had been put before the horse, this news had already been reported through all the news outlets that would listen to the story. And so we completed it in less than 120 days, knowing that it would go live before the updated website. Since our shop develops desktop applications, it was the most beautiful thing that I could create with the internet being the only mentor I could find to help me learn web development. Aside from my loving pets, I consider it my most cherished child, and I keep it safe in my BitBucket account to show to anyone who delights in these things.
As the go live date for the web application neared, without definitive plans on the future of the website project as a whole, my product manager and I secretively made plans to point the domain alias at the MVC version of the website with the web application placed neatly where it should be and made plans to move forward with the redesign of the company website on our own. The day before our secret plans were to come to fruition, the members of the board called and announced that they had contracted to have a WordPress site built to replace the antiquated company site. My product manager was relieved. I died inside. For the next 2 months I clutched at everything for motivation, and then one of my co-workers, one third of our development team, announced he was moving on to greener pastures. I was lost. The ship was sinking and I had forgotten how to swim. I realized that if I was going to survive and stay sane I had to learn what I didn’t know how to do. I had to learn how to search for a job, even though the one I had was still OK.
Little did I know that searching for a new job was going to be as difficult now as it was when I was green with no experience at all. After updating my LinkedIn page, polishing my resume, and making it public on Monster, the calls from recruiters poured in like an unstoppable deluge. Offers for this and that came in, sometimes as many as 6 a day. It was exciting and fatiguing at the same time.
Nothing incredibly interesting came for several weeks, and then, it came. A large, well known company wanted to vet me for a web development position. This was exciting because I had just found I was passionate about web development and was excited to see where that career could take me. I decided to move forward with the interview process although I was ambivalent about the company culture and working in a large corporate environment.
The interview process moved forward as follows:
- 4 technical assessments were administered in order to gauge my aptitude for items in the web development arena.
- A technical phone interview was conducted in which we discussed the points on my resume and went through several technical scenarios which were formulated as, “what would you do if …” questions.
- 6 personality assessments were administered.
- And finally a personal onsite interview with a panel of interviewers was conducted which included 3 white-board questions.
It took 3 weeks and was exhausting. The most exhausting part about it was that, by the time I had reached the personal interview, my research on the company had convinced me that the company culture fit was not right for me and that I was most likely going to decline any offers for employment from this company. I went to the personal interview anyhow hoping that they may change my mind about what I had read from others about the company culture on Glassdoor. Unfortunately, I realized that the reports of horrible culture were factual when, during the white board questions, the interviewers decided to multitask by having a business meeting while I answered the first question. During the second question, half the interviewers left the room to do something with no excuse or apology.
Unfortunately, I did not get the great pleasure of declining their offer, because there was no offer. The reason given to the recruiter for not proceeding with an offer was that they were considering me for a desktop application development position and I wouldn’t talk about anything except how much I wanted to do web development. If you recall, the job requisition was for a web developer. Emotionally drained, completely demoralized, and utterly exhausted, I realized that all the pomp and ceremony of a traditional technical interview for a development position could have been summed up in 2 questions:
- “I see from your resume that you have been doing desktop application development for 2 years, is this true?”
- “We are in need of someone who would like to do desktop application development, if given the opportunity, would you enjoy being the one to fill that position?”
All the important questions about culture and team fit would have been answered during the 6 month contract period that is standard with all positions in their software development division. In fact, Eric Dietrich outlines just this proposed process at the end of his blog post entitled, “What’s Your Greatest Weakness: The Employer-Candidate Impedance Mismatch”. So why did this company insist on making me dance like a monkey and perform under ridiculous amounts of stress just to answer two simple questions? I’d like to think that it was to see how well I can execute daily duties under high levels of stress, but the more realistic answer is that they don’t know what is really important to demonstrate success in a position, which is team fit.
Two benefits have come out of this experience for me. The first is that I am extremely satisfied with my current position. My current employer treats me like what I am, a human being. The other is the realization that my former purpose behind this blog was narrow and that the subject matter of this blog needs to be about practicing in all arenas of the software development field, of which coding is only one. To paraphrase myself in order to restate my purpose, “The purpose of this blog is to talk about items pertaining to the field of software engineering. The blog will be the kata; the subject matter will be the tori; and I will be the uke.”