Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

better interview prep (dsa, sys, starr) #222

Open
Vandivier opened this issue May 11, 2024 · 23 comments
Open

better interview prep (dsa, sys, starr) #222

Vandivier opened this issue May 11, 2024 · 23 comments

Comments

@Vandivier
Copy link
Owner

Vandivier commented May 11, 2024

https://amazon.jobs/en/landing_pages/in-person-interview

S - seek clarification, and pivot anecdote if needed
S - situation
T/O - task / objective
A - action
R - result. ideally, have a positive business metric, and ensure negative things are permanently mitigated
B - brag / demo - tag each anecdote with the skills you think it demonstrates. this includes BAKING IN any company-specific talking points, such as references to leadership principals.

SSTARB, like Starbucks - thanks to Isaiah

so i can assemble an ahead-of-time basket that demonstrates both technical and soft skills, plus whatever skill matrix data I may anticipate communicating

@Vandivier
Copy link
Owner Author

cons: more complicate, more effort including pre-interview effort to discover the skill matrix.
pros: better outcomes ideally, and also better level target control


I came up with what I call the "Starbucks Method" for behavioral interview: SSTARB in contrast to STAR.
The main idea here is "look up the destination skill matrix and communicate that in addition to answering the question you were asked."
Is this a useful technique or no? Feedback welcome.
I can also turn this into a Taro question if recommended, plz lmk. TYIA!
https://www.linkedin.com/posts/john-vandivier_for-behavioral-interviews-is-this-better-activity-7195138851172950016-u4gp?utm_source=share&utm_medium=member_desktop

@Vandivier
Copy link
Owner Author

relates to #84

@Vandivier
Copy link
Owner Author

Here's a JSON literal to enumerate anticipated behavioral questions:

[
    {
        "id": 1,
        "questionText": "Tell me about a time you faced a particularly challenging bug. How did you approach solving it?",
        "tags": ["problem-solving", "troubleshooting", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 8
    },
    {
        "id": 2,
        "questionText": "Describe a situation where you had to learn a new technology or tool quickly. How did you manage it?",
        "tags": ["learning", "adaptability"],
        "expectedContributorLevel": "entry",
        "estimatedFrequency": 7
    },
    {
        "id": 3,
        "questionText": "Give an example of a time you disagreed with a team member about a technical issue. How did you resolve the conflict?",
        "tags": ["teamwork", "communication", "conflict-resolution"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 4,
        "questionText": "Can you describe a project you worked on where you had to balance multiple priorities? How did you manage your time?",
        "tags": ["time-management", "organization"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 5,
        "questionText": "Tell me about a time when you had to meet a tight deadline. How did you ensure the project was completed on time?",
        "tags": ["deadline", "time-management", "pressure"],
        "expectedContributorLevel": "entry",
        "estimatedFrequency": 8
    },
    {
        "id": 6,
        "questionText": "Describe a situation where you received constructive criticism. How did you respond and what changes did you implement?",
        "tags": ["feedback", "growth", "adaptability"],
        "expectedContributorLevel": "entry",
        "estimatedFrequency": 6
    },
    {
        "id": 7,
        "questionText": "Give an example of a time you had to troubleshoot a system under pressure. What steps did you take to identify and resolve the issue?",
        "tags": ["troubleshooting", "problem-solving", "pressure"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 7
    },
    {
        "id": 8,
        "questionText": "Tell me about a project where you implemented a significant change in the development process. What was the outcome?",
        "tags": ["process-improvement", "initiative"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 9,
        "questionText": "Describe a time when you had to make a decision with incomplete information. How did you proceed?",
        "tags": ["decision-making", "uncertainty"],
        "expectedContributorLevel": "staff+",
        "estimatedFrequency": 4
    },
    {
        "id": 10,
        "questionText": "Can you discuss a time when you mentored or helped a junior engineer? What approach did you take?",
        "tags": ["mentorship", "leadership"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 11,
        "questionText": "Tell me about a time when you identified a performance bottleneck in an application. How did you go about resolving it?",
        "tags": ["performance", "optimization", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 12,
        "questionText": "Describe a situation where you had to work with a difficult stakeholder. How did you handle their demands?",
        "tags": ["stakeholder-management", "communication"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 13,
        "questionText": "Give an example of a time when you improved an existing piece of software. What motivated the change and what was the result?",
        "tags": ["improvement", "initiative", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 14,
        "questionText": "Tell me about a time you had to adapt to a significant change in your project or team. How did you manage it?",
        "tags": ["adaptability", "change-management"],
        "expectedContributorLevel": "entry",
        "estimatedFrequency": 7
    },
    {
        "id": 15,
        "questionText": "Describe a time when you worked on a team project that failed. What went wrong, and what did you learn from the experience?",
        "tags": ["teamwork", "failure", "learning"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 16,
        "questionText": "Can you give an example of a time when you had to debug a complex issue in a codebase you were not familiar with?",
        "tags": ["debugging", "problem-solving", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 17,
        "questionText": "Tell me about a time you had to advocate for a technical decision you believed in. How did you persuade others?",
        "tags": ["advocacy", "communication", "technical"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 18,
        "questionText": "Describe a situation where you had to manage multiple stakeholders with conflicting requirements. How did you handle it?",
        "tags": ["stakeholder-management", "conflict-resolution", "communication"],
        "expectedContributorLevel": "staff+",
        "estimatedFrequency": 4
    },
    {
        "id": 19,
        "questionText": "Give an example of a project where you had to use data to make an informed decision. What was the process and the outcome?",
        "tags": ["data-driven", "decision-making", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 5
    },
    {
        "id": 20,
        "questionText": "Tell me about a time when you took a calculated risk in a project. What was the risk, and what was the result?",
        "tags": ["risk-taking", "decision-making"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 4
    },
    {
        "id": 21,
        "questionText": "Tell me about a time that you encountered an unexpected technical issue during a project.",
        "tags": ["problem-solving", "troubleshooting", "technical"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 7
    },
    {
        "id": 22,
        "questionText": "Tell me about a time that you encountered unexpected social friction during a project.",
        "tags": ["teamwork", "conflict-resolution", "communication"],
        "expectedContributorLevel": "mid-career",
        "estimatedFrequency": 6
    },
    {
        "id": 23,
        "questionText": "Tell me about a time that you had to handle a large set of ambiguous scope.",
        "tags": ["scope-management", "ambiguity", "decision-making"],
        "expectedContributorLevel": "staff+",
        "estimatedFrequency": 5
    },
    {
        "id": 24,
        "questionText": "Tell me about a time that you influenced an outcome that you did not directly implement.",
        "tags": ["influence", "leadership", "communication"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 25,
        "questionText": "Tell me about a time that you mentored an individual contributor.",
        "tags": ["mentorship", "leadership"],
        "expectedContributorLevel": "senior",
        "estimatedFrequency": 5
    },
    {
        "id": 26,
        "questionText": "Tell me about a time where you provided constructive criticism.",
        "tags": ["feedback", "growth", "communication"],
        "expectedContributorLevel": "entry",
        "estimatedFrequency": 7
    }
]

@Vandivier
Copy link
Owner Author

Integrated Method (Starbies + STARE)
Overall: 92
For Junior Use: 75
For Senior+ Use: 92
Best Case Score: 99
Worst Case Score: 65

it's advisable for Senior+ but not for juniors due to complexity. Juniors and mids should just use STAR

https://chat.openai.com/share/81e97063-8d12-4489-a427-5b1990854d56

@Vandivier
Copy link
Owner Author

summarized data model of BehavioralAnecdote:

{
  "oneSentencePreview": "string",
  "situation": "string",
  "task": "string",
  "action": "string",
  "result": "string",
  "evaluate": "string",
  "skillsDemonstrated": ["string"],
  "anticipatedQuestions": ["integer"]
}

Explanation of the Data Model:
oneSentencePreview: (Optional) A brief summary or preview of the anecdote used in the Seeking Clarification step of the Integrated Approach.
situation: (Required) Describes the context or background of the anecdote.
task: (Required) Specifies the task or challenge that needed to be addressed.
action: (Required) Details the specific actions taken to address the task or challenge.
result: (Required) Outlines the outcomes or results of the actions taken.
evaluate: (Optional) Reflects on the experience, discussing what was learned and how it will be applied in the future.
skillsDemonstrated: (Required) A list of skills demonstrated in the anecdote, used for highlighting during the bragging step.
anticipatedQuestions: (Required) A list of IDs of BehavioralQuestions that the anecdote can address.
This model should effectively help in organizing and presenting behavioral anecdotes.

@Vandivier
Copy link
Owner Author

Let's extend the data model to specify more detail on the situation:

  1. occurredAtQuarter: The integer business calendar quarter within which the anecdote occurred.
  2. occurredAtYear: The integer year in which the anecdote occurred.
  3. endedAtQuarter: The integer quarter in which the anecdote ended.
  4. endedAtYear: The integer year in which the anecdote ended.
  5. employerName: the string name of the employer
  6. primaryTeamName: optional, the string name of the team on which the job search candidate was working when the anecdote occurred
  7. projectTeamNames: optional, a list of strings of the teams involved in the project

@Vandivier
Copy link
Owner Author

even mo beta data model, with approvers for quality review:

{
  "oneSentencePreview": "string",
  "situation": {
    "occurredAtQuarter": "integer",
    "occurredAtYear": "integer",
    "endedAtQuarter": "integer",
    "endedAtYear": "integer",
    "employerName": "string",
    "primaryTeamName": "string",
    "projectTeamNames": ["string"],
    "description": "string"
  },
  "task": "string",
  "action": "string",
  "result": "string",
  "evaluate": "string",
  "skillsDemonstrated": ["string"],
  "anticipatedQuestions": ["integer"],
  "approvedBy": ["string"]
}

@Vandivier
Copy link
Owner Author

Vandivier commented May 14, 2024

lowest effort approach here is:

  1. make a google doc of anecdotes
  2. use a custom GPT loaded with behavioral question to simulate a behavioral interview

bonus if the custom GPT rates your answers and provides feedback!

Ladderly Custom GPT for Behavioral Interview Simulation

@Vandivier
Copy link
Owner Author

S - seek clarification, and pivot anecdote if needed

seeking clarification also means understanding the focus of the question and which parts you can trim on answering. eg "tell me about some of your mental models and how you instill them in your team" I inappropriately focused on the plural form of models, thinking that a description of only one mental model would be a failed answer. In reality, the questioner wanted me to focus on the instilling aspect, and even discussing a single mental model might be adequate if I were to cover the portion of interest

one thing you can do here is investigate the signal;
basically, you can pivot story to nearest situation
or pivot story to a totally unrelated question covering the same intended signal

i'm assuming saying "that has never happened to me" is a bad answer

@Vandivier
Copy link
Owner Author

part of bragging is to answer "so what? who cares?" which speaks to:

  1. purpose, and
  2. level

we select a story in part because it demonstrates us at or above the target level

@Vandivier
Copy link
Owner Author

For System Design: what framework should we use? PEDALS or RESHADED?
What about Ladderly's distinctive kata and metaflow approach?
What about basic design principals like DRY and YAGNI?
can we Re-use Starbies for system design?

S - Seek Clarification, you should totally do this in sys design
S - Situation - What is the context for our system? In particular, what scale? We are reminded to ask about nonfunctional requirements.
T - Task - What purpose does our system serve? What tasks does it enable? In a sys design context this means "What features do you need to support?" so it reminds us to check on functional requirements.
A - Action - nope, we don't need to take an action except to design a system. We do need APIs though!
R - Result - nope, we don't talk about results here because it hasn't been built. After we complete our design though, we might need to REVISE or REFINE it as a result of verification+evaluation or comparing the proposed design to our originally requirements.
B - Brag - Bragging during sys design is welcome. Just like with behavioral, premeditate the signal you would like to send based on your skill matrix targeting.
- this includes BAKING IN any company-specific talking points, such as references to related experience or knowledge of company-specific infrastructure in contrast to generic infrastructure.
- more important than either of those for sys design though is some BACK OF THE ENVELOP MATH to kick of verification+evaluation with a top-level sanity check on scale, latency, and cost competency
IES - DONT INVITE FEEDBACK, as a senior+ you want to continue to drive the conversation until the clock runs out. Instead, ITERATE through EXTRA STUFF (IES). Consider added functional and nonfunctional features, ideally extending your BRAG to show how your amazing system can be extended to all of these cases. If you run into something your architecture can't handle, try to solve it by addition instead of refactor and frame it as a strategically later feature rather than a mistake. Slow down the conversation at this time to try to run out the clock, ideally only speaking to 1-3 extra things. Doing more than that will increase risk of running into unknown unknowns.

@Vandivier
Copy link
Owner Author

problem with both PEDALS and RESHADED:
https://www.lewis-lin.com/blog/pedals-method
https://learn.educative.io/hubfs/System%20Design/System%20Design%20Cheat%20Sheet.pdf

why are we running estimation off of a database schema before writing the API?!

shouldn't the design should flow like the below?
client use case -> client interface -> server interface -> db schema -> estimation

@Vandivier
Copy link
Owner Author

@Vandivier
Copy link
Owner Author

i want a cheat sheet for the napkin math though, and Custom GPT Shadow Rounds can flashcard this

@Vandivier
Copy link
Owner Author

@Vandivier
Copy link
Owner Author

for "bragging" maybe a nice technique is to simply recap 3 intended skills targeted for communication, in case the interviewer wasn't directly seeking them:
"Three things i like about this story are that I think it highlights large scope with multi-quarter and cross-team collaboration, customer-focused priority mindset, and mentorship for relatively junior engineers on my team."

@Vandivier
Copy link
Owner Author

use excalidraw
https://excalidraw.com/

the best prep is to do practice rounds

@Vandivier
Copy link
Owner Author

https://en.wikipedia.org/wiki/CAP_theorem

"is eventual consistency ok or do we need immediate consistency?"

immediate consistency is important in the case of PRIVATE PROPERTY

ie i own this thing, so someone else CANT HAVE IT - this is where consistency is more important; with consistency priority, we can lock (which reduces availability)

this can occur at the microservice level instead of the whole system level; i can have one available service and one consistency-prioritized service

@Vandivier Vandivier changed the title better than star method? better interview prep (dsa, sys, starr) Aug 5, 2024
@Vandivier
Copy link
Owner Author

let's make a cheat sheet for code templates for the 14 patterns

and our own sys design cheat sheet as well. we can link to reshaded but good to have our own in case they take down theirs

@Vandivier
Copy link
Owner Author

more on sys design
https://www.youtube.com/watch?v=Y6Ev8GIlbxc

@Vandivier
Copy link
Owner Author

@Vandivier
Copy link
Owner Author

https://www.youtube.com/watch?v=VdrEq0cODu4

image

"serverless is dangerous in sys design"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant