Resize m3 to t2 EC2 Instances on AWS

If you run a server on AWS, you may be unpleasantly surprised to discover you don’t have the option to automatically resize between all instance types. I decided to resize m3 to t2 instance types (m3.large => t2.small) when my reserved instance lease expired & my needs had changed from those of running a commercial web business to running a small blog.

Turns out, AWS has made numerous network and architecture changes since my machine image was created in 2014. What should have been a small change turned into quite a bit of work. I’ve summarized the steps below should you encounter the same issue.

EC2 instances built today (called EC2-VPC) do not work interchangeably with older generation (now called EC2-Classic) instances. Here are some key differences I encountered: Read More

Preparing for Technical Interviews

For the last 2 years, I’ve surveyed my colleagues in engineering positions around the country (mostly the San Francisco bay area), asking their advice on DOs and DONTs for technical interviewing. I’ve combined their advice – representing companies that include Google, Twitter, Rackspace, Mozilla, LongTail Video, Wharton, Cloudera, and Crompco, among others – with my own experience as a hiring engineering manager at Ask.com, and summarized that advice below. While not a ton has changed in the hiring practices since last year, there has been an increase in Big Data and cloud-related jobs, hence an increased emphasis on knowledge of distributed systems for those positions.

Though some of the advice here is specific to engineering roles, most of it is applicable to any position, technical or not. Here is a summary of our collective 2013 advice for job seekers.

What Technical Interviewers are Looking For 
Preparing for an Interview 
If You Struggle During an Interview
If You Don’t Get the Job

 

What Technical Interviewers are Looking For

Demonstrable coding (for engineering positions)

  • Write code or whiteboard; don’t just answer verbally
  • …no proof => no offer

Problem-solving and Tenacity

  • Talk aloud so interviewer sees your thought process
  • Admit when you don’t know
  • Ask clarifying questions
  • Start with simplest solution then iterate
  • Consider edge cases (exceptions, test cases)
  • Get it working first before optimizing

 Honesty

  • Don’t misrepresent yourself
    • Be honest about the past details of your resume
    • Be honest about your strengths, weaknesses
  • Use both “I” and “We”
    • “We” indicates team player, but too much “we” indicates you were not a leader or may be weak
  • Be diplomatic! no badmouthing people, companies

Passion / Curiosity

  • …for the job
  • …for the company/industry/technologies they use
  • …for outside interest/hobby – can help cover gaps in resume

Communication Skills

  • Speak clearly
  • Show you can comfortably communicate complex thoughts and ideas

Composure & Confidence

  • Stay positive, can-do, confident (fake it if needed)
  • Relax, breathe if you’re nervous, slow down if you’re speaking fast
  • Remember that interviewers want you to succeed
  • Think of a person that inspires you to be confident; put a photo of them on your phone

Connections & Cultural Fit

  • Reach out to any company contacts you have, ask them about fit
  • Get employee referral – gives you advantage getting an interview
  • Use your extended networks to get a referral or informational interview

Above & Beyond

  • Contribute to open source project
  • Get a GitHub account and share your code with employer
  • Show domain expertise on StackExchange/Overflow
  • Demo something relevant during interview
  • Teach the interviewer something

 

Preparing for an Interview

General Tips

  • Do homework on the company, its technologies, and its industry
    • Be prepared to offer opinions, suggestions for their products or UIs
  • Interview elsewhere to gain experience before you interview for your dream job
  • Practice writing code by hand, on whiteboard or paper
  • Ask HR/hiring manager what skills are important *for the interview*, what technologies company uses
  • Bring questions to the interview, especially technical ones
  • Review your resume in detail then fill out a Behavior Preparation Grid (Excel spreadsheet); Memorize your answers
    • * Grid by Gayle Laakmann McDowell, CEO of interview prep resource CareerCup.com
  • Practice answering questions aloud (roleplaying or solo)
  • …the more you practice, the faster & more naturally responses will come to you during the interview

(On-site) Interview Day Preparation

  • Appearance
    • …business casual for Bay Area tech, or one step up from what the employees typically wear
    • …suit for non-technical companies, including financial institutions
    • Wear something comfortable, layers if possible (could be freezing, could be hot & stuffy – don’t want pit stains!)
    • Wear deodorant
  • Prepare for a long, mentally exhausting day
  • Stay hydrated, meter your caffeine

Technical Preparation Subjects

  • In general, study up on:
    • basic algorithms (incl tree traversal)
    • data structures
    • networking
  • As relevant to the position, review:
    • concurrency primitives
    • garbage collection
    • how interpreters work
    • system calls
    • kernel internals
  • For big data or cloud role, or company with problems of scale, study:
    • Hadoop, Map Reduce, HDFS, Hadoop ecosystem
    • distributed systems
    • how data structures scale in distributed applications
    • distributed algorithms

 

If You Struggle During an Interview

  • …not a deal breaker (up to a point), almost no one is perfect
  • Ask questions, work with interviewer to show collaborative skills, show interest & curiosity
  • Ask for hints and use them, don’t ignore
  • Show interesting problem solving (even if wrong), not just brute force
  • Ask them to explain solutions you missed, it’s a learning opportunity
  • Stay positive, confident

 

If You Don’t Get the Job

  • Don’t beat yourself up, identify opportunities for improvement
  • View it as valuable interviewing practice
  • Understand that interviewing and hiring can be somewhat arbitrary
    • Interviewers make mistakes, have bad days, may be poor or inexperienced at interviewing
    • Company may be holding out for a candidate/skillset that they won’t find, and you interview before they adjust their expectations
  • If you love the company, inquire about other teams or the policies for reapplying
    • Not uncommon for companies to hire people they previously declined

A few more resources

Great book to help engineers prep: Cracking the Coding Interview: 150 Programming Questions and Solutions by Gayle Laakmann McDowell, CEO of online interview prep resource CareerCup.com

First 70 pages are great for all job seekers, rest of the book is practice questions for engineers (algorithms, data structures, java, c/c++, databases, threads/locks, testing).

 

Check out the full set of advice gathered from my surveys on this Google Doc spreadsheet.