Hi. If you’re a tech startup in San Francisco and would like to hire me, this page gives in-depth answers to a lot of common interview questions. You probably want to check my resume first. I’ll be adding more and more projects to my GitHub in the next few days (coming soon).
For now, all inquiries should go to email@example.com
Who are you?
You can call me William. I was born near Chicago, IL, then raised in Paris, France for most of my life. I have dual citizenship (American/French).
I’m a 25 year-old Software Engineer living in San Francisco (Dec 2013/Jan 2014) looking to join a tech startup full-time.
I have a strong all-around academic background (Master of Science and Engineering from a top Engineering School in France, with a specialization in Computer Science ; this means I’m good at math) associated with a true passion for programming (this means I’m a hacker since young age).
I have significant prior work experience in web startups in Paris, designing or improving collaborative Facebook-like web platforms used to connect dozens of international French companies with ~30,000 students from top business or engineering schools.
I also created various temporary websites or web services for specific social events, in direct collaboration with French national television (France 5, “La semaine pour l’emploi”), a trivia Facebook App for Rouen Business School (“Le défi des prépas”) with scholarship prizes, and a lot of python hacks.
In my free time, I enjoy all sorts of activities, some of them not completely nerdy: making websites (that’s convenient), solving Math problems programmatically, making small “retro style” video games, reading books in English (technical, sci-fi or heroic fantasy), writing novels and funny short stories, playing poker or go, improvising music on a piano, futurology and social issues, contributing translations to Ubuntu or bug reports to open source projects, helping people learn programming, etc.
What are your main skills?
I design and implement all kinds of software, mainly “modern” websites, front-end and back-end. Big complicated codebases or mathematically complex problems don’t scare me.
I prefer server-side programming, because I’m an engineer and there’s more math involved (not to mention not having to deal with those pesky browser compatibilities).
I love many programming languages and have used for years, both professionally and in personal projects:
- Python (including web frameworks like Django, Bottle, Flask, gevent)
- C++ (including C++11)
- HTML 5
- SQL databases: MySQL, PostgreSQL, and NoSQL: Redis, MongoDB.
Also I don’t mind PHP but I feel it’s an outdated ill-designed language and wouldn’t want to use it for new projects.
From my previous jobs or personal projects I have particular interest in many different aspects of programming:
- huge collaborative “Web 2.0” platforms with a massive amount of users
- making 2D old school video games (native or web-based)
- making compilers for new languages (Forth-like virtual machines, scripting languages , using parser tools like bison/yacc/lemon and lexer tools like lex/flex/Ragel)
- using LuaJIT FFI with C and use a coroutine approach (instead of nested callbacks)
I can use “proper” design patterns and UML, although I could argue that most design patterns are just pragmatic recipes used as crutches for the lack of flexibility in typical statically-typed languages (C++, Java, C#), where using treatments as data is more awkward, and inheritance introduces unnecessarily tight couplings.
I’m usually aware of the best practices or trends in project management, quality, tests, etc. I can manage projects on my own or inside a team of engineers/developers.
I’m enthustiatic about innovative technologies, most of them I can learn in record time if necessary.
I have strong analytical skills and problem solving abilities. I can manipulate abstractions and quickly get a feel for problems.
Strong academic knowledge associated with true passionate “hacker” mentality and open-minded curiosity for a very wide variety of subjects.
I like convincing people to adopt more rational and efficient behaviors.
I’m occasionally good at public speaking if I’m passionate about the subject.
What are your 3 main strengths?
I learn really fast, I can identify and memorize the main points of a complicated subject, I have a strong intuition of where to find hard bugs, and I can navigate huge codebases with a clear view of the big picture. This means I don’t usually require much initial help or supervision, I just know what I don’t know and will learn all I need myself.
I’m resilient under pressure and a heavy workload. I owe that to years inside probably some of the most stringent and demanding education system in the world (as per Wikipedia) And I don’t need particular motivation to start performing either.
Perhaps most importantly I’m passionate about what I do. I don’t think it’s possible to last too long if you aren’t anyway.
(I can give examples and anecdotes upon request!)
OK, enough with the neat corporate bullshit, what are some qualities that make you stand out?
Although I do like brainy activities, people are generally pleased (or even surprised) to realize than I’m in fact uncomplicated, calm, genuine, tolerant and at the end of the day, always supportive, attentive to everyone’s need, ready to compromise, a great listener, and capable of defusing any tenseness in social situations. Which is arguably good when you work in a team, especially in a startup environment.
Even though I might not be the best at first impressions (all these years out of the U.S. have made my English really “stiff”, and if you have ADHD or are in a hurry I probably already failed spectacularly in the conciseness department), I’m the kind of person that, the more you really know about me, the more you like me (is it proper grammar though?).
I’m curious about everything. Too many people obsess all their lives over just one thing. Despite my deep love of programming, I like conversing on just about any subject (and it works wonders on girls too).
I’m capable of speaking out when I feel something is going wrong, or something could be done better, or a problem could be solved. Since I usually only speak out when I’m really sure what I’m talking about, my prophecies can be frighteningly accurate.
I want things to work and I want them to work fast and optimally, (or fail fast if they’re doomed to fail, so we can learn from it and move on), even when it means I have to increase my workload to insane levels, or temporarily help someone else do his job. I am extremely pragmatic. Overly long discussions and meetings are usually concluded by me offering a compromise or plan for action.
I don’t judge people or technologies. Whatever works is fine, and if it doesn’t work or stops working, then there’s something wrong.
I never give up, I’m never completely satisfied (this is my French side?), which means I always find things to improve.
People trust me and after some time, want me to take the lead on more and more projects. I’m always aware of what I know and what I don’t know, so I’m generally trustworthy judging the quality of my code too.
I’m good at extracting information on every subject. I can keep myself aware in a moving world. I can ask accurate questions on requirements for a project and then be done with it.
I’m an energizer. I impart energy to other people. I inspire them to do great things, to forget about their problems and give the best. This is more useful to a CTO than an engineer, but still, I could be both in the future.
I’m always available. People are not afraid to come interrupt me and talk to me about some bug or technical problem they encountered that I can fix.
I’m always honest and true. I have a nearly pathological fear of lying. I will say nothing rather than say something I know is untrue. This proves essential in a startup world where everyone bounces (sometimes) stupid ideas off each other and I’m apparently the only one capable of telling the truth about it (in the most respectful way possible, of course).
I don’t care too much about social status or hierarchy. I’ll be happy in a mostly horizontal society. I give the same respect and attention to everyone. I can have meaningful conversations with “important” people, without being paralyzed. I’m not easily manipulated.
I can mix dreams and practical approaches. I have both cultural sides of my nationalities: the creative, “inspired” latin side, and the anglo-saxon pragmatic side. I’m too pragmatic for France, I’m too crazy for non-californian America. I can be positive without being naive.
I can be extraordinarily systematic and thorough. When the subject requires it.
I can use sarcasm as a way to take the drama out of life. You can’t outsource that to Bangalore.
What are your 3 main weaknesses?
I remember abstractions and core ideas well, but I’m not as interested in details or specific points (I easily forget specific tricks or language syntax). I make a lot of “intuitive jumps” in my reasoning because I’m familiar with many ideas, but that also means I easily lose people who try to follow my train of thoughts.
To make up for it, I tend to code in multiple passes (from abstract to specific) and check the details with a language reference at my side until I’m sure everything is idiomatic. I also make conscious efforts to be detailed and systematic in my communication with others.
I’m a slow and thorough thinker. I’m quick-witted on occasions, but nothing impressive. I actually need time to think before I make an answer, if you force me to answer you in less than 10 seconds on a difficult subject, I’m likely to appear somewhat lost and confused. I have wide knowledge, but I can’t mobilize all of it instantly.
Some people memorize a lot of algorithms and tricks, and can apply them instantly without thinking, which can work most of the time and look impressive. I prefer rethinking everything through, in case something more optimized applies to my specific needs.
I’m all or nothing. I do either too much or too little. I can appear forceful when I’m passionate and know I’m right or what I do is constructive, but dismissive or unconcerned when I don’t care or I think I’m being forced to do something pointless, artificial, morally wrong or meaningless.
It means I must make sure I work with like-minded people on something for which we all have a passion, because I can’t just fake interest in exchange for money or social status.
You should probably stop reading here if all you want is a strictly professional overview. The rest is accurate but could be somewhat funny.
How would other people describe you?
Here’s an honest out-of-context selection of quotes:
“You’re the chillest person I know.” - A friend
“Stop beating him up, he’s a nice guy!” - A bully standing up for me to another bully in middle school.
“You! You always find a way. You always get by.” - English teacher
“I have nothing to teach you, you should just skip class, really.” - Another English teacher
(as an American, being decent in English doesn’t seem much of an accomplishment, but remember I left the US at a very young age and learned all the English I know in school, as a foreign language)
“I named my newborn son after you. I gave him your first name as his first name, and your family name as his middle name.” - A French/Philosophy teacher
(he thought I was destined to greatness?!)
“Wake up, you asshole!” - Engineering teacher
(I told you my college education was some of the most demanding in the world! I wasn’t even sleeping, just being my usual self)
“Dude, you’re a genius!” - A friend
“Dude, you’re a psycho!” - A friend
(meant as a term of endearment! Hopefully!)
“It’s obvious you do many other things than just programming all the time.” - A girl
“He’s the guy who smiles all the time.” - A coworker
“The other guys might act like they know their shit, but now I can see it clearly: you’re really the best employee we have, perhaps the best ever.” - Drunk confession of a coworker
“I’m sure he destroys you at Starcraft.” - A female coworker, to my then boss
(for no rational reason, because I don’t play Starcraft)
“There should be some hidden achievement named after you when the player answers instantly and correctly to every question.” - A coworker, about a trivia game app
You work with social media all the time, how come you have so little social media presence?
I love building social web platforms, I don’t like using them that much, I think they’re still in their infancy, and people don’t use them optimally enough for me to care. Like many people (40% of users), I keep idle observer accounts to watch the evolutions of the most popular platforms (like Facebook, Twitter, Gmail/Youtube), but I rarely contribute.
Imagine a rocket scientist job interview. Would you ask “So, how many times have you been to the moon?”, it’s not relevant. You ask something like “Do you know the math? Do you like designing innovative things that have a function? Will you take every possible step to make sure the astronauts survive the trip?”. Hopefully you get the parable.
Also, you have to reach a critical mass of users in your area for social media to work properly. I currently live in a very isolated house. What used to make sense when I worked in Paris (where there’s even more iPhones and they work better than in San Francisco), Yelp, Foursquare, etc. don’t make sense where I live.
But I might very well use them again in the near future, in San Francisco!
About my GitHub: sorry, historically I used to prefer Bitbucket, with Mercurial, and now have most of my repos hosted privately on a friend’s server. I will however slowly update some of my projects to GitHub.
I realize GitHub is a very important defining cultural trend among programmers and everything I use tends to be on GitHub these days.
This is precisely what attracted me specifically to San Francisco (lots of “based in San Francisco” people do awesome things).
Why should I hire you over that guy from Stanford/MIT?
Culturally, you may worry about the cultural implications of me having lived most of my life in France, you might be tempted to go for the easiest/safest route and deal with what you know: people from the most prestigious American universities, connections, etc. I reassure you: my French education is also the most “elite” possible, but that’s not the main point.
When everyone has high levels of technical proficiency, I think it’s not so much about culture or education, more about personality traits and general attitude.
At my last job I was trusted with hiring a new CTO for a 10-15 persons startup, preparing interviews and stuff, and it made me realize that the real point is: if you have to choose between someone with 100% technical proficiency but 0 ability to work in a team and a depressing or angry attitude, and someone with 80% technical proficiency and some sort of charisma or assertiveness, the choice is immediately obvious to everyone, technical and non-technical.
So my answer would be: I’m already in the right state of mind for the startup world.
I would even go further and argue that uniformity in culture might be undesirable. Most progress is made by breaking the rules, and a French person (or person with a foreign culture really) is naturally more likely to break or ignore social conventions and cultural determinisms, to devise more practical solutions.
Also worth mentioning, when you come from outside the U.S. as a programmer, you know immediately to check files for the proper encoding so your accentuated letters don’t break, you know a few things about internationalization, etc.
You realize San Francisco is just crazy right now?
Disgustingly high cost of living, apartment rents, having to fight 50+ candidates to get an apartment, lots of youngsters from all over the world, homeless people, drugs, traffic, protesters, etc.
I know, right! All this mess reminds me of Paris!
I’m taking every step to make sure I can move to San Francisco in acceptable conditions, with long-term viability. I’m a rather reasonable person with few needs, I can manage my expectations and my money, etc.
In this adventure all I’m really interested in is programming, and San Francisco still seems to be the undisputable Mecca.
What is your dream job?
One where I could put myself to the fullest possible use, which is all I think any conscious entity can ever hope to do.
Why do you write so much?
It’s part of my INTP personality: “On the other hand, their ability to grasp complexity may also lead them to provide overly detailed explanations of simple ideas, and listeners may judge that the INTP makes things more difficult than they need to be. To the INTPs’ mind, they are presenting all the relevant information or trying to crystallize the concept as clearly as possible.”