In most cases Technical interviews
do NOT represent WHAT or HOW
you will work
on a day to day basis
technical interviewing is a unique skill/experience
Technical Interviews are not the norm
Surviving a
Technical Interview
Eric Brooke Dec 2015
v6
Three interviews when I froze, I knew the answer but not in the environment they created:

1. White boarding the Fibonacci

2. Fizz buzz - in front of 7 people (two on skype)

3. How does a server cope with high demand
Junior Rails Interviews
• 14 interviews asked me to code in the following
• 3 JavaScript
• 3 Ruby
• 2 PHP
• 4 Rails
• 3 Algorithms in what ever language
When I applied to 14 roles as a junior rails dev, for junior rails positions these are languages I was ask code in or do in the case of Algorithms.

Do not rely that they know or will test you in your preferred language/framework
– Thomas Ptacek
http://sockpuppet.org/blog/2015/03/06/the-hiring-post/
“The majority of people who can code can’t do
it well in an interview. ”
–Every Action movie ever
“Remember your Training”
So we have to prepare you and get you some experience

Military train you under stress, so when it is stressful you can still remember your training
What to Expect
Format
• You and the founder in a room with your laptop
• You in a room and whiteboard with 1-6 people
• You in a room with their computer and whiteboard
an 1-3 people
• You on computer, coding in a online environment
• Code Competition
I think the format and the environment will help certain types of developers be successful but not all. If coding is about problem solving, surely you need different types
of people to come up with the a wider range of solutions. As the Bay of Pigs showed us being Smart is not enough. Is your environment about collaboration or
competition? Is it about having all the answers or being able to ask others.. Like most things human we are looking for a balance
Software Engineer
• Coding- fizzbuz, navigate a tree
• O Notation - what performs best and when to use
• SQL Queries - joins
• Algorithms - bubble sort
• Data Structures - linked lists, hashes, tree
Contents for a software engineer, here are some of the most common. Theses are the questions most de attached from the real work that you will do on a day to day
basis. They are perfects for a recent graduate, but not a bootcamper
Web Developer
What
happens
when you
click this
button?
a tag
javascript
event
resolve url
IP
server setup
routes
controllerHTTP model
viewprocesses
What happens when you click this button?

How does the server know what user is which?
Web Developer
• Security - Injection, XSS, CSRF
• HTTP - Codes, Headers and Transactions
• Performance - Frontend, Database requests
• Framework - Maybe
• Gems/Libraries - Which your favourite are and why
• Mobile - Responsive, scaling
On top you will be asked this question if the role is really a web dev job
Experience
1.Dev Environment build & Tools
2.Testing
3.Problem solving
4.Architecture
5.Code comprehension
6.Deployment
7.Continuous Deployment
8.Pairing
9.Process i.e. Agile or Waterfall
10.Scaling problems & Distributed systems
Conversation will often explore these topics depending on the level of the role you are applying for
Research
Understanding your
competence
1. What are your strengths and weaknesses (rate
your self 1-5 for each skill/language/concept)
2. What do you enjoy and not
3. How do you provide evidence of your strengths
4. Traditional App building - http://sijinjoseph.com/
programmer-competency-matrix/
The above programmer competency matrix is ok for the traditional C/Java engineer but fails for the full stack developer
Full Stack Developer
1. Internet protocol
2. HTTP
3. MVC
4. Dev Ops
5. Browser Compatibility
6. Differences between Devices i.e Mobile/desktop
7. A/B Testing
8. UX/UI
9. Performance over 3G/4G/Wifi etc
10.Scaleability & Distributed Systems
11.Locations, Languages and Timezones
So what should a full stack dev rate themselves on?
Cards Against Humanity - Researching the potential questions, will give you a leg up in the interview
Potential questions
1. Google
2. glassdoor.com
3. Quora
4. A great reference from Julia Evans
Write a list of potential questions by looking at the job description and finding the common questions for each skill/language
The interviewers
1. Linkedin
2. Blog
3. Github
4. Twitter
Ask HR who will interview, get their full name and do some research on imagine the kind of questions they will ask you. Build up an archetype of each interviewer.
What kind of future do you want?
Know why you want this job
1. The Technology
2. The Product
3. The People
4. The Vision
5. The Culture
6. The Money
7. The Place
If you do not love the technology or even like it consider another job. I would suggest you need 4 to consider a job and 5+ to really stay for a long period of time
Surviving
White Board code is very different to working on an IDE that finishes everything you are typing
Mock Interview
1. Ask a friend to come up with some questions and
ask you them
2. Get them to evaluate your strengths and
weaknesses
3. Practice white boarding with a friend
Practice with a friend, consider all the questions, identify the weak spots and revise them
Take Home
1. Really understand the problems
2. Complete and consider other ways, what are other
perspectives
3. Consider this an education opportunity
Love Take homes
Break down potential questions and understand the potential follow ons
Pre-Interview
1. The week before - Code - exercise.io or Ruby
Koan
2. Write out SQL queries and rehearse joins
3. Sleep well the night before
4. Prepare your laptop, what on your desktop?
You are prepared when you can explain thesis topics to someone who is not a computer scientist
Sometimes just ask for moment, find that place of peace and break down the problem and code.. Maybe just start with comments and build up to code..
Stress
1. Take a moment, find your happy place
2. Break down the problems to the smallest element
3. Be honest when you do not know and then figure it
out
4. Be verbose
5. Bring water and snacks, avoid food that make
sleepy
pairing socks
Techniques for technical
questions
1. Develop a plan before you code
2. Understand the ambiguities and ask questions
3. Start with the simplest approach
4. Iterate and improve 
5. Keep talking to let the interviewer know what you're thinking
6. Always listen to an interviewer’s hints
7. If you cannot remember the syntax ask the interviewer or just search the
web
8. If you get stuck, tell the interviewer you are stuck and explain why.
One interview wanted me to build a AWS setup
Coding
1. Add comments of what you will do in english
2. Make it work
3. Make it readable
4. Make it perform
Some interviewers are looking for the one line example, some are looking for code they enjoy ask them
Step out of trees for a moment, lets look at the forest
Big Picture
This is a two way process:
How they interview you,
helps you choose OR not choose them
How good is the interviewer when you get wrong, are they impatient, or are they a good coach, getting back on track. You can tell a lot about culture by their forgiveness
and ability to help you step up
Interviews Strategy
1. For the companies you want the most to work with,
interview with them later
2. Interviewing is a skill and experience matters
3. Reflect after every interview.  Find the answer to the
problems you did not know
4. Allocate learning time every week
5. Refresh basics every year i.e. core programming
langauge
Growing
You may need to do this after, the longest set of interviews I have had very 8 in a row for 8 hours..
After the Interview
1. Write all the questions down
2. Show colleagues/friends the questions ask them
how they would do it
3. Then show your answers and ask for their critic
4. Find answers to the questions you did not know
One interview asked me to use Cross-Site Scripting on their site, I had no idea, after I learnt a lot

OWASP
Conferences and online free videos of the conferences are way to greatly increase your experience, learn from others mistakes if you can - this Smashing Mag cons
Improve your..
1. Algorithms - https://www.manning.com/books/grokking-
algorithms
2. Math - https://www.khanacademy.org
3. Ruby - RubyTapas, The Ruby Way, The Well Grounded
Rubyist, Ruby Koans, Ruby Kata
4. Rails - The Rails 4 Way, Rails Anti Patterns
5. Scaling/Security - OWASP, The Tangled Web, The Practice of
Network Security Monitoring
6. Experience Conference talks i.e. Railsconf or Smashing Mag
Improve your..
7. JavaScript
1.  http://survivejs.com (free online version)
2.  http://es6katas.org
3. http://eloquentjavascript.net (free online version)
4. https://developer.mozilla.org/en-US/docs/Web/
JavaScript (best docs)
5. https://github.com/arkency/reactjs_koans
Pair Program
1. Good companies use it as both an interview
technique and for your actual job
2. Nice Pair - Pair Programming Archetypes
Become good at this, change partners every 4 hours or every feature, it is emotional exhausting at first, but you get used to it
Summary
Build your tech int. exp
• Practice core skills i.e. Programming Language
• Gain Interview Experience
• Review after every Interview
Program well in one language

Mock Interview until you have no fear

White Board until you can do it without referring

Learn from every interview
Extra
How I interview
First Interview
• Have coffee find out what I feel about this person
• Why they are passionate about coding
Second Interview
• Ask some basic technical questions
• Have them bring their project, explain it to me.  
• Ask them to add i.e. code a feature with a colleague pairing
• Meet the team
Two weeks in San Francisco. I have received a lot of job offers from people I met at tech conferences
Get an Interview
1. Make Connections - meet ups, conferences
2. Find the companies you want to work for e.g. Companies using Ruby
3. Help build the community - e.g. Vancouver Ruby Meetup
4. Startups and Startup Weekends - find people you want to work with
5. Coach/Teach/Mentor - we all know something more than someone else,
also you get better at communicating
6. Present/Blog - a journey of yours and help others learn
7. Projects - Your personal passion projects, maybe open source
8. Online social proof - Linkedin, Twitter, Blog
Professional Career - http://www.linkedin.com/in/ericbrooke

Articles I have read and events I attend - http://twitter.com/ericbrooke

A blog of unfinished thoughts - http://ericbrooke.wordpress.com/

What do I read? - http://www.goodreads.com/ericbrooke

Coding https://github.com/ericbrooke/
Hacking Health - Yukon
Other Perspectives
http://what-advice-would-you-give-someone-preparing-for-their-
first-technical-interview/3388/3
https://www.quora.com/How-do-I-prepare-for-a-software-
engineering-job-interview
http://techcrunch.com/2015/03/21/the-terrible-technical-interview/
http://techcrunch.com/2015/03/15/gray-beards/
http://sockpuppet.org/blog/2015/03/06/the-hiring-post/
http://www.nicolasbize.com/blog/how-i-ended-up-conducting-the-
most-successful-technical-interviews-with-a-single-question/
what-advice-would-you-give-someone-preparing-for-their-first-technical-interview/3388/3

https://www.quora.com/How-do-I-prepare-for-a-software-engineering-job-interview

http://techcrunch.com/2015/03/21/the-terrible-technical-interview/

http://techcrunch.com/2015/03/15/gray-beards/

http://sockpuppet.org/blog/2015/03/06/the-hiring-post/

http://www.nicolasbize.com/blog/how-i-ended-up-conducting-the-most-successful-technical-interviews-with-a-single-question/
Play often with code, find the project you actually care about, something to improve your life
My Interviews
1. Take home questions (Recursive, SQL, front end coding, code to recognize a shape, DSL)
2. Do Fibonacci on white board, basic tree construction, traversal, talk through what happens when you click a button in a
browser 
3. Discrete Math 101, graph traversal algorithms: breadth-first search and depth-first search, Hash Tables
4. Algorithms, Scaling, DevOps
5. Debug their production code
6. Object Oriented design, polymorphism, Functional programming, recursion
7. 100 questions on Ruby and Rails
8. 100 questions on Ruby and Rails, write some JavaScript a counter
9. 50 questions on Ruby and Rails then Fizzbuzz
10.Piglatin, problem solving, project management, architecture, distributed networks
11.Informal with devs, code bowling rules, problem solving, Architecture, code comprehension with complex legacy code
12.Take home 1(algorithm, web security, code comprehension, SQL, find the bug ), Take home 2 (add features to an existing rail
codebase)
13.Add a feature to your own rails code
14.Describe web process, 20 questions on web security, code a bubble sort, write an Sql query
Learning about others through your play
• Blog ericbrooke.wordpress.com
• Twitter @ericbrooke
• Git Hub: ericbrooke
• Goodreads: http://www.goodreads.com/ericbrooke
• Linkedin http://www.linkedin.com/in/ericbrooke
Professional Career - http://www.linkedin.com/in/ericbrooke

Articles I have read and events I attend - http://twitter.com/ericbrooke

A blog of unfinished thoughts - http://ericbrooke.wordpress.com/

What do I read? - 

Coding https://github.com/ericbrooke/

Surviving the technical interview

  • 1.
    In most casesTechnical interviews do NOT represent WHAT or HOW you will work on a day to day basis technical interviewing is a unique skill/experience
  • 2.
  • 3.
  • 4.
    Three interviews whenI froze, I knew the answer but not in the environment they created: 1. White boarding the Fibonacci 2. Fizz buzz - in front of 7 people (two on skype) 3. How does a server cope with high demand
  • 5.
    Junior Rails Interviews •14 interviews asked me to code in the following • 3 JavaScript • 3 Ruby • 2 PHP • 4 Rails • 3 Algorithms in what ever language When I applied to 14 roles as a junior rails dev, for junior rails positions these are languages I was ask code in or do in the case of Algorithms. Do not rely that they know or will test you in your preferred language/framework
  • 6.
    – Thomas Ptacek http://sockpuppet.org/blog/2015/03/06/the-hiring-post/ “Themajority of people who can code can’t do it well in an interview. ”
  • 8.
    –Every Action movieever “Remember your Training” So we have to prepare you and get you some experience Military train you under stress, so when it is stressful you can still remember your training
  • 9.
  • 10.
    Format • You andthe founder in a room with your laptop • You in a room and whiteboard with 1-6 people • You in a room with their computer and whiteboard an 1-3 people • You on computer, coding in a online environment • Code Competition I think the format and the environment will help certain types of developers be successful but not all. If coding is about problem solving, surely you need different types of people to come up with the a wider range of solutions. As the Bay of Pigs showed us being Smart is not enough. Is your environment about collaboration or competition? Is it about having all the answers or being able to ask others.. Like most things human we are looking for a balance
  • 11.
    Software Engineer • Coding-fizzbuz, navigate a tree • O Notation - what performs best and when to use • SQL Queries - joins • Algorithms - bubble sort • Data Structures - linked lists, hashes, tree Contents for a software engineer, here are some of the most common. Theses are the questions most de attached from the real work that you will do on a day to day basis. They are perfects for a recent graduate, but not a bootcamper
  • 12.
    Web Developer What happens when you clickthis button? a tag javascript event resolve url IP server setup routes controllerHTTP model viewprocesses What happens when you click this button? How does the server know what user is which?
  • 13.
    Web Developer • Security- Injection, XSS, CSRF • HTTP - Codes, Headers and Transactions • Performance - Frontend, Database requests • Framework - Maybe • Gems/Libraries - Which your favourite are and why • Mobile - Responsive, scaling On top you will be asked this question if the role is really a web dev job
  • 14.
    Experience 1.Dev Environment build& Tools 2.Testing 3.Problem solving 4.Architecture 5.Code comprehension 6.Deployment 7.Continuous Deployment 8.Pairing 9.Process i.e. Agile or Waterfall 10.Scaling problems & Distributed systems Conversation will often explore these topics depending on the level of the role you are applying for
  • 15.
  • 16.
    Understanding your competence 1. Whatare your strengths and weaknesses (rate your self 1-5 for each skill/language/concept) 2. What do you enjoy and not 3. How do you provide evidence of your strengths 4. Traditional App building - http://sijinjoseph.com/ programmer-competency-matrix/ The above programmer competency matrix is ok for the traditional C/Java engineer but fails for the full stack developer
  • 17.
    Full Stack Developer 1.Internet protocol 2. HTTP 3. MVC 4. Dev Ops 5. Browser Compatibility 6. Differences between Devices i.e Mobile/desktop 7. A/B Testing 8. UX/UI 9. Performance over 3G/4G/Wifi etc 10.Scaleability & Distributed Systems 11.Locations, Languages and Timezones So what should a full stack dev rate themselves on?
  • 18.
    Cards Against Humanity- Researching the potential questions, will give you a leg up in the interview
  • 19.
    Potential questions 1. Google 2.glassdoor.com 3. Quora 4. A great reference from Julia Evans Write a list of potential questions by looking at the job description and finding the common questions for each skill/language
  • 20.
    The interviewers 1. Linkedin 2.Blog 3. Github 4. Twitter Ask HR who will interview, get their full name and do some research on imagine the kind of questions they will ask you. Build up an archetype of each interviewer.
  • 21.
    What kind offuture do you want?
  • 22.
    Know why youwant this job 1. The Technology 2. The Product 3. The People 4. The Vision 5. The Culture 6. The Money 7. The Place If you do not love the technology or even like it consider another job. I would suggest you need 4 to consider a job and 5+ to really stay for a long period of time
  • 23.
  • 24.
    White Board codeis very different to working on an IDE that finishes everything you are typing
  • 25.
    Mock Interview 1. Aska friend to come up with some questions and ask you them 2. Get them to evaluate your strengths and weaknesses 3. Practice white boarding with a friend
  • 26.
    Practice with afriend, consider all the questions, identify the weak spots and revise them
  • 27.
    Take Home 1. Reallyunderstand the problems 2. Complete and consider other ways, what are other perspectives 3. Consider this an education opportunity Love Take homes
  • 28.
    Break down potentialquestions and understand the potential follow ons
  • 29.
    Pre-Interview 1. The weekbefore - Code - exercise.io or Ruby Koan 2. Write out SQL queries and rehearse joins 3. Sleep well the night before 4. Prepare your laptop, what on your desktop? You are prepared when you can explain thesis topics to someone who is not a computer scientist
  • 30.
    Sometimes just askfor moment, find that place of peace and break down the problem and code.. Maybe just start with comments and build up to code..
  • 31.
    Stress 1. Take amoment, find your happy place 2. Break down the problems to the smallest element 3. Be honest when you do not know and then figure it out 4. Be verbose 5. Bring water and snacks, avoid food that make sleepy
  • 32.
  • 33.
    Techniques for technical questions 1.Develop a plan before you code 2. Understand the ambiguities and ask questions 3. Start with the simplest approach 4. Iterate and improve  5. Keep talking to let the interviewer know what you're thinking 6. Always listen to an interviewer’s hints 7. If you cannot remember the syntax ask the interviewer or just search the web 8. If you get stuck, tell the interviewer you are stuck and explain why.
  • 34.
    One interview wantedme to build a AWS setup
  • 35.
    Coding 1. Add commentsof what you will do in english 2. Make it work 3. Make it readable 4. Make it perform Some interviewers are looking for the one line example, some are looking for code they enjoy ask them
  • 36.
    Step out oftrees for a moment, lets look at the forest
  • 37.
  • 38.
    This is atwo way process: How they interview you, helps you choose OR not choose them How good is the interviewer when you get wrong, are they impatient, or are they a good coach, getting back on track. You can tell a lot about culture by their forgiveness and ability to help you step up
  • 39.
    Interviews Strategy 1. Forthe companies you want the most to work with, interview with them later 2. Interviewing is a skill and experience matters 3. Reflect after every interview.  Find the answer to the problems you did not know 4. Allocate learning time every week 5. Refresh basics every year i.e. core programming langauge
  • 40.
  • 41.
    You may needto do this after, the longest set of interviews I have had very 8 in a row for 8 hours..
  • 42.
    After the Interview 1.Write all the questions down 2. Show colleagues/friends the questions ask them how they would do it 3. Then show your answers and ask for their critic 4. Find answers to the questions you did not know
  • 43.
    One interview askedme to use Cross-Site Scripting on their site, I had no idea, after I learnt a lot OWASP
  • 44.
    Conferences and onlinefree videos of the conferences are way to greatly increase your experience, learn from others mistakes if you can - this Smashing Mag cons
  • 45.
    Improve your.. 1. Algorithms- https://www.manning.com/books/grokking- algorithms 2. Math - https://www.khanacademy.org 3. Ruby - RubyTapas, The Ruby Way, The Well Grounded Rubyist, Ruby Koans, Ruby Kata 4. Rails - The Rails 4 Way, Rails Anti Patterns 5. Scaling/Security - OWASP, The Tangled Web, The Practice of Network Security Monitoring 6. Experience Conference talks i.e. Railsconf or Smashing Mag
  • 46.
    Improve your.. 7. JavaScript 1. http://survivejs.com (free online version) 2.  http://es6katas.org 3. http://eloquentjavascript.net (free online version) 4. https://developer.mozilla.org/en-US/docs/Web/ JavaScript (best docs) 5. https://github.com/arkency/reactjs_koans
  • 47.
    Pair Program 1. Goodcompanies use it as both an interview technique and for your actual job 2. Nice Pair - Pair Programming Archetypes Become good at this, change partners every 4 hours or every feature, it is emotional exhausting at first, but you get used to it
  • 48.
  • 49.
    Build your techint. exp • Practice core skills i.e. Programming Language • Gain Interview Experience • Review after every Interview Program well in one language Mock Interview until you have no fear White Board until you can do it without referring Learn from every interview
  • 50.
  • 51.
    How I interview FirstInterview • Have coffee find out what I feel about this person • Why they are passionate about coding Second Interview • Ask some basic technical questions • Have them bring their project, explain it to me.   • Ask them to add i.e. code a feature with a colleague pairing • Meet the team
  • 52.
    Two weeks inSan Francisco. I have received a lot of job offers from people I met at tech conferences
  • 53.
    Get an Interview 1.Make Connections - meet ups, conferences 2. Find the companies you want to work for e.g. Companies using Ruby 3. Help build the community - e.g. Vancouver Ruby Meetup 4. Startups and Startup Weekends - find people you want to work with 5. Coach/Teach/Mentor - we all know something more than someone else, also you get better at communicating 6. Present/Blog - a journey of yours and help others learn 7. Projects - Your personal passion projects, maybe open source 8. Online social proof - Linkedin, Twitter, Blog
  • 54.
    Professional Career - http://www.linkedin.com/in/ericbrooke Articles Ihave read and events I attend - http://twitter.com/ericbrooke A blog of unfinished thoughts - http://ericbrooke.wordpress.com/ What do I read? - http://www.goodreads.com/ericbrooke Coding https://github.com/ericbrooke/
  • 55.
  • 56.
    Other Perspectives http://what-advice-would-you-give-someone-preparing-for-their- first-technical-interview/3388/3 https://www.quora.com/How-do-I-prepare-for-a-software- engineering-job-interview http://techcrunch.com/2015/03/21/the-terrible-technical-interview/ http://techcrunch.com/2015/03/15/gray-beards/ http://sockpuppet.org/blog/2015/03/06/the-hiring-post/ http://www.nicolasbize.com/blog/how-i-ended-up-conducting-the- most-successful-technical-interviews-with-a-single-question/ what-advice-would-you-give-someone-preparing-for-their-first-technical-interview/3388/3 https://www.quora.com/How-do-I-prepare-for-a-software-engineering-job-interview http://techcrunch.com/2015/03/21/the-terrible-technical-interview/ http://techcrunch.com/2015/03/15/gray-beards/ http://sockpuppet.org/blog/2015/03/06/the-hiring-post/ http://www.nicolasbize.com/blog/how-i-ended-up-conducting-the-most-successful-technical-interviews-with-a-single-question/
  • 57.
    Play often withcode, find the project you actually care about, something to improve your life
  • 58.
    My Interviews 1. Takehome questions (Recursive, SQL, front end coding, code to recognize a shape, DSL) 2. Do Fibonacci on white board, basic tree construction, traversal, talk through what happens when you click a button in a browser  3. Discrete Math 101, graph traversal algorithms: breadth-first search and depth-first search, Hash Tables 4. Algorithms, Scaling, DevOps 5. Debug their production code 6. Object Oriented design, polymorphism, Functional programming, recursion 7. 100 questions on Ruby and Rails 8. 100 questions on Ruby and Rails, write some JavaScript a counter 9. 50 questions on Ruby and Rails then Fizzbuzz 10.Piglatin, problem solving, project management, architecture, distributed networks 11.Informal with devs, code bowling rules, problem solving, Architecture, code comprehension with complex legacy code 12.Take home 1(algorithm, web security, code comprehension, SQL, find the bug ), Take home 2 (add features to an existing rail codebase) 13.Add a feature to your own rails code 14.Describe web process, 20 questions on web security, code a bubble sort, write an Sql query
  • 59.
    Learning about othersthrough your play
  • 60.
    • Blog ericbrooke.wordpress.com •Twitter @ericbrooke • Git Hub: ericbrooke • Goodreads: http://www.goodreads.com/ericbrooke • Linkedin http://www.linkedin.com/in/ericbrooke Professional Career - http://www.linkedin.com/in/ericbrooke Articles I have read and events I attend - http://twitter.com/ericbrooke A blog of unfinished thoughts - http://ericbrooke.wordpress.com/ What do I read? -  Coding https://github.com/ericbrooke/