10 questions to make on a tech interview


In a job interview the employer aims to get to know the candidate and assess his fit for the position. Your goal would be to show that you're the person that they're looking for, by getting key insights about the company, and exposing how your abilities and strengths play into them. Here are 10 questions to guide you on the process, focused on tech companies, and specially startups.


Development:


1. What is the company's tech stack? APIs, databases, programming languages, frameworks, servers, third party services like Intercom or New Relic. You can use this question to expand on your working experience by talking about similar stacks you've worked it in other companies or personal projects.

2. What is your team structure, and where will I fit on it? This question will let the interviewer introduce who you will be working with, and also give you a glimpse on your day to day work interactions. It will also help them envision you as part of the company.

3. What is the normal course that a feature goes through? Here you'll want to know about their design process, implementation flow, whether they do testing and/or QA, which environments do they have (canary, staging, etc). You can also delve on Joel Spolsky's 12 questions for this one.

4. What is your biggest current issue, and how can I help on improving it? This will help the interviewer see how your skills fit to help the company, and encourage them to envision you working at the position. 

Company:


5. What's the company history? How did it started, information about the founders, and the development progress, like prototypes, redesigns, or previous pivots.

6. What's the company roadmap? It's important to know where the company is heading, what are the new features coming in the pipeline, what are the plans for growing the team, whether it is expanding to new markets, etc.

7. What's your customer? B2C, B2B, user growth numbers (or at least trends), ARPU… this could give you a hint of the company's revenue, and ties well with the next question

8. What's the company's investment status? It's very different to work in a bootstrapped company focused on "sensible" growth, than in one with a recent investment round, whose stakeholders are looking for results in the near or middle term. Be sure to get some information about runaway and stocks, if possible.

Closing/next steps:


9. What have you enjoyed most about working here? This question lets the interviewer connect with you on a more personal level, sharing their feelings about working with the company. Their answer will give you unique insights into the job satisfaction and working environment of the company

10. What is the next step? Finally, close with this essential last question, which shows your interest for the position, and opens the conversation one step forward to your hiring.


Of course, you don't have to ask all these questions, as surely some of them will be answered throughout the course of the interview. Remember to thank the interviewer, and express your liking of the company and satisfaction with the talk. You can also follow up with a thank you note via email, to give them an easy way to contact you and continue with the process.

Any questions I've missed? Comments about your experiences in interviews while following this guide, or a similar one? I'll be glad to hear from you on the comments section, or Twitter.

Why I won't do your coding test


A software company has a senior position to fill. They contact me, directly or through recruiters, expressing great interest for my profile. Sounds great!

Now, they have a nice coding test they want me to accomplish. It can be a 1 hour general coding Q&A, a FizzBuzz-style coding challenge, or even a full-fledged mock app specification.

Their coding test may aim to:
  1. Weed out the non-coders from the ones that do
  2. Only get the developers that are interested enough to perform their test in a ordered and timely manner.
  3. Gather insight about my proficiency for their position
But they're failing, on all three points:
  1. I know how to code, and can show it. They can check my blog, my numerous repositories on GitHub, my public sample projects, my freelancing portfolio, and even my fully-working apps and sites out there
  2. I've already expressed interest in their position. I have a day job, and several side projects: I won't spend a sizable chunk of my free time so they can tick some boxes about my coding skills.
  3. No matter how general or specific their tests is, it will never replace the proper way to see if someone fits your position: work with them on the real job, and see how it feels.
My main gripe with coding tests is that they ask me for an investment of my time and resources so that they can gather information about me, but I'm getting nothing back. What I look for in an interview process is to get to know the company, their culture and work environment; the coding test gives me none of this.

Some alternatives to coding tests that benefit both parties:
  • Bring the candidate to the office for a day, and work together. They'll get to know the company and its environment, and the company can see how the candidate fits within their team and culture.
  • Pair program with people from your team for an hour or two (Screenhero works great), so the candidate can learn from them as they learn from him/her.
  • Assign the candidate a real feature/bugfix to implement from home, remunerated accordingly. Make them sign an NDA, and both parties will have come out benefitted from the exchange. 
If your company need programmers that can perform FizzBuzz and recursive file searches in 10 minutes as part of their daily tasks, stick with your test. On the other hand, If you want people that fit your team and workflow, that can build solid features according to spec, and that can communicate clearly with fellow devs and business people, test people on that regard. There's no better test than the real thing.

11 Google Chrome Extensions


Continuing the post about my Mac OS X setup, here are the Chrome extensions I currently use. As you might notice, there's a heavy focus in web development, since that's what I do on my day job; and in keyboard-driven interfaces, which you can read more about here. Off we go!

General Tools

  • Authy: 2-Factor Authentication with support for countless apps. I use it for my Google, Amazon, and Heroku accounts, for starters.
  • Crystal: "Communicate with anyone, based on personality". Try it out, it's uncanny.
  • Google Translate: For the pages that Chrome doesn't recognize as translatable. Offers One-click full page translations, or single word lookup in hundreds of languages.

Setting up Atom for Web Development


In the vein of these Sublime Text 3 recommendations for Rails development, here's my Atom setup for developing web apps.

After using Sublime and Vim for several years, I switched to Atom a year ago, and have not missed one feature from the other two so far. Since Atom is in continuous development by the core team and the community, it only gets better as time passes. Also, it's free.

First, an FAQ/C:


Packages

No need to install any package manager for Atom. The editor is composed of over 50 open-source packages, and so the package manager is built in. There's a phenomenal package repository online, or you can search for them directly on Atom's Settings -> Install. And, since Atom is open source and built using web technologies, creating new packages or extending exiting ones is easy. Here are the ones I use:

Export a list from Wunderlist

No amount of googling has provided me with a way to export a list from Wunderlist. The closest I've found form an official answer is "this is something we hope to add with a future update". Here's my unofficial solution:
  • Navigate to the list you want to export:
  • Open the Chrome console: Ctrl + Shift + J / Cmd + Opt + J
  • Load jQuery by pasting the following:
    var jq = document.createElement('script');
    jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";
    document.getElementsByTagName('head')[0].appendChild(jq);
    
  • Paste this to print out your list on the console
  • $('.taskItem-titleWrapper-title').map(function(){ return $(this).text();})
    
  • Grab your shiny new list from the console in a convenient format :D

If you've found a better solution, do share!

Something.js

Just a test post to see how many upvotes this gets on Hacker News for having .js on the title.

Here's the latests popular posts on HN with .js on the title:


Here are the ones without:


If you want to be a good web developer, no clue what you need to learn nowadays. However, if you want to be a cool kid, write some JS.

I got a Game Boy!


Remember how I wanted to get a Game Boy a couple weeks ago? Well here it is!
  • Game boy Advance SP: 15€
  • Metroid II: 15€
Also, I just found a way to change the color of original Game Boy games on the Game Boy advance: input one of the following combinations when the Game Boy logo appears:

This way I can play Metroid II in black and white, for maximum nostalgia :)

My experience with the "No Poo" Method

During the past two months I have been trying the No Poo method:

"Just because something is modern, doesn't mean it's the best option. Up until the late 1800s, people were recommended to wash their hair once a month. Decades later, the first synthetic shampoo was developed and that frequency increased to every two weeks, with daily shampooing becoming the norm by the 1970s. Shampoos on the market today might be gentler than past formulas, but they can still wreak havoc on your quest for a sexy mane. An underground movement has begun: the “No Poo Method” for shampoo free healthy hair."

I have greasy hair, so being more than 24 hours without washing it means a greasy mess on my head. I started weaning of shampoo one day by simply not using it on my daily shower, and kept going for a month and a half. The worst part was the first two weeks: