# tanchao.xyz — Full text dump for LLMs # Generated: 2026-05-29T03:36:12.311Z # Author: Chao Tan # Site: https://tanchao.xyz ============================================================ # Data Protection in BigQuery: A Field Guide URL: https://tanchao.xyz/posts/2026/05/17/bigquery-data-protection/ Date: 2026-05-17 Last updated: 2026-05-17 Tags: bigquery, gcp, security, governance, data Description: How BigQuery layers IAM, policy tags, dynamic masking, RLS, authorized views, VPC Service Controls, CMEK/EKM, and the Knowledge Catalog into a defensible data protection posture — and what it leaves to you. TL;DR: BigQuery's data protection model lives in IAM, policy tags, and the query engine — not cluster configs. This post walks each control surface from identity to audit log and identifies where the platform's evidence trail has gaps. > Part of the overview: [How Modern Data Platforms Protect Data](/posts/2026/05/13/how-modern-data-platforms-protect-data/). Sibling deep-dives: [Databricks Unity Catalog](/posts/2026/05/13/databricks-unity-catalog-data-protection/) · [Policy overlay vendors](/posts/2026/05/13/data-policy-overlay-vendors/) · [Governance-as-code with dbt + Terraform](/posts/2026/05/13/data-governance-as-code-dbt-terraform/) · [The third-party auditor's gap list](/posts/2026/05/13/data-platform-auditor-gaps/) BigQuery is a serverless data warehouse. There are no clusters to configure, no storage nodes to harden, no OS patches to schedule. Your entire protection model lives in three places: IAM, the catalog (policy tags and taxonomy), and the query engine (row filters, column masks, authorized views). Everything else — VPC Service Controls, KMS, audit logs — layers on top of those three. This post walks the request path from identity to audit log, then covers each control surface in detail. The question at every step is the same one from the [overview](/posts/2026/05/13/how-modern-data-platforms-protect-data/): how do you prove the control fired? ## The request path, end to end Every BigQuery access control fires somewhere on the request path between identity resolution and audit emission. If a mechanism is not on this path, it does not protect the query at runtime — it is supporting infrastructure. When a user issues `SELECT * FROM project.dataset.table`, this is what fires: 1. **Identity resolves.** Google Workspace or a federated IdP (Okta, Azure AD, etc.) issues an OAuth token. The principal is a user, group, or service account. 2. **IAM check at project → dataset → table.** The Resource Manager evaluates whether the principal holds a role with `bigquery.tables.getData` (or equivalent) at the right level. Denied? Query fails with a 403 before touching data. 3. **Row access policy applies.** If the table has row access policies, the engine injects a predicate filter. Rows the principal is not entitled to never enter the query plan. 4. **Column policy tag check + masking.** If any selected column carries a policy tag, the engine checks the principal's Fine-Grained Reader role on that tag. If missing, either the query fails (column-level security) or a masking rule rewrites the value (dynamic masking). 5. **Results return.** The masked, filtered result set is delivered to the client. 6. **Cloud Audit Log written.** An entry lands in the Data Access log (if enabled) recording who queried what, when, from which IP, and the job metadata. If a control is not on this path, it is supporting infrastructure. VPC Service Controls protect the _perimeter_ (step 0, before the query reaches the service). KMS protects data _at rest_ (below step 3). But the access decision itself lives in steps 2–4 (see [BigQuery access controls](https://cloud.google.com/bigquery/docs/access-control-intro) and [data governance overview](https://cloud.google.com/bigquery/docs/data-governance)). ## 1\. IAM hierarchy and least privilege BigQuery IAM is the coarse access control layer that determines whether a principal can reach an object at all. It operates at five levels of granularity — organization, folder, project, dataset, and table/view/routine — with permissions inheriting downward. Most governance failures start here, with over-broad grants at the project level that make fine-grained controls downstream irrelevant. **The natural unit is the dataset.** Most teams over-grant at the project level (`roles/bigquery.dataViewer` on the project gives read access to every dataset in it). The first governance win is moving grants down to dataset level and using IAM Conditions to scope time-bound or attribute-based access. **Predefined vs custom roles.** The predefined roles (`dataViewer`, `dataEditor`, `dataOwner`, `jobUser`, `admin`) are coarse. In practice, you need custom roles to separate "can query" from "can export" from "can copy to another project." The `bigquery.tables.export` permission is the one most teams forget to restrict. **Service account sprawl.** Scheduled queries, Dataform, Dataflow pipelines, Cloud Composer DAGs, and Vertex AI training jobs all use service accounts. Each one holds IAM bindings that accumulate over time. The audit question: can you list every service account with data access, and for each, show the last time it actually used that access? **IAM Conditions.** Conditions let you scope grants by time, resource name, or request attribute. Example: grant `dataViewer` only on datasets whose name starts with `analytics_` and only during business hours. Conditions are the closest BigQuery gets to ABAC without policy tags (see [IAM resource-level access](https://cloud.google.com/bigquery/docs/control-access-to-resources-iam)). ## 2\. Policy tags: BigQuery's classification primitive Policy tags are the most important governance primitive BigQuery offers. They live in a Data Catalog taxonomy (a tree of labels you define) and bind to individual columns. Once bound, a policy tag does two things: 1. **Column-level security (CLS):** The column becomes invisible to any principal who lacks the `Fine-Grained Reader` role on that tag. Queries that reference the column fail outright. 2. **Dynamic data masking:** Instead of blocking access, a masking rule rewrites the column value based on the reader's group membership. **The taxonomy is the real governance work.** Designing the tag hierarchy — `PII > email`, `PII > SSN`, `Financial > revenue`, `Internal > draft` — determines what policies you can express. A flat taxonomy forces one-off grants. A well-structured tree lets you grant at an interior node and cover all children. **Anti-pattern: tagging at table creation time.** If policy tags are applied manually when someone creates a table, they drift the moment a new column is added or a pipeline recreates the table. Tags should originate from a classification scan (Sensitive Data Protection) or from CI (Terraform applying tags on every deploy). Manual tagging is folklore — you cannot prove it is current (see [column-level security intro](https://cloud.google.com/bigquery/docs/column-level-security-intro) and [implementation guide](https://cloud.google.com/bigquery/docs/column-level-security)). ## 3\. Dynamic data masking Dynamic data masking attaches a masking rule to a policy tag. When a principal queries a tagged column and does not hold the unmasked reader role, the engine substitutes a masked value instead of blocking the query. **Built-in masking routines:** - `NULL` — replaces with null - Default value — replaces with a type-appropriate zero/empty string - SHA-256 hash — deterministic pseudonymization (same input always produces same hash) - Last four characters — useful for partial card numbers or SSNs - Email mask — preserves domain, masks local part - Date: year only — truncates to year **Custom masking via authorized routines.** When built-in routines are not enough, you write a UDF and register it as the masking routine for a policy tag. The UDF runs with the elevated privileges of its owning dataset (an authorized routine), so it can apply business logic the caller cannot see or bypass. **The composition model.** A single column can wear one policy tag. That tag can enforce either CLS (block) or masking (rewrite), but the outcome for a specific principal depends on which roles they hold and where those roles are granted in the policy-tag hierarchy: - **Fine-Grained Reader on the tag (or a parent tag):** The principal sees the raw value. - **Masked Reader on the tag (or a parent tag):** The principal sees the masked value. - **Neither:** The query fails. The edge case that bites real orgs: if a principal holds Fine-Grained Reader on a _parent_ tag and Masked Reader on a _child_ tag, the more permissive grant wins and they see raw data. Role resolution follows the tag hierarchy, not the column. Design your taxonomy and role bindings together — granting Fine-Grained Reader at the top of the tree to "admins" means no masking applies to them anywhere in the tree, even if Masked Reader is granted more narrowly (see [dynamic data masking](https://cloud.google.com/bigquery/docs/column-data-masking-intro)). ## 4\. Row-level security Row-level security (RLS) in BigQuery controls which rows a principal can see within a table. You attach SQL predicates with grantee lists to a table; the engine injects those predicates at query time so that rows the caller is not entitled to are excluded before results are assembled. RLS is invisible to the caller except through the absence of rows. ```sql CREATE ROW ACCESS POLICY region_filter ON project.dataset.customers GRANT TO ("group:emea-analysts@example.com") FILTER USING (region = 'EMEA'); ``` **Composition with CLS.** A principal can be simultaneously filtered by row policies and masked on columns. The two mechanisms are orthogonal — row policies decide _which_ rows, column policies decide _what_ they see in those rows. **Performance.** Do not assume row access policy predicates participate in partition pruning or clustering benefits — they do not. A row policy on a partitioned table still requires the engine to evaluate the predicate against scanned rows within the accessed partitions. For large tables, a policy referencing a non-clustered column on a multi-terabyte table will scan more data than you might expect from the IAM-only path. **Anti-pattern: RLS via authorized views.** Before row access policies existed (GA 2022), teams built authorized views with `SESSION_USER()` predicates. These still work but carry maintenance overhead — every new table needs a new view, and you cannot centrally audit which predicates apply where. Row policies are the right tool unless your access logic requires complex joins or business logic that only a view can express (see [row-level security intro](https://cloud.google.com/bigquery/docs/row-level-security-intro)). ## 5\. Authorized views, datasets, and routines The authorized pattern is BigQuery's "share a query, not a table" primitive. An authorized view runs with the permissions of its _owning_ dataset, not the calling user. This means the caller can query the view without having direct access to the underlying tables. **Authorized datasets** scale this pattern. Instead of authorizing individual views, you authorize an entire dataset. Every view and routine in that dataset inherits the elevation. This is the pattern for exposing a governed analytics layer: raw data in one dataset (locked down), curated views in another (broadly accessible). **Authorized routines** extend the same trust model to table functions, UDFs, and stored procedures. A UDF in an authorized dataset can read tables the caller cannot — useful for aggregation services, anonymization functions, or metric definitions that should not expose raw inputs. **When to use authorized patterns vs RLS + CLS:** - **Authorized views/routines:** When the access logic requires joins, aggregations, or transformations that cannot be expressed as a simple predicate or mask. - **RLS + CLS:** When the table structure is the correct interface and you just need to restrict which rows or columns a principal sees. Mixing both is common. A governed analytics dataset might contain authorized views that read from RLS-protected tables with CLS-masked columns (see [authorized views](https://cloud.google.com/bigquery/docs/authorized-views), [authorized datasets](https://cloud.google.com/bigquery/docs/authorized-datasets), [authorized routines](https://cloud.google.com/bigquery/docs/authorized-routines)). ## 6\. VPC Service Controls VPC Service Controls (VPC-SC) are the network-perimeter layer that operates orthogonally to IAM. While IAM answers "does this principal have permission?", VPC-SC answers "is this request coming from an allowed network context?" — and a principal can hold valid credentials yet still be denied if the request originates outside the perimeter. This makes VPC-SC the primary defense against credential theft and data exfiltration. **The exfiltration scenario VPC-SC stops:** An attacker obtains service account credentials (leaked in a log, stolen from a CI runner). Without VPC-SC, they can use those credentials from any IP to copy tables to their own project. With VPC-SC, the request is denied because it originates outside your perimeter — even though the credentials are valid. **The perimeter model:** - **Service perimeter:** A boundary around one or more GCP projects. BigQuery API calls crossing the boundary are denied. - **Ingress rules:** Allow specific principals from specific sources (IP ranges, other perimeters) to call specific services. - **Egress rules:** Allow data to leave the perimeter to specific destinations. - **Access levels:** Context-aware conditions (corporate network, managed device, geo) that gate ingress. **Operational reality.** VPC-SC is the single most operationally painful control in GCP. The violations are noisy until your access levels match the reality of where your users and service accounts actually operate. Plan for a "dry-run" period — VPC-SC supports a dry-run mode that logs would-be violations without blocking them. Run dry-run for weeks before enforcing (see [VPC-SC for BigQuery](https://cloud.google.com/bigquery/docs/vpc-sc)). ## 7\. CMEK, Cloud EKM, and column-level AEAD BigQuery encrypts all data at rest by default using Google-managed keys, but three opt-in layers give you progressively more key custody — from controlling the key policy, to holding the key material externally, to encrypting individual column values with application-layer AEAD. Each layer adds auditability (via Cloud KMS logs) and a kill-switch capability at the cost of operational complexity and latency. **1\. CMEK (Customer-Managed Encryption Keys).** You create a key in Cloud KMS. BigQuery uses it to encrypt your datasets. Google holds the HSM; you hold the IAM policy that governs who can use the key. You can disable or destroy the key to render data unreadable — a hard kill switch. **2\. Cloud EKM (External Key Manager).** The key material lives in your own external KMS (Fortanix, Thales CipherTrust, Equinix SmartKey, etc.). Google never sees the key plaintext. Every encryption/decryption operation calls out to your KMS. You get a real-time veto: disable the external key and BigQuery cannot read the data, even if Google's infrastructure is compromised. **3\. Column-level AEAD encryption.** Selective encryption of individual column values using `AEAD.ENCRYPT` / `AEAD.DECRYPT` SQL functions with a KMS-managed key. The ciphertext is stored in the column; only callers who hold `cloudkms.cryptoKeyVersions.useToDecrypt` on the referenced key can read the plaintext. This is application-layer encryption inside the warehouse. **The auditor's question:** Who can use the key? Who can rotate it? What triggers rotation? The answers live in Cloud KMS audit logs — a second evidence trail alongside BigQuery's own audit logs. If you use CMEK or EKM, your compliance story now spans two log sources (see [CMEK for BigQuery](https://cloud.google.com/bigquery/docs/customer-managed-encryption), [encryption at rest](https://cloud.google.com/bigquery/docs/encryption-at-rest), [column AEAD](https://cloud.google.com/bigquery/docs/column-key-encrypt)). ## 8\. Sensitive Data Protection (Cloud DLP) BigQuery does not have a native classification engine — it cannot automatically detect which columns contain PII, financial data, or health records. Sensitive Data Protection (SDP, formerly Cloud DLP) fills this gap as a separate GCP service that inspects, profiles, and de-identifies data. Without SDP or an equivalent scan, policy tags only cover what someone remembered to tag, and coverage drifts the moment a schema changes. **The workflow:** 1. **Inspection job** scans a table or dataset for sensitive data (infoTypes: `CREDIT_CARD_NUMBER`, `US_SOCIAL_SECURITY_NUMBER`, `EMAIL_ADDRESS`, 150+ built-in detectors). 2. **Profiling** runs on a schedule and produces a sensitivity score per column. 3. **Findings** land in a BigQuery findings table or Security Command Center. 4. **A driver job** (yours to build) reads the findings and applies or updates policy tags in the Data Catalog taxonomy. The scan → tag pipeline is not built-in. Steps 1–3 are managed by SDP; step 4 is your automation. This is the most important integration to get right — it is the only mechanism that keeps classification current as schemas evolve. **Anti-pattern: relying on manual classification.** If your policy tags are applied by a human at table creation time and never re-scanned, classification drifts. The correct pattern is: SDP scan detects → findings trigger a Cloud Function or Workflows pipeline → pipeline calls the Data Catalog API to apply or update tags → policy fires on next query (see [SDP scanning for BigQuery](https://cloud.google.com/bigquery/docs/scan-with-dlp)). ## 9\. The Knowledge Catalog Google has renamed its catalog surface multiple times — Data Catalog, Dataplex Universal Catalog, and now Knowledge Catalog. The naming is confusing, but the ownership boundary that matters for data protection is straightforward: policy tags (the access control primitive) are BigQuery-native and managed via the Data Catalog API, while Knowledge Catalog is the broader metadata layer for lineage, discovery, and cross-service governance. **What lives where:** - **Policy tags for column-level security and masking** are managed through the BigQuery and Data Catalog APIs. This is not deprecated and does not require the Knowledge Catalog. Policy tags are a BigQuery-native primitive that predates the catalog unification effort. - **Knowledge Catalog** is the broader metadata layer: business glossary, data quality rules, lineage visualization, discovery, and cross-service catalog entries (AlloyDB, Cloud Storage, Vertex AI). The distinction matters for protection: you do _not_ need to adopt Knowledge Catalog to use policy tags, CLS, or masking. You need it if you want centralized lineage, cross-service discovery, or business-glossary-driven governance. **What Knowledge Catalog holds for protection:** - Business glossary and semantic definitions - Table and column lineage captured from BigQuery SQL jobs - Data quality validation results - Cross-service catalog entries **The lineage gap.** Lineage capture is automatic for BigQuery SQL jobs. It is partial or absent for Dataflow, Dataproc, BQML training jobs, and custom pipelines writing to Cloud Storage. If an auditor asks "where did this derived column originate?" and the path crosses a non-SQL engine, the lineage edge may not exist in the catalog (see [Knowledge Catalog with BigQuery](https://cloud.google.com/bigquery/docs/use-knowledge-catalog), [catalog transition guide](https://cloud.google.com/dataplex/docs/transition-to-dataplex-catalog), and [unified governance blog](https://cloud.google.com/blog/products/data-analytics/manage-and-govern-data-with-the-unified-dataplex-and-data-catalog)). ## 10\. Cloud Audit Logs: your evidence pack Cloud Audit Logs are the evidence layer that makes every other control in this post defensible. Without audit logs, you can configure IAM, policy tags, and VPC-SC perfectly and still fail an audit because you cannot prove the controls fired on a specific query at a specific time. BigQuery writes to three log streams, each with different default behavior and cost implications. - **Admin Activity** (always on, free): WHO created/deleted/modified datasets, tables, and policies. - **Data Access** (enabled by default for BigQuery, costs apply): WHO queried WHICH tables, with job metadata. Unlike most GCP services where Data Access logs are off by default, BigQuery enables `DATA_READ` and `DATA_WRITE` audit logs automatically. However, the scope and detail vary — `ADMIN_READ` (listing datasets, getting table metadata) is still off by default and must be enabled separately. - **System Event** (always on, free): system-level operations like BigQuery Storage API reads. **Verify your configuration.** Because BigQuery's default-on behavior differs from other GCP services, teams often assume full coverage without checking. The specific gap: `ADMIN_READ` logs (who listed which datasets, who called `getTable`) are not enabled by default. If your compliance requirement includes proving who _discovered_ what data exists — not just who queried it — you need to enable `ADMIN_READ` explicitly. **Tamper resistance.** Audit logs should be sunk to a separate project that the production project's principals cannot write to. The pattern: create a logging project, create a log sink in the production project that routes to the logging project, grant `logging.logWriter` only to the sink's service account. Now even a compromised admin in the production project cannot delete the evidence. **What the log contains — and what it does not.** The audit log entry records: project, dataset, table, job ID, caller identity, caller IP, timestamp, and bytes processed. The `authorizationInfo` field shows which IAM permissions were checked and whether row access policy names were evaluated. However, the log does _not_ include: the actual row filter expression that was applied, the grantee list of the policy, or a direct link between policy-tag checks and the triggering query. This means you can prove _that_ access controls fired, but reconstructing _exactly what a user saw_ requires correlating the audit log with the current policy definitions — the log alone is not a complete evidence pack (see [BigQuery audit logs reference](https://cloud.google.com/bigquery/docs/reference/auditlogs)). ## What BigQuery does well - **IAM at five levels of granularity** (org, folder, project, dataset, table/view/routine), all in one consistent model with inheritance and conditions. - **Policy tags as a first-class primitive.** Column-level security and dynamic masking keyed off a shared classification taxonomy is rare among cloud data warehouses. - **VPC Service Controls** provide a real network-level perimeter — not just a firewall rule, but a context-aware boundary that blocks exfiltration independent of IAM. - **Mature key custody.** CMEK, EKM, and column AEAD cover the full spectrum from "I control the policy" to "I control the key material" to "I encrypt individual values." - **Row policies compose with column policies.** The two access control dimensions (which rows, which columns) are orthogonal and enforced at plan time. ## What BigQuery leaves to you - **Classification automation.** Sensitive Data Protection is a separate service. The scan → detect → tag pipeline is yours to build and maintain. Without it, policy tags drift. - **Lineage beyond SQL.** Lineage is automatic for BigQuery SQL jobs but partial or absent for Dataflow, Dataproc, BQML, and custom pipelines. If your derived tables cross these boundaries, you have blind spots. - **Policy-as-code composition.** Terraform providers for BigQuery and Data Catalog exist, but composing them with dbt (which owns the table schemas) requires manual layering. This is covered in the [IaC deep-dive](/posts/2026/05/13/data-governance-as-code-dbt-terraform/). - **Cross-project sharing via Analytics Hub.** Analytics Hub is a separate sharing surface with its own access model and audit trail. Most teams miss it as an attack surface — a shared dataset listed in Analytics Hub is accessible to any subscriber who accepted the listing. - **Data Access log costs.** Enabling Data Access logs on high-query-volume projects generates substantial log volume. Budget for it, or use exclusion filters to scope logging to governed datasets only. * * * ## Sources All sources are linked inline throughout the post. Consolidated here for reference: - [BigQuery security & access controls](https://cloud.google.com/bigquery/docs/access-control-intro) - [BigQuery data governance overview](https://cloud.google.com/bigquery/docs/data-governance) - [Column-level access control / policy tags](https://cloud.google.com/bigquery/docs/column-level-security-intro) - [Restrict columns (implementation)](https://cloud.google.com/bigquery/docs/column-level-security) - [Dynamic data masking](https://cloud.google.com/bigquery/docs/column-data-masking-intro) - [Row-level security](https://cloud.google.com/bigquery/docs/row-level-security-intro) - [Authorized views](https://cloud.google.com/bigquery/docs/authorized-views) - [Authorized datasets](https://cloud.google.com/bigquery/docs/authorized-datasets) - [Authorized routines](https://cloud.google.com/bigquery/docs/authorized-routines) - [IAM at dataset / table / view / routine granularity](https://cloud.google.com/bigquery/docs/control-access-to-resources-iam) - [VPC Service Controls perimeter for BigQuery](https://cloud.google.com/bigquery/docs/vpc-sc) - [CMEK for BigQuery](https://cloud.google.com/bigquery/docs/customer-managed-encryption) - [Encryption at rest (default + KMS)](https://cloud.google.com/bigquery/docs/encryption-at-rest) - [Column AEAD encryption with KMS](https://cloud.google.com/bigquery/docs/column-key-encrypt) - [Sensitive Data Protection scanning of BigQuery](https://cloud.google.com/bigquery/docs/scan-with-dlp) - [Knowledge Catalog with BigQuery](https://cloud.google.com/bigquery/docs/use-knowledge-catalog) - [Data Catalog → Knowledge Catalog transition](https://cloud.google.com/dataplex/docs/transition-to-dataplex-catalog) - [Unified Dataplex + Data Catalog governance (Cloud Blog)](https://cloud.google.com/blog/products/data-analytics/manage-and-govern-data-with-the-unified-dataplex-and-data-catalog) - [BigQuery audit logs reference](https://cloud.google.com/bigquery/docs/reference/auditlogs) - [Trusting your data on Google Cloud (whitepaper)](https://cloud.google.com/security/compliance/trusting_data_gcp_whitepaper) ============================================================ # How Modern Data Platforms Protect Data URL: https://tanchao.xyz/posts/2026/05/13/how-modern-data-platforms-protect-data/ Date: 2026-05-13 Last updated: 2026-05-13 Tags: data, security, governance, bigquery, databricks, immuta Description: A short, practical overview of how BigQuery, Databricks, Immuta, and Lake Formation protect data in practice — and where teams usually get exposed. TL;DR: A shared evaluation lens for data protection across BigQuery, Databricks Unity Catalog, policy overlays (Immuta, Privacera, OneTrust, Lake Formation), and the dbt + Terraform layer. Six properties to defend, one query-path model, ten control areas, and the auditor question at every step: show me the log line. Every cloud data warehouse says it has strong governance. The useful question is simpler: when a query runs, what control fires, and what proof do you have? This post is a shared evaluation lens for data protection across BigQuery, Databricks Unity Catalog, policy overlays (Immuta, Privacera, OneTrust, Lake Formation), and the dbt + Terraform layer. It gives you one request-path model and ten control areas that apply to any platform. The deep-dives apply the lens platform by platform. The audience is the engineer or architect who needs to explain their platform's protection posture to an auditor — or verify that it actually works. > **The series:** > > - [Data protection in BigQuery](/posts/2026/05/17/bigquery-data-protection/) > - [Data protection in Databricks Unity Catalog](/posts/2026/05/13/databricks-unity-catalog-data-protection/) > - [Data policy overlay vendors: Immuta, Privacera, OneTrust, Lake Formation](/posts/2026/05/13/data-policy-overlay-vendors/) > - [Data governance as code: dbt + Terraform patterns](/posts/2026/05/13/data-governance-as-code-dbt-terraform/) > - [Where the auditor will find gaps in your data platform](/posts/2026/05/13/data-platform-auditor-gaps/) ## What "data protection" means here A platform protects data if it can defend six properties in front of an auditor. Each one maps to a specific failure an auditor will write up: - **Confidentiality** — the wrong principal cannot read the wrong bytes. Failure: an analyst pulls a table they were never granted and nobody noticed. - **Integrity** — the bytes are what the writer wrote. Failure: a pipeline silently overwrites production data and there is no before-image to compare. - **Availability** — the data is reachable to the right principals when the SLA says so. Failure: a key rotation locks out every downstream consumer for four hours. - **Privacy** — personal data is minimized, masked, or transformed before it leaves the perimeter. Failure: a DSAR arrives and you cannot enumerate where the subject's data lives. - **Auditability** — every access decision is logged in a way a third party can reconstruct. Failure: the auditor asks "who read this table last Tuesday?" and you cannot answer. - **Lineage and residency** — you know where each byte came from and which jurisdiction it lives in. Failure: a derived table contains PII from an EU source and lands in a US region with no record of how it got there. The scope is the warehouse layer: when a query runs, what stops the wrong data from coming back, and how do you prove the control fired? Physical security, corporate IAM hygiene, and app-layer encryption are out of scope. ## The end-to-end request path A query is the natural unit of analysis because every control either fires on the request path or it does not exist. The path looks roughly the same on every platform: 1. **Identity resolves.** The IdP issues a token; SCIM has already provisioned groups. 2. **Coarse authorization.** IAM (or the catalog's equivalent) decides if the principal can even reach the object. 3. **Fine-grained authorization.** Row, column, and tag-based policies filter what is visible. 4. **Transformation.** Masking, tokenization, and aggregation rules rewrite the result before it leaves the engine. 5. **Egress controls.** Network perimeter, sharing rules, and residency rules decide where the bytes can land. 6. **Audit emission.** An immutable record of who-asked-what-and-saw-what is written to a sink. If a control is not on this list, it is not protecting the query — it is supporting evidence (key custody, classification scans, lineage capture) that makes the controls on this list trustworthy. The verification question at every step is the same: **show me the log line.** A control that cannot produce a queryable audit record is folklore. ## The layered control model ```mermaid flowchart TB Users["Users / Service Accounts"] --> IdP["IdP (SSO / SCIM)"] IdP --> Compute["Compute Engine\n(BigQuery / Databricks / Athena)"] Catalog["Native Catalog\n(Knowledge Catalog / Unity Catalog / Glue)"] --> Compute Overlay["Policy Overlay\n(Immuta / Privacera / Lake Formation)"] --> Catalog IaC["IaC Layer\n(Terraform + dbt)"] --> Catalog IaC --> Overlay Class["Classification & Tagging"] --> Catalog Compute --> Audit["Audit Sink\n(Cloud Audit Logs / system.access.audit / UAM)"] Audit --> Auditor["Third-Party Auditor"] ``` Three notes: **The catalog is the control plane.** Grants, tags, masks, and row filters live here. If the catalog and the compute engine disagree, the compute engine wins. **IaC needs a clean split.** dbt should own model-bound metadata. Terraform should own platform policy, network, and key settings. **Audit is the proof.** If you cannot query the log by principal, object, and time, the control is not ready for audit. ## The ten control areas The six properties above define what you need to defend. These ten areas define where you look. Each deep-dive evaluates a platform against all ten. The question for each is not "does the UI exist?" but "how do you prove it fired?" 1. **Identity and coarse access** — IAM, groups, and project or workspace boundaries. Check: pull effective permissions from the API, not just the UI. 2. **Fine-grained access** — table, row, column, and view controls. Check: run the same query as a privileged and restricted user. 3. **Masking and tokenization** — dynamic masking, tokenization, and aggregation. Check: show the rewritten result and the rule that caused it. 4. **Classification and tagging** — the labels that ABAC and masking depend on. Check: show the latest scan or tag change and the policy consuming it. 5. **Lineage** — where sensitive data flows downstream. Check: start with one sensitive column and trace derived tables, dashboards, and models. 6. **Audit and observability** — the evidence trail. Check: find the log line by principal, object, and time. 7. **Encryption and key custody** — CMEK, EKM, AEAD, and split-key models. Check: show the key, who can use it, and the last rotation event. 8. **Network isolation** — private paths, perimeters, and egress rules. Check: show the config and at least one denied event. 9. **Data sharing** — internal and external sharing paths. Check: list every share, who received it, and its expiry or agreement. 10. **Residency and sovereignty** — where data lives and where it can move. Check: show the region settings and any cross-region path. ## The platforms at a glance ### BigQuery Strong IAM granularity, mature KMS options, and a real perimeter with VPC Service Controls. The rough edge is wiring DLP, tags, and policy together without drift. → Deep dive: [Data protection in BigQuery](/posts/2026/05/17/bigquery-data-protection/) ### Databricks (Unity Catalog) Strong namespace model, ABAC, lineage, and audit you can query in SQL. Watch for legacy `hive_metastore`, changing serverless controls, and region-by-region sprawl. → Deep dive: [Data protection in Databricks Unity Catalog](/posts/2026/05/13/databricks-unity-catalog-data-protection/) ### Immuta, Privacera, OneTrust, Lake Formation (overlays) Useful when you need one policy layer across multiple engines, purpose-based access, or deeper masking. The tradeoff is another control plane to keep in sync with the warehouse. Lake Formation is the AWS-native version of this pattern. → Deep dive: [Data policy overlay vendors](/posts/2026/05/13/data-policy-overlay-vendors/) ### dbt + Terraform (the IaC layer) Not a platform. This is the layer that keeps the others consistent. The clean split is dbt for model-bound metadata and Terraform for platform-bound policy. → Deep dive: [Data governance as code: dbt + Terraform patterns](/posts/2026/05/13/data-governance-as-code-dbt-terraform/) ### Where each platform leans hardest - **BigQuery** — Strongest at IAM, VPC-SC, and the KMS story. Weakest at classification automation and derived-path lineage. - **Databricks UC** — Strongest at namespace and grants, ABAC, lineage, and audit-as-SQL. Weakest at multi-region and non-UC compute paths. - **Immuta** — Strongest at heterogeneous estates, advanced masking, and purpose-based access. Weakest at IaC ergonomics; the Terraform story is thinner than the policy story. - **Lake Formation** — Strongest at AWS-native consistency and S3 Tables / Iceberg. Weakest at multi-cloud, by design — it does not try. ## Where auditors find gaps The recurring findings, summarized. The deep-dive covers recovery patterns for each: - Service-account sprawl, especially around scheduled queries, Dataform, and Composer. - Lineage gaps for derived and ML feature tables, where the catalog stops capturing. - Inconsistent classification across the native catalog and the overlay, with no single source of truth. - Policy-as-code repo that disagrees with live state because someone clicked in the console. - Key custody and rotation evidence that exists but cannot be produced in under an hour. - DSAR and right-to-be-forgotten on Iceberg or Delta, where deletion semantics are subtle. - External sharing without a traceable DPA on the same principal that received the share. → Full treatment: [Where the auditor will find gaps in your data platform](/posts/2026/05/13/data-platform-auditor-gaps/) ## What this post skips - **Snowflake** — covered in a separate series. - **Pricing, vendor selection scoring, and RFP mechanics** — opinionated work that doesn't generalize. - **Step-by-step configuration tutorials** — the deep-dives link to the official guides. * * * ## Sources This post pulls from each deep-dive's reference list. The deep-dive posts hold the full per-section citations. - BigQuery deep-dive Sources: see [Data protection in BigQuery](/posts/2026/05/17/bigquery-data-protection/#sources) - Databricks deep-dive Sources: see [Data protection in Databricks Unity Catalog](/posts/2026/05/13/databricks-unity-catalog-data-protection/#sources) - Overlay vendors deep-dive Sources: see [Data policy overlay vendors](/posts/2026/05/13/data-policy-overlay-vendors/#sources) - IaC deep-dive Sources: see [Data governance as code](/posts/2026/05/13/data-governance-as-code-dbt-terraform/#sources) - Auditor gaps deep-dive Sources: see [Where the auditor will find gaps](/posts/2026/05/13/data-platform-auditor-gaps/#sources) ============================================================ # AI Coding Interview Rubrics URL: https://tanchao.xyz/posts/2026/05/07/ai-coding-interview-rubrics/ Date: 2026-05-07 Last updated: 2026-05-07 Tags: ai, career, engineering Description: What separates a competent AI-assisted engineer from someone who just autocompletes? A framework for evaluating the skills that actually matter. TL;DR: An 8-part rubric for evaluating engineers who use AI coding tools — model selection, mode selection, context management, environment setup, custom tooling, personalized agent system, spec → test → development flow, and feedback loops. The point: judgment over prompting. AI coding interviews are emerging. Companies want to know: can this person actually ship with AI, or do they just tab-complete and pray? I've been thinking about what I'd evaluate — and it maps closely to what I've learned makes the difference in my own daily work. Not prompt engineering tricks. Actual engineering judgment applied to a new tool. Here's my rubric. ## 1\. Model selection The first decision isn't what to type — it's which model to use. Do I need deep reasoning, or is this a straightforward transform? Is this a 200-line refactor (small model, fast) or an architecture decision (large model, think)? Can I get away with Haiku for this grep-and-replace, or do I need Opus to reason about the state machine? The skill is knowing the cost/capability tradeoff cold. Wrong model choice either wastes money or wastes time recovering from bad output. ## 2\. Mode selection Plan before you agent. Ask before you plan. If I just need a question answered, I stay in ask mode. If the task has meaningful tradeoffs, I plan first. If I have a clear implementation path, I agent. The anti-pattern is jumping straight to agent mode for everything — the model thrashes, you burn context, and you end up with a mess that takes longer to fix than doing it right. The rubric question: does this person know when to think versus when to execute? ## 3\. Context window management Most of the time I run at max context. As long as I remember to start fresh sessions for fresh tasks, this works well. The real decision is the model-premium-pricing threshold — once you exceed it, every subsequent turn in that conversation is expensive. But sometimes a task genuinely needs that depth. A 3000-line file with complex interdependencies. A multi-file refactor where the model needs to hold the full picture. That's a deliberate choice to pay for coherence. The skill: knowing when to start fresh versus when the accumulated context is worth the premium. ## 4\. Environment setup A well-indexed codebase saves enormous time across every interaction. `AGENTS.md` (or `CLAUDE.md`) that describes your project structure, conventions, constraints. Cursor rules for file-specific patterns. Brief, accurate, maintained. This is the equivalent of keeping your workshop organized. Every minute spent on indexing pays back tenfold. In an interview context, I'd look for: does this person set up the environment before diving in, or do they repeat the same context in every prompt? ## 5\. Custom tooling Beyond the basics: domain-specific skills, component-level workflows, reusable patterns encoded as context. You need a data migration? There's a skill for that with the schema conventions, validation steps, and rollback patterns already baked in. You need a new API endpoint? The skill knows your auth middleware, error handling conventions, and test patterns. This is the difference between using AI as a generic assistant and using it as a domain-aware collaborator. ## 6\. Personalized agent system Not in the repo. In your own setup. The agent follows your habits, inherits your architectural taste, knows your review standards, prepares CI the way you expect it. This is the most underrated layer. Two engineers with the same model and the same codebase will get wildly different results based on how they've trained their environment to work with them. It's the accumulated judgment that makes the output feel like yours, not like generic AI slop. ## 7\. Spec Development → Test Development → Development Three phases, each feeding the next. **Spec Development** produces the spec — requirements, constraints, edge cases, acceptance criteria. This is where you define what "done" looks like and enumerate the use cases. **Test Development** takes those use cases and produces test cases. Concrete, runnable, verifiable. The AI is good at this — given a clear spec, it generates thorough test coverage fast. **Development** makes the tests pass. Now the model has something to self-evaluate against. It's the difference between "write me a function" (vague, no termination condition) and "make these 14 tests pass" (concrete, binary). The model works better, you review faster, and defects surface before they ship. ## 8\. Feedback loops The system improves over time — but only if you build the loop. Capture what worked. Update your skills and rules. Add constraints when the agent makes a class of mistake. Promote patterns that produced good output. The engineer who ships 10x with AI in month six versus month one got there through deliberate iteration on their own workflow, not just practice with prompts. * * * ## What I'd actually evaluate If I were designing an AI coding interview, I'd watch for: - **Judgment over speed.** Did they pick the right tool for the subtask, or just fire the biggest model at everything? - **Preparation over prompting.** Did they set up context, or start from zero every time? - **Verification over trust.** Did they define success criteria before generating code? - **Iteration over perfection.** Did they course-correct quickly when output was wrong? The engineers who are dangerous with AI aren't the ones who know the fanciest prompts. They're the ones who've built systems around the tool — layered judgment that compounds. The model is the easy part. The system around it is the skill. ============================================================ # Monthly retro — March 2024 URL: https://tanchao.xyz/posts/2024/03/29/monthly-retro/ Date: 2024-03-29 Last updated: 2024-03-29 Tags: career, snowflake, retro Description: What I shipped, what I'm focused on next, and what I learned in March 2024 at Snowflake. ## Delivery - Classification UDF → UDTF migration done. **10x performance improvement.** - Automatic tag propagation engine design almost done. Satisfied about the final algorithms for performance and eventual consistency, and the full scan trade-offs we thought through — eventually a trade-off on time vs. memory. ## Next priority - Implementation of the continuous propagation - Observability of the propagation - Lots of data analysis and SQLs over the dependency graph and tag associations, building a new dashboard for object tagging ## Learnings from work and study - Performance improvement at architecture level: focus on gains that reduce the growth delta, e.g. from O(N) to O(log N) - How to write better documentation - Opinionate, then focus on all the supporting data. If not enough supporting data, revise opinion. - CEO change resulted in such a huge impact on $SNOW, as well as my financial plan - An admired architect left the team. They taught me a lot, even with the last stamp. ## Industry findings - DBRX is not an efficient move. We chose Mistral for a reason — price/cost efficiency. - _AI Component System_ is a good paper to read. I think LLM is like the OS in the future world. More importantly, wait and see who will invent the DOS and the Windows. ============================================================ # TILs at Snowflake URL: https://tanchao.xyz/posts/2024/03/28/snowflake-til/ Date: 2024-03-28 Last updated: 2024-03-28 Tags: career, snowflake, performance, engineering Description: Two years of learnings at Snowflake — on performance, product thinking, and technical leadership. I didn't post the #makeitsnow sharing when I joined Snowflake, one because I was exhausted from the scary immigration system (almost lost my working status), the other was the hesitance among all the choices. Today, as of 03/24/2024, the stock price is the same as it was around Aug. 2022. Financially, this is the worst choice among all my offers where Meta/Uber bumped 4x. Technically, this is a good choice when I look back at how much I learnt and grew. Today is just another proud day for me to look at what we invented and delivered, worth writing them down. ## Product First Think hard for customers, make intuitive decisions for customers, even if it sacrifices tech complexity. ## Opinionated Tech Lead Make a right choice, by right algorithm, and/or accurate user data, and/or personal (professional) experience. ## Algorithms in practice Math has the power of truth provenance, algorithms too. How to be "right"? Prove it ahead with algo. ## Effective Performance Tuning Today's proud comes from the performance improvement we made to our core classification function — **10x faster**. More importantly, the delta between p50/p90 is reduced from 40s to 3s. What's more meaningful to myself: reduced the delta ratio from **1x** to **0.4x**. When I looked at the p90 numbers drop from 80 to 10 this morning, I felt _normal_. I did such performance improvements multiple times during my career and I knew this is just another case when we focus in this area. Later, during discussion with my manager, I suddenly realized this was the north star. **IT IS DIFFERENT.** Let me zoom out and take a look at the 2-year picture. Our p90 journey has been `50s → tuning → 10s → climbing → 80s → tuning → 10s`: 1. **First reduction** was a _normal improvement_. We had a bunch of classifiers running slower than they should. I believed it should be dozens of milliseconds. So we refactored the structure and rewrote some slow classifiers, p90 improved 5x as expected. 2. **Second climbing** was a sacrifice for product features. We introduced more classifiers to support internationalization expansion, plus dynamic custom classification. We admit to a lineage latency increase from more classifiers. We don't do parallelization at the executor level because the data storage workers already optimize concurrent distribution well — multithreading at executor level would just compete for resources. Customers are happy with the new features, with the cost. 3. **Latest reduction** is an innovation and "standing on the shoulders of giants". The giant part: Snowflake UDTF offers a more performant way to parallel-scan a table, vs the old UDF which is more like sequential execution. The innovative part: we flatten columns to rows, then leverage the UDTF mechanism for maximum parallelism. With the latest tuning, we cut off the lineage latency increase from more columns in a table. The whole job duration for a table is dominated by the slowest column now. > How fast is fast enough? The amazing part for me is turning a design into a reality. We had a theory, we did prototype, we implemented and rolled out. There were bugs, performance testing limitations, and special workload negative results. When we finally arrived at the goal, until I realized _the delta between p50 & p90_, I wasn't sure how to prove the success. As a perf nerd, this is the best part — this is when I am comfortable that I master the **more effective** perf tuning methodology. ## People - Learnt from PM - Learnt from Architect - Learnt from Manager ============================================================ # First month retro URL: https://tanchao.xyz/posts/2022/10/05/hello-snowflake/ Date: 2022-10-05 Last updated: 2022-10-05 Tags: career, software, snowflake Description: When I left Amazon, I scheduled 1-1s with leaders and friends to farewell (virtually) in person. During these chats, mostly my gratefulness to work with them an When I left Amazon, I scheduled 1-1s with leaders and friends to farewell (virtually) in person. During these chats, mostly my gratefulness to work with them and memories we shared, also seeked some last-min feedbacks, and a little bit uncertainty about next adventure. I promised that I would get back once I figure it out. I took a 2-weeks gap traveling around northen western Washington, in the middle of the trip, I got the news that my green card arrived home, so I drove home and grabbed the gc and de-routed 1-week to Vancouver, CA. First time visiting Canada, first time camping, first time to the northern western point, a fullfilling trip. I felt lucky and deeply appreciated for things moving smoothly. Back to the topic. ## First month retro 1. 1w Boot Camp; 2. Lots of reading and training; 3. A ramp up task within the team under others' coach, just finished my 3rd PR in python for a ML pipeline, almost done with one step of them; 1. some contributions on how pipeline should be organized. 4. Suggested a new way to project setup so that we could do development easier with IDE; 5. Some comments and reviews. ## Good parts 1. lots of autonomy 2. smart and senior teammates, the technical discussion could focus on the right thing 3. privacy field seems to be an interesting area ## Not so good parts 1. completely new environment, working style and product; lots of things to ramp up. 2. change process is not as convenient as Amazon, release with one monolithic repo reminds me the giant alexa service day. 3. reminds me the HSBC life where the HR training is so heavy, Amazon is actually doing better. ## Misc 1. SQL first API, mono repo and release train 2. Isolated, governed product/prioritization 1. reduced scope compare to Amazon 3. Less team wise meetings, more pod wise small meetings/chats/huddles **Summary: I can't promise this is a great and better place to work with atm, I will get back to it after another Q or half year.** Finally, I would like to end this with one friend's quote, ``` what you have is only a temporary fresh air, eventually, engineers always solve the similar staffs. there is no good choice, bad options, all depends on luck? ``` ============================================================ # Chao's Habits URL: https://tanchao.xyz/posts/2022/08/03/chaos-habits/ Date: 2022-08-03 Last updated: 2026-05-28 Description: Five engineering habits to keep after leaving Amazon: own with a growth mindset, dive deep on operations, learn systems the hard way, prioritize tech debt, and ship your own things first. TL;DR: Five engineering habits to keep after leaving Amazon — own with a growth mindset, dive deep on operations and tickets, learn systems the hard way (refactor-break-fix-support), understand and prioritize tech debt, and get your own things done first. As I am leaving Amazon and pursue my next adventure, what are the essential good work habits that I want to keep? Lots of things listed on this blog, but what are the critical ones? 0. Be an owner with growth mindset 1. Hands-on and Dive deep with operation tasks 2. learn system the hard way: a) refact it, break it, fix it; b) support ops and ticket, 5-whys and fix the root cause so that the issue remain fixed; c) figure out the architecture part that hard to change; d) observe their performance benchmark. 3. Understand tech debts and try to prioritize and evaluate impact with them 4. get my own things done first ============================================================ # Design Philosophy URL: https://tanchao.xyz/posts/2022/06/16/design-philosophy/ Date: 2022-06-16 Last updated: 2022-06-16 Description: 1. Abstract 1. Flexible to change 1. S # TC's version 1. Abstract 2. Flexible to change 3. S ## Measurement - Changes required to add a new feature/client/dependency/data entity - Change layers required to add a new feature/client/dependency/data entity - Tests required for a change - Layer/Isolated pipeline of changes # Existing Design Principles ## IDEALS - [https://www.infoq.com/articles/microservices-design-ideals/](https://www.infoq.com/articles/microservices-design-ideals/) ## SOLID ## DRY ## LEAST ## CAP ============================================================ # Driver vs Coder URL: https://tanchao.xyz/posts/2022/03/28/driver-coder/ Date: 2022-03-28 Last updated: 2022-03-28 Description: Yesterday I drove to my friend's house for a gathering, during the intersection of I485 & I90, a car speeded up, passed me and then merged in my lane without tu # Empathy in driving Yesterday I drove to my friend's house for a gathering, during the intersection of I485 & I90, a car speeded up, passed me and then merged in my lane without turn lighting. I was frustrated with enough rude drivers on road, so I started blaiming the driver with my wife, "I just can't understand why there is people acting like this, pass one car and merge into the lane, think about the effort and gain, how stupid they are to make that choice..." I paused, yes, why? maybe they were not rude nor stupid, but instead, they are new bees on this intersection and in a hurry situation so that when they passed they realized it's a single lane to merge back. I don't know the fact, but **understanding** others position in a **rationale** sense makes me feel pretty good later. The anger from myself wasn't that someone's rude behavior, was that someone's rude position. This story linked to the **empathy** discussion I had with a friend, he suggested that _empthay is to explore and understand others' difficulties and constraints_, that's a great definition. Before the conversation, I treated empathy as _no ego_, focusing on things instead of attitudes. Dictionary says "the ability to understand and share the feelings of another". Now link the two together, empathy is not only to understand others, but it also helps understanding self at the end. # 06/29/2022 Recently came over a company's values, which tells `We value compassion as well as intelligence.`, [ref](https://pdtpartners.com/careers). I was curious on what does `compassion` really mean, as I don't really see it much. Here is one I felt deeply related to this article: > Compassion is not the same as empathy or altruism, though the concepts are related. While empathy refers more generally to our ability to take the perspective of and feel the emotions of another person, compassion is when those feelings and thoughts include the desire to help. ============================================================ # API URL: https://tanchao.xyz/posts/2022/02/24/api/ Date: 2022-02-24 Last updated: 2022-02-24 Description: - Never break backward compatibility. Our contract with our customers is sacrosanct. We will never violate that contract. - Work backward from customer use # API design tenets - Never break backward compatibility. > Our contract with our customers is sacrosanct. We will never violate that contract. - Work backward from customer use cases. - Create highly usable APIs but sometimes make intentional trade-offs for security, availability, latency, or cost. > The best APIs are usable, secure, available, fast and cheap at the same time. When necessary, we make intentional trade-offs in usability or cost to improve security, availability or performance. We strive to find a solution which satisfies all concerns. - Create APIs which leverage a developer's existing knowledge. > Including terms, semantics, shapes, and industry standards. - Create APIs that are composable and consistent within and across services. - Create APIs that are self-describing and have a clear, specific purpose. - Create APIs with explicit and well-documented failure modes that are clear to customers. # Micro-service In the micro-service pattern, each extension makes a call to a different service. There are several variants of this approach, including having a standard interface for all of the micro-services. Teams creating service extensions can use that interface, or put their business logic in an existing service that they own and add code to the primary service to follow their interface. ## Benefits of micro-service federation - Provides clear ownership boundaries between Federator Team code and Plugin Team code - Plugin Team only needs to understand the micro-service interface and not all the complexity of the Federator Service - Can provide clear failure attribution to the Federatee Team - The code complexity of Federator & Federatee services are not dependent on the number of Federatee Teams - Standard tooling such as live merge, Gordian Knot, and Class Loaders work as expected ## Costs of micro-service federation - Adds ongoing operations costs for the Federatee Team - Adds network latency - Each Federatee Team needs to understand how to write code for each micro-service contract they are implementing ## Different Protocols - [https://www.imaginarycloud.com/blog/grpc-vs-rest/](https://www.imaginarycloud.com/blog/grpc-vs-rest/) - [https://iq.opengenus.org/rpc-vs-rest/](https://iq.opengenus.org/rpc-vs-rest/) - [https://www.smashingmagazine.com/2016/09/understanding-rest-and-rpc-for-http-apis/](https://www.smashingmagazine.com/2016/09/understanding-rest-and-rpc-for-http-apis/) ============================================================ # Engineering Excellence URL: https://tanchao.xyz/posts/2022/02/03/e-e/ Date: 2022-02-03 Last updated: 2022-02-03 Description: Amazon has a famous concept called OE which is short for Operational Excellence. The other term not so famous, is EE that short for Engineering Excellence. EE f # Engineering Excellence Amazon has a famous concept called `OE` which is short for Operational Excellence. The other term not so famous, is `EE` that short for Engineering Excellence. EE focus on the engineer development strengths and OE focus on the maintenance strengths. ## Onboarding Process - differentiate between `Runbook Execution` vs `Runbook Understand` - for example, the runbook says _run command xyz on host abc._ Do it is simple, but **understand** it is not simple. Few questions to clarify to fully understand it: - what does the xyz do? why need this step? - why host _abc_ not else? is it always hardcoded? what if that host is gone? ## Toolkits ### pUML ## Mentalality ### Ownership Motivation - Be proactive - Curious and Learn ### Customer Obssession Do the Right things - working backwards - focus on how it contributes to end customer/business/value ## Measure Productivity Few tenets: - Optimize as close as dev phase - Pay attention to on-board phase - Speak Same Language (same code style via checkstyle, same standard via SpotBug, same coverage via dryrun) Metrics to watch: - commit messages like a story - commit pattern - RedFlag: revert commits (revert revert is a hard stop) - CR comments - Pipeline stats - PreProd success rates - Prod rollbacks - Priority Deployments - why do you need patch? - why can't do patch as deployment? - least required testing coverage ASAP ============================================================ # Amazon Gems URL: https://tanchao.xyz/posts/2022/01/20/amzn-gems/ Date: 2022-01-20 Last updated: 2022-01-20 Description: There are some good habits that I learnt and practices and established during at Amazon. ## Mechanisms There are some good habits that I learnt and practices and established during at Amazon. 1. Done-Done 2. Working backwards 3. COE (Correction of Errors) 1. 5-WHYs 2. Template 4. Programtic Automation 5. Flywheel 6. Focus in Input Improvement, Measure with Outcome metrics 7. RCA: once fixed, it remain fixed. 8. Good intentions won't work, mechanisms do. ## Toolkit by Design - Phonetool: everybody wants a phonetool - Sage: A internal Q&A forum - leveling and badge (phonetool) - TamperMonkey: framework for internal helper tools - Paste: A simple note book and share tool - broadcast, particularly PoA + BuildTool + AWSPerfEng - SDE Good Reads - Users/Tcchao (personal wiki/blog culture) - Tech Blog - CR tool (w. add-ons and even customized add-ons) - dryrun - goodcorp - Profile service - Weblab tool (w. overrides) - VersionSet - BuildTool - Conflict Resolver ## References ### GTD > Brad Porters Common steps of all projects (my annotations). I find this framework a good way of thinking about projects. I've put in my thoughts and links to papers I like that go a level deeper. ``` Projects at Amazon tend to succeed only when they complete each of these steps in order. # Problem identified All problems at Amazon are customer problems (internal reference,good book) Why now? This typically is a PM/PM-T, with SDE/TPM/PM-T on technical feasibility Artifacts: Email, PRFAQ, 1/3/6 Pager (On Writing) # Problem widely understood (between leaders, stake holders... company-wide requires much broader group to understand) - If the problem is not widely understood you will not get a lot of backing to solve the problem. Usually the first point in time a tie-break is needed if a similar system exists Do you have data to make a decision? Understand the customer point of view, what's being done now, what's the process, what's the reality on the ground? This will help ensure the problem is understood but the basis of the coming decision is data driven. SDE L6+ role here is to help influence on technically credible possible solutions ("is this nuts?") Artifacts: Email, PRFAQ, 1/3/6 Pager (On Writing) # Owner Identified - Nothing happens at Amazon without a tagged owner that everyone believes owns it. Usually decided in the management chain, someone stepping up, assigned by someone more senior, etc. Ownership modes should follow PE Roles framework (really, L6+ Roles framework)-- (Roles Framework) Focus on establishing high velocity decision making (Alignment vs Decision Making) This typically is a TPM for OLT/STeam goal, SDE if we don't have a TPM leveled to scope Artifacts: Meeting minutes, Project wiki, email list # Plan in Place Define the parameters of a 'good' solution: constraints, SLA/SLO, Tenets, are dates important? (Tenets) Define how to measure success, input/output metrics (Metrics and Measurement, good book) Focus on how a solution works (not the what we will build), this scales across teams better Define scope boundary, possibly leading to forked off problems (back to step 1) Don't do all upfront design, bound sub-designs by constraints that can be built in "step 5: executing" Separate a roadmap of 'ideal' end state from milestones of incremental value Artifacts: "How" technical document, prototype code (catalyst) (On Writing) # Executing (you may not do all the work here but you HAVE to track it.) Design and building iteratively to solve 'what' to build that meets the 'how in step 4. Define key milestones to deliver value Artifacts: Design docs, Code, Test Plans (On Writing) # Adoption / Solution (do not stop at PLAN, this is a common PE failure pattern). Track with business/health metrics. Guide the growth from pilot to everywhere, scaling to new regions and customers stresses designs remove the short-term decisions (tech debt) used to launch quickly Help re-evaluate milestones based on customer data, recommend changes as necessary Artifacts: Dashboards, Page 0 metrics, SIMs/CRs removing tech debt and bug fixing, helping with "escalations" ``` ### S3 EE #### S3 L6 Engineer LPs ``` The Amazon L6 leveling guidelines describe what makes a successful L6 engineer at Amazon. In January 2020, the S3G PEs met to go deeper on a subset of these guidelines that we wanted to discuss across the org. That resulted in the following writeup. Note that these aren't “new requirements” just for S3G engineers. These are from the levelling guidelines doc, just explained in a different way. Quality obsessed. The quality of what your team delivers directly impacts your customer's experience, and so you own the quality of the software and operations in your space. You are an effective steward of security, durability, and availability. You drive your team’s thinking on testing, operational readiness, and durability to the level needed for the most trusted object store on the planet. You partner with other leaders to help create a culture that ensures your teams think in terms of quality and safety. Delivery Oriented. Our roadmap exists to deliver value to customers, and so you find ways to help your teams get things over the finish line. This involves producing exemplary designs and code. But you recognize that you must deliver through others to scale out your contributions. To do so, you mentor teammates on their work directly but also mentor teammates on how to mentor others. When your team is deadlocked on a decision, you help move things forward rather than digging in and defending “your side”. You recognize that your teams may tend to be overly cautious at the expense of delivery, and you find approaches and tradeoffs to move forward quickly while maintaining safety. L6 engineers need a lot of "grit" to deliver. S3G is a multi-billion-dollar business with over 100 trillion objects. No projects are inherently easy. L6 leaders need to figure out the right problems to solve in their services to deliver on the broader problems we want to be solving. Seek and Incorporate Diverse Feedback. You seek out and incorporate diverse feedback from outside of your immediate team on your goals, key service metrics, and designs for your teams and projects. This may involve iteration on your ideas or letting them go altogether. You are transparent about what you’re working on to other technical leaders in object storage. On the flip side, you make yourself available to provide feedback to others and help build communities with key peers for ideas to be discussed. Be a Subject Matter Expert. You understand your team’s software, the value it provides, and the challenges it presents. You’re also deeply familiar with what your teams are working on and why those projects are valuable to customers. You have a deep understanding of the broader S3G architecture in which your services must exist. You use this knowledge to inform your decisions, and others seek you out for your expertise. Influence the roadmap. You deeply understand what your customers need from your space, and you use that understanding to shape your team’s key service metrics and goals. You're a partner to your SDM. You disambiguate the work we need to do to achieve a goal. You decompose work into projects/milestones for your fellow SDEs. Have Backbone. You speak up when you notice a problem or opportunity to do better. This could be in response to quality problems, velocity problems, or even in response to a team working on the wrong thing altogether. At the same time, be part of the solution: clarify the problem, drive to a solution, and start the conversation with your own alternatives. ``` #### S3 Tenets ``` Tenets Secure – We recognize that threats evolve and we continuously raise the bar on the protection of customer data. Customer data is secure by default and we provide built-in security controls that are simple to use, easy to audit, and scalable. Reliable – We exceed customer expectations for durability and availability of each storage class. Our systems are resilient to failures, and do not need planned or unplanned downtime. Scalable – We scale availability, speed, throughput, capacity, and robustness to support an unlimited number or variety of web-scale applications. We design our systems to use scale as an advantage so that system growth increases, not decreases, our availability, speed, throughput, capacity, and robustness. Cost Effective – We charge only for what is used and continually innovate in software and hardware to drive down cost. We pass savings along to our customers. Customers should not be able to easily build or buy the same services elsewhere for less. Simple – We build our features to be easy to understand, easy to adopt and easy to use. We provide a customer experience that is intuitive and effective in solving customer problems. We help customers avoid making mistakes and recover if a mistake is made. Performance – We deliver consistent performance in our storage classes. While being mindful of costs, we work to improve our offerings or deliver new offerings to meet our customers’ evolving performance requirements. First Use Matters – Our largest customer tomorrow may be using our services for the first time today. We balance our investments and aren’t afraid to self-disrupt to ensure our services remain differentiated and compelling for these customers. Innovative – We innovate on behalf of customers by listening carefully and not being constrained by perceptions or existing implementations. We invest in testing and safety mechanisms so that our teams can iterate rapidly without compromising the customer experience. We plant seeds, protect saplings, and double down when we see customer delight. ``` #### Peru Public Doc It was a great reading of the `Peru` project public wiki, the most impressive note for myself is actually this structure. This is kind of MUST answered strutucre whenever a re-architecture is proposed. ``` The rest of this document will attempt to articulate: 1. Our goals. 2. The current state of affairs. 3. How did we get here? 4. Why can’t the be fixed? 5. Why are we looking at an evolution of and not just counting on ? 6. What would a replacement for the live VersionSet look like in terms of content and user experience? 7. Why do we think we won’t make the same mistakes? ``` ============================================================ # Good reads URL: https://tanchao.xyz/posts/2022/01/13/good-reads/ Date: 2022-01-13 Last updated: 2022-01-13 Description: There is a question in Zhihu (aka. Quora in China) asked "what's the programming book made you WoW?". That's the trigger that I should allocate a post for those There is a question in Zhihu (aka. Quora in China) asked "what's the programming book made you WoW?". That's the trigger that I should allocate a post for those highly impactful books in my career, they are not limited to programming, they are more about the tech industry, both skills and instruments. ## Leaders - James Hamilton, SVP/Distinguished Engineer@Amazon: [https://perspectives.mvdirona.com/](https://perspectives.mvdirona.com/) - [http://muratbuffalo.blogspot.com/](http://muratbuffalo.blogspot.com/) - [https://www.brendangregg.com/methodology.html](https://www.brendangregg.com/methodology.html) - [https://ferd.ca/](https://ferd.ca/) ## Books - Unix Programming Art - Hack and painters - Refactoring - 7 Habits - DDIA ## Articles ### Distributed System - Amazing reading on distributed system trade-offs: [https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed/](https://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed/) > This strategy should have three steps: detect partitions, enter an explicit partition mode that can limit some operations, and initiate a recovery process to restore consistency and compensate for mistakes made during a partition. - [https://www.keboola.com/blog/eventual-consistency](https://www.keboola.com/blog/eventual-consistency) - Wiki is good - [https://en.wikipedia.org/wiki/CAP\_theorem](https://en.wikipedia.org/wiki/CAP_theorem) - [https://en.wikipedia.org/wiki/Eventual\_consistency](https://en.wikipedia.org/wiki/Eventual_consistency) - [https://en.wikipedia.org/wiki/ACID](https://en.wikipedia.org/wiki/ACID) - [https://en.wikipedia.org/wiki/PACELC\_theorem](https://en.wikipedia.org/wiki/PACELC_theorem) ### Topics #### Payments - [https://eng.uber.com/money-scale-strong-data/](https://eng.uber.com/money-scale-strong-data/) - [https://medium.com/get-ally/how-to-architect-online-payment-processing-system-for-an-online-store-6dc84350a39](https://medium.com/get-ally/how-to-architect-online-payment-processing-system-for-an-online-store-6dc84350a39) #### Finance - [https://www.infoq.com/presentations/financial-exchange-architecture/](https://www.infoq.com/presentations/financial-exchange-architecture/) #### Performance - ebay tech: [https://tech.ebayinc.com/archive/?tag=performance-engineering](https://tech.ebayinc.com/archive/?tag=performance-engineering) #### Best practices - AWS: [https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&cards-body.sort-order=desc&awsf.filter-content-category=\*all&awsf.filter-content-type=\*all&awsf.filter-content-level=\*all](https://aws.amazon.com/cn/builders-library/?cards-body.sort-by=item.additionalFields.sortDate&cards-body.sort-order=desc&awsf.filter-content-category=*all&awsf.filter-content-type=*all&awsf.filter-content-level=*all) - DDB: [https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/best-practices.html) ============================================================ # supertan's principles URL: https://tanchao.xyz/posts/2021/12/07/principles/ Date: 2021-12-07 Last updated: 2026-05-28 Description: Seven personal engineering principles distilled from Amazon: automation, proactivity, deliver-small-deliver-fast, highest standard, dynamic problem-solving, think big, and operational excellence. TL;DR: Seven personal engineering principles distilled from Amazon — automation, proactivity, deliver small and fast, insist on the highest standard, solve dynamic end-to-end problems, think big, and operational excellence — backed by four tenets: automate everything, make things cheap, solve the right problem, and listen-understand-communicate. Amazon has it's leadership principles to guide the company on decision making. Here are some guide my behaviors: 1. Automation > automate everything, particularly something rely on human intention; as jeffb@ always said: "good intention won't work, mechanism does". > > 2. Proactive someone call it ownership or founder's mentality, just step out and think beyond. > 3. Deliver small, deliver fast > > speed matters. make solutions cheap > > 4. Insist highest standard there are two important perspective: insist highest standard for self; hold it for the team. > 5. Solve dynamic problem > > curious to learn to explore the end to end picture, software is eating the world, start from customer direct experience to the bits movement on the data center. > > 6. Think big think ahead, think beyond, whatever you called, don't limit to customer's camplains only, watch for the reflection behind the scene. Experiment and prototype quickly. > 7. OE > > measure, observe and reason; fix the root cause and it should remain fixed. tenets 0. automate everything 1. make things _cheap_ 1. prototype works 2. plan A vs plan B, why not just use plan B 3. vision, design, impl 4. price performance 2. solve the right problem 3. listen, understand and communicate # Examples ## Ownership ### 6/16 Use case: A complainted that something (X) doesn't work with his stuffs (Y), that something was offered by B. Then B claimed X worked with his stuffs (Z), so there should be some issue in `Y` or `X & Y`. Chao: The issue here is that B introduced another variable `Z` that actually won't really help the end delivery `X & Y`. As a owner, we should focus on _Solving Customer's Problem_ instead of _Proving we are right_. ============================================================ # Tech recordings at Amazon URL: https://tanchao.xyz/posts/2021/07/31/tech-records/ Date: 2021-07-31 Last updated: 2026-05-28 Tags: career, engineering, api, performance Description: A running log of technical learnings, career reflections, and engineering principles from my years at Amazon Alexa. TL;DR: A 2021–2022 running log of engineering lessons from Amazon Alexa — API design as the central craft, performance tuning, COE root-cause culture, the 'make it cheap' mental model, and the habits that compound across teams. ## Mission Statement - `To be the best API Service owner`: mastered the best practice of API (including the full-stack microservices and data processes behind the scene) design, build and maintainenance. - `System Performance Tuning`: continuously improving the end to end system performance on both reliability and scalability ## Records ### Jul. 2022 - One important thing is the awareness between "best practice" vs "benchmark". For inherited systems, they normally come with legacy wise and people mostly inherit their best practices. However, leaders should pay attention to the benchmarks as well, if there is gap between current best practice, it's not the best practice. - benchmark keeps refreshing on the other hand, for example, `step function express mode`. - We always talk about the "Data" for right decision making, however, we should add "Rationale" along with it. The data should match the rationale. - Again, curiosity is so important, again and again reminds me the quote "stay hungry, stay foolish". - Knowing the benchmark or standard is good, you know what "good enough" is. - for example, when we consider `Scalability`, we could measure it with `handle 100x scale, no need architecture change for next 5 years.` ### Jun. 2022 - iterative optimization is the right way to better stage, which requires two essential tools - Feedback & Upgrade Loop: easy and fast feedback and upgrade mechanism that could collect feedbacks easily from end customers, and a way to correct the product easily. For example, oh-my-zsh upgrade mechanism. - Experiment Framework: easy to conduct A/B testing and critical changes help measure the change impact effectively - Project Management by Milestone instead of by _Project_ - Timebox the milestones then the _real_ project progress comes with it - Prioritization over Time/Resource/Feature ### May. 2022 - A recent COE was due to a bug in a widely spread `X-Utils` package, one of the action items was to `mark the util package deprecated to avoid people misuse it`. This is a typical example of "naive thinking": there is a problem in the tool, let's not use the tool with problem. The question raised from my side: what should we use then? this tool is commonly used for a reason, is there an alternative that supports all its good features without this problem? - On the other side, `COE` is one the most favorite mechanism I learnt here at Amazon. The `Fix Root Cause via 5-WHYs` are not aimed for a process completion but keep the problem fixed and remain fixed. ### Apr. 2022 - Decision Making on career change - there is no _right_ answer, but a _suitable choice_ - don't regret ### Mar. 2022 - PoA talk from alv on distributed system testing - class must have good javadoc - test as close as possible to the dev environment - create tool for UT instead of relying on Integration Test (Do the **Cheap** choice!) - focus on the fundamental features, the rest are others job ### Feb. 2022 - Key value: `breakdown problem into granular sub-tasks and delegate to the right people`. - understand the problem - known people - task breakdown with proper boundary - keep track of the breakdowns so it's assembled well when needed - `温故知新` — we shall learn from the past and keep it refreshed with latest knowledge and skills ### Jan. 2022 - Just a note on important things for API design: focused on "entity definition" more than anything else. "What is it? Why do we need it in \[X business\]? In an ideal world, would we need it?" - The value I should focus on: 1) insist a good technical benchmark; 2) keep the maintainability and flexibility with best effort; 3) remember business first. - `cheap`: make latency cheap to reduce, make availability cheap to raise, make system cheap to change. ### Dec. 2021 - `To Be THE Best API Service Developer`, mastered the best practice of API (including the full-stack microservices and data processes behind the scene) design, maintenance and scale. - Two sets of technical skills: - _**Tools**_ — like programming language familiarity, database/api/ops best practices etc. - _**Instruments**_ — like mechanism of design creation, process to tech vision etc. ### Nov. 2021 - Automation at different levels, learning from "Resolve MV Conflict": 1. ask experienced SDE 2. write a wiki on HowTo 3. write a script GodianKnot.fix-mv-conflict 4. integrate and automate on its own - AH told me "stay ahead" so that to discover what's missing - YS told me "own end to end" so that to solve the problem completely - S3 stories show that "stick to highest standard at one dimension" so that it could arrive a beyond expectation stage ### Oct. 2021 - Dataflow velocity and cost could be a good design dimension to evaluate - Design for flexibility - Listen to Customers, but Think ahead and offer beyond their voice. "One more thing" by Steve Jobs. ### Sep. 2021 - Security and Privacy is a concern for all existing online services - Realtime abuse detection ### Aug. 2021 Thirdparty developer platform owner: - effective API design (and internal system consistent maintenance following the design) - platform operation (boundary between infra vs partner with proper permission group configuration and operational excellence) - developer metrics monitoring and improvement (customer oriented platform) - feedback mechanism - better sandbox (isolate side effects) ### Jul. 2021 Proficient API designer and Tier-1 Ops master, particularly on _Runtime_/_Platform_ service. ### Random notes - Terminology is an essential important setup for context. - Variables, more specifically, Variable's Scope. Be thoughtful about what scope a variable lives in — system-level variables are easy to misuse. - Focus. List the tasks with specifics and time bounded, makes it easier to narrow down the focus list. > The best APIs are `usable, secure, available, fast and cheap` at the same time. When necessary, we make intentional trade-offs in usability or cost to improve security, availability or performance. ## Case studies - Precompute Framework / Elastic View - Chain Executor / DAG Processor - Dynamic Configurable Rule Engine - Discovery and Throttling - Async Task Management ============================================================ # focus on fault tolerance instead of perfectionism URL: https://tanchao.xyz/posts/2021/07/15/basketball-lesson/ Date: 2021-07-15 Last updated: 2021-07-15 Description: Quote from my linkedin post (https://www.linkedin.com/posts/tanchaokidsplay-designpattern-activity-6821708682187935744-7rTJ): Quote from my linkedin post ([https://www.linkedin.com/posts/tanchao\_kidsplay-designpattern-activity-6821708682187935744-7rTJ](https://www.linkedin.com/posts/tanchao_kidsplay-designpattern-activity-6821708682187935744-7rTJ)): ``` fault tolerance >>> high performance ==> stable availability Not from technical study but my 4yr old son's basketball bouncing experience. After he swift the focus on "how to bounce the ball back to normal rhythm" instead of "bouncing the ball correctly", he can bounce more than 100 times now, compare to an average of 10-20s few days ago. First time feeling some design concept helps in real life ::joker:: ``` ============================================================ # SDE Good Reads URL: https://tanchao.xyz/posts/2021/07/13/sde-good-reads/ Date: 2021-07-13 Last updated: 2021-07-13 Description: 1. https://sre.google/sre-book/service-level-objectives/ 2. https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli ## Operational Excellence 1. [https://sre.google/sre-book/service-level-objectives/](https://sre.google/sre-book/service-level-objectives/) 2. [https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli](https://www.atlassian.com/incident-management/kpis/sla-vs-slo-vs-sli) ## Cypto - [https://zh.wikipedia.org/wiki/%E6%88%B4%E5%85%8B%E6%96%AF%E7%89%B9%E6%8B%89%E7%AE%97%E6%B3%95](https://zh.wikipedia.org/wiki/%E6%88%B4%E5%85%8B%E6%96%AF%E7%89%B9%E6%8B%89%E7%AE%97%E6%B3%95) - [https://zh.wikipedia.org/wiki/%E5%85%8B%E9%B2%81%E6%96%AF%E5%85%8B%E5%B0%94%E6%BC%94%E7%AE%97%E6%B3%95](https://zh.wikipedia.org/wiki/%E5%85%8B%E9%B2%81%E6%96%AF%E5%85%8B%E5%B0%94%E6%BC%94%E7%AE%97%E6%B3%95) - [https://zh.wikipedia.org/wiki/%E6%97%85%E8%A1%8C%E6%8E%A8%E9%94%80%E5%91%98%E9%97%AE%E9%A2%98](https://zh.wikipedia.org/wiki/%E6%97%85%E8%A1%8C%E6%8E%A8%E9%94%80%E5%91%98%E9%97%AE%E9%A2%98) - [https://zh.wikipedia.org/wiki/A\*%E6%90%9C%E5%B0%8B%E6%BC%94%E7%AE%97%E6%B3%95](https://zh.wikipedia.org/wiki/A*%E6%90%9C%E5%B0%8B%E6%BC%94%E7%AE%97%E6%B3%95) - [https://en.wikipedia.org/wiki/RSA\_(cryptosystem)](https://en.wikipedia.org/wiki/RSA_\(cryptosystem\)) - [https://stackoverflow.com/questions/2329582/what-is-currently-the-most-secure-one-way-encryption-algorithm](https://stackoverflow.com/questions/2329582/what-is-currently-the-most-secure-one-way-encryption-algorithm) ## OE - [https://www.facebook.com/business/news/update-about-the-october-4th-outage](https://www.facebook.com/business/news/update-about-the-october-4th-outage) - [https://en.wikipedia.org/wiki/2021\_Facebook\_outage](https://en.wikipedia.org/wiki/2021_Facebook_outage) - [https://blog.cloudflare.com/cloudflare-outage-on-june-21-2022/](https://blog.cloudflare.com/cloudflare-outage-on-june-21-2022/) ============================================================ # hello world again URL: https://tanchao.xyz/posts/2021/07/06/hi-again/ Date: 2021-07-06 Last updated: 2021-07-06 Description: time flies as it always > time flies as it always Start organizing and rethinking on my learnings at Amazon and previous experience. Explore the gene of tech success. ============================================================ # Behavior Questions URL: https://tanchao.xyz/posts/2018/04/10/behavior-question/ Date: 2018-04-10 Last updated: 2018-04-10 Tags: interview Description: - Self introduction - Purpose: - Measure: - Answer: - Why choose this company? - Why this team? - Any target team? - Any target field? - Give me a p # Question Bank - Self introduction - Purpose: - Measure: - Answer: - Why choose this company? - Why this team? - Any target team? - Any target field? - Give me a project - Major contribution - How the Design works? - Most Challenge - Most Interesting - Conflict with other teams - Case: D team have tight resource to review my change. - Try to approach the contact people if they can offer a hand - Try to follow the standard procedure to seek resource - Make sure everyone involved aware of the conflict and status and next steps etc. - Keep engaging on timelines (if they are tight now, when they might have buffer for it) - Inform manager or owner to make sure they know the progress, and maybe they could help. - Conflict with managers - Delayed by dependency; How to avoid? - No clue project - Conflict with teammates - Case: A design task to resolve the problem, there are short-long-term options, V wants me to go for long term solutions so that next time when she implemented her change there would be existing channel for the data passing. I can do it but requires more work. (say, my solution is good for short or long, however, involving her solution for another task, change my design will help her a bit.) - understand if there is hard dependency (MUST or OPTIONAL) - understand the priority (Importance and Urgency) # Resources ## 04/10/2018 shadow interview with zchen@ - Why do you want to work in Amazon? - Project you major contributed for? - Hardest challenge? ``` I prefer open end questions and catch data points with focus, as the position requires Sr SDE, when he mentioned project he owned or challenged, I want to hear something interrupted with other teams or impact on managers, as a Sr SDE of Amazon, it requires impact among teams and senior managers. I also want to see his proactive impact on managers and projects not just do the task. ``` ## 12/12/2017 FB 面经 - 介绍一下你自己 - 最Challenge的project - 如何处理同事Conflict - 有没有同事或老板给你Critical comments, 之后如何处理 - 别人东西Delay怎么办 - Project一开始没方向该怎么办 - 有External Obstacle怎么处理 - 最有趣的Project - 想去什么组 - 为什么想加入FB ============================================================ # Coding Questions URL: https://tanchao.xyz/posts/2018/04/10/coding/ Date: 2018-04-10 Last updated: 2018-04-10 Tags: interview Description: - 2Sum - Core complexity: - Key idea: - Constraints and edge case: # Question Bank - 2Sum - Core complexity: - Key idea: - Constraints and edge case: # Records ## leetcode - Find All Duplicates in an Array: [https://shimo.im/docs/aIvSzcsJVXEcDMX1/](https://shimo.im/docs/aIvSzcsJVXEcDMX1/) # Resources - 04/11 ``` onsite:1. 给一堆users,和她们的上下车的时间,然后给出所有的乘车数目变化的时间点,扩展是有可能同一个user id,应该不同的人打开了app,乘车. 所以时间有overlap,如何handle 2. long polling, push, user based, geograph based and mixed hashing, pros and cons, if a rider is assigned a driver, and the server really got the ack, why the rider does not know he is assigned.... 这个问题最后回到的是rate limiting,要求写一个Mt 的rate limiter ,用circular buffer 3. behavior +turing code related brain storming 4. hiring mgr, project and behavior 5. Design a feature that the riders can share the trip with the followers ``` ============================================================ # System Design Questions URL: https://tanchao.xyz/posts/2018/04/10/system-design/ Date: 2018-04-10 Last updated: 2018-04-10 Tags: interview Description: - Voting system - Basic Problem: - Followups: - How to scale? Huge volume. - How to present realtime results? - Rule of valid vote change, say e # Question Bank - Voting system - Basic Problem: - Followups: - How to scale? Huge volume. - How to present realtime results? - Rule of valid vote change, say each viewer can only vote one candidate, last vote counts. - LRU Cache - Parking Lot # Resources ============================================================ # How to seek job? URL: https://tanchao.xyz/posts/2016/08/10/how-to-seek-job/ Date: 2016-08-10 Last updated: 2016-08-10 Tags: career Description: 以下内容转载自:Random Mumble,初衷是方便国内朋友浏览。 如有不便请与我联系删除,谢谢。 感谢原作者分享! # 关于找工作 以下内容转载自:[_**Random Mumble**_](http://randommumble.blogspot.com/),初衷是方便国内朋友浏览。 如有不便请与我联系删除,谢谢。 感谢原作者分享! 以及一些我现在(2016-08-10)的理解和建议({==黄底==}) 不知为何MD渲染和我想象的不一致,还是有道云笔记吧,看[这里](http://note.youdao.com/share/?id=9f205f59f0f0fb0c825730f81dfa37f9&type=note) ## BEGIN * * * * * * * * * ## 关于找工作(〇 前言) \== 此文原发于mitbbs的jobhunting版。我的原创,并非转载。 == 先声明一下,纯属个人经验,不负法律责任的啊 — 开玩笑了,当然不会故意误导的。会不会是象国内的某些记者一样,拿着不知道哪儿捡来的破烂当宝贝?有这个可能,但是可能性不大。至少不会是故意编瞎话骗人。 说起来是有不少经验/想法的,估计一次也说不完,想到哪儿说到哪儿吧。按老美的习惯,先给个提纲(agenda): 1. 简历 2. cover letter (对不起,实在不知道中文怎么说。丢人啊,邯郸学步的当代版) 3. 面试 4. 找工作期间(有点倒叙了。原因以后解释 — 怕挨砖)。 还是按照老美的习惯,讲正题前先跑题 — 背景知识(background). (谁在扔鸡蛋?在老美的地头混,不学老美的门路,怎么去和老美斗?) 俺的“理论”可是科班,去老美的一个帮助找工作(outplacement, career placement)的公司,认认真真学来的。当然了,学习班里什么样的人都有,教练教的要顾及多数人,很多和俺的工程师背景不适用,所以俺也就基本上是左耳进右耳出了。有些有印象的,还是会提一提的,毕竟不是所有人都是工程师。 ## 关于找工作(一 简历【之一】) 首先澄清一下,resume 和CV都是简历,名字不同,用处不同,写法也不一样。各位(特别是离开学校不太久的)先看一看自己的简历,是不是既可以当resume用,也可以当cv用?或者你根本分不清这两个有什么区别?如果答案是是的话,恭喜你,你找工作的第一个大障碍已经找到了。现在可以把你的简历扔到垃圾桶里了。 那么,resume和cv有什么区别?要总结出区别,挺不容易说清楚的。从用处上说吧,如果你要找工业界的工作,你需要resume; 如果找学校,国家实验室的科研工作,你需要cv。 那么如果是工业界的研发呢?多数情况下,你需要resume。(我其实想说绝大多数情况下的,怕有人鄙视我 — 你才见过多少世面?) 明确了这个,俺就讲一讲resume的写法吧。 resume第一个要求:短。一页纸最好,不过估计大家都是经验累累,成绩硕硕的,一页 纸大概不够。那就两页吧,不过主要内容要在第一页上。什么?两页还不够,您老人家实在是比俺还唐僧。那些自我评定留着到面试时和老美/老印昏天黑地地胡侃再用吧。 为什么要短?因为有调查,绝大多数的简历是先被人事部(Human Resource, HR)的审核。又有调查,HR平均只花20秒看一份简历。您老人家的简历那么长,就算有拿诺贝尔奖的实力,HR的人有时间看么?(且不说他/她能不能看懂)。更何况,他/她把你这么优秀的候选人(candidate)错误地毙掉了,他/她会有什么损失吗? 长度限制住了,字体呢?俺的一点小诀窍:如果你是用word之类的软件准备的resume ( 这点后面会讲), 先把字体换了。大家都用一样的sans serif,HR的人也会审美疲劳不是。用什么字体,有一个不二之选:==Garamond==. 为什么?先把你的换了,你就知道为什么了。 附带声明,Garamond (其实是一个修正版的)在苹果的地位相当于==MS sans serif== 在微软的地位。俺不是果轮,不过喜欢苹果的MacOS/OSX胜过喜欢微软的windows倒是事实。 其实还有一个技术原因:有一些公司用OCR(又邯郸学步了),Garamond一定会兼容,别的字体不一定。– 还是那个老问题,如果HR的人要多在你的简历上费工夫(而且不是一点半点–你能指望HR的人计算机玩的多溜?),你自己掂量一下你的机会吧。{==字体不兼容的话会转换为默认字体,所以不要使用自己喜欢的但是小众的字体,除非你准备发pdf版本==} 字体有了,大小呢?间距呢?==正文大小以11号为宜==,实在紧张用10号。再小了费眼,大 了吓人。一段的==标题(section titles)用12号==,你的==名字用14号==。间距是单行就行,但是段与段之间一定要空行,而且每段不要超过4行。同样的原则,不能累着HR的先生/小姐/叔叔/阿姨/。。。{==我个人的习惯是不空行,完全靠调节段落格式前后间距来负责空间美╮(╯\_╰)╭==} ## 关于找工作(一 简历【之二】) 要写resume,得用软件吧。基本上只有一个选择:office (word) 2003。有人会说了,那破玩意,早淘汰了。我用office 2007/2010, openoffice, latex, 等等等等,或者我保存为pdf。我的意见:word 是烂,但没办法。为什么? 1. 很多公司还在用office 2003,不是因为没钱,而是公司的软件通常都要落后一些。想想吧,一个公司至少几十台机器,赶潮流升级了,出了虫子(bug)不得把IT的人累死?office 2007的文件也许能用office 2003打开(得安装一个程序包),但你愿意不愿意用你的工作机会去试一试?有一点基本可以保证,如果HR的人打不开你的文件,哪怕坐他/她旁边的人能毫不费力的打开,你的机会也差不多到头了。 2. 很多公司存电子文件,只接受.doc文件。 3. 很多时候(特别是通过recruiter的时候),他们要修改一下你的简历的,最常见的是 删去你的通信方式。原因不一,比如避免公司绕过recruiter直接去和候选人谈(这样 recruiter就赚不到钱了), 或者公司的规定(避免地域歧视)。{==doc不会错的不过现在docx也没有什么问题毕竟又过去很多年了Windows都10了==} ## 关于找工作(一 简历 【之三】) 下面开始详细解释resume的写法。请参考(随机找来的)样板 — google image 搜索”resume sample”,第一个结果,[http://www.resume-resource.com/exleg3.html。](http://www.resume-resource.com/exleg3.html%E3%80%82) 我们只用格式,不用它的内容。 1. 名字: 14号字, 全大写,第一个字母大一些(不是你手动调大的,word里==格式选all capital==,你原来大写的字母会比原来是小写的个头大一些)。 如果你的名老美很难念(是念不出来,念得准不准没关系,你知道是找你的就行),可以加一个英文名,用引号括起来。比如,ZUXIE “SOCCER” QU。 加引号是告诉他们那部分在正式文件里是没有的,免得HR的人用你的”全名“去调查,调查出一个”查无此人“。 名字后面加不加头衔(PH.D., MBA, RN什么的),取决于要申请的位置有没有明确要求某一个学位。通常说起来,加不加都一般没什么大问题,但以不加更保险一些。 名字的下面(样板里地址的地方),如果你有绿卡/公民,可以写上(11号字, 斜体,可能需要bold)”US Permanent Resident” /“US Citizen”。当然如果您老人家已经把名字改了,就不必了。 (不是哪个学校有位中国人教授就给自己起了一个完全美式的名字?–以前看到的,细节不记得了。谁给考考古?) 2. 下一行,电话,地址,email: 11号字,照抄样板的格式就行。 注意”telephone”, ”address”, “email” 这些词完全不出现,因为谁也不会把[niuren@hotmail.com](mailto:niuren@hotmail.com)当成电话号码。 电话建议留8AM-6PM开机的手机。如果你的手机比较忙(朋友多,或者忙着谈恋爱),建议去搞一个prepaid的。个人推荐, 如果可以找到闲置的verizon的手机,所在地verizon的信号也好的话,买pagepluscellular的卡(号),价格便宜量又足。\[Edit Aug/2010: apparently there have been some changes that make my recommendations invalid. Please check this blog for (hopefully ) up-to-date recommendations. [http://blog.wenxuecity.com/myindex.php?blogID=46849](http://blog.wenxuecity.com/myindex.php?blogID=46849) \]强烈不建议买verizon或者ATT的prepaid (太贵)。 email建议用私人的(gmail之类)。==新申请一个专门用来找工作==比较好。你如果是在用gmail (web interface),可以设置自动去取别的新开的信箱的信,这样就不用换来换去了。 地址用家庭地址,强烈不建议用工作/学校的地址。如果不想列出具体的门牌号,可以去邮局租一个信箱,没多少钱的。和手机,email一样,专门用来找工作,比较容易管理。 3.下一行,一条贯穿文本宽度的线 ,单的双的都可以。怎么搞出来?google is your friend. {==连续输入三个-或者=如---然后敲回车看看==} ## 关于找工作(一 简历 【之四】) 最重要的一块来了,睡觉的同学醒一醒。 4. 下面是正文了。第一块: qualification,但是不要标题行(样板里的 “QUALIFICATION”)。 为什么?脱裤子放P,浪费宝贵的空间。更重要的是,HR的人要多看一行没用的东东。这一段怎么写?说难也难,说容易也容易,因为基本上是八股文。 有同学问了:objective一段哪儿去了?答案很简单,不需要。因为也是脱裤子放P的事(后面讲到cover letter的时候会讲如何放这个P。 cover letter会在resume的前面,所以resume就不需要再重复了。– 以老美的唐僧风格,这实在是难得。)有一个HR的 VP(老美)告诉我,有objective的简历,或者出自在校学生之手,或者是古董级的简历。不管是哪个,都反映了简历的作者对自己职业发展及其重要的文档都没下够工夫。”The objective section has been unnecessary for at least ten years. Having it in the resume does nothing more than leaving a somewhat negative impression.” 那么qualification这一块到底怎么写呢?给个样板(独家产品,转载请付版税): 第一句:先把招工广告上的职位(比如,senior nuclear engineer) 抄上。在前面加上“评价”自己的褒义词。什么褒义词?什么好听说什么,experienced (这个慎重,不是不好,而是因为后面还要经常用experience这个词,会“撞车”,读起来不顺), motived, diligent, proven, 等等, 自己网上找吧。然后, 后面加 with 100 years of experience in nuclear bomb making之类的自我吹嘘, 具体语言请参照老印的简历 – 瞧不起老印?人家老印绝对是这方面的专家。 细心的会注意到这不是一句话,只是一个短语。对了,要的就是短语。后面几句也是。 第二句,第三句,甚至第四句,全都差不多,注意和招工广告对应上。给个例子:excellent hands-on skills building an atomic bomb from dog poo. 要点有三:1. 要敢于给自已客观的,正确的,不谦虚的评价。怎么样才算合格?这么说吧,只要没说“地球离了我不转”都不算太过分。2.长度要合适,总共四行,可以少一行,不可以多。即, 每一句都是控制在短于一行或者一行多一点点的长度。排版是要两头对齐。3. 要敢于用demonstrated, proven, exceptional 此类的形容词。 从一定程度上讲,你能不能通过/混过HR这一关,一大半在这一段上面。你的目标是15秒之内把他/她忽悠晕。有一个简单的测试方法:找一个不太熟的人,最好也不懂你的专业,(朋友的朋友)让他/她看30秒你的简历,然后把简历收回来,开始问问题,看看他/她能对这一段的内容有多少印象。 如果招工广告上有非常详细的要求(软件啦\[office这样的大路货就算了\],仪器啦),可以跟上一个小列表(bullet list),三到四项。比如:50 years of solid experience operating dog-poop-scooping machines. 又有人要问了:你总提招工广告,岂不是每个广告的写一份???我没说一份简历打天下吧。每个广告一份简历看起来挺罗嗦的,其实没什么。你只要能捣鼓出第一份,剩下的照猫画虎就是了。 补充一点:关于评价自己:对学生而言,要强调well-trained, diligent/hard-working, proactive (不要直接用这个词,想办法表述出来你学习的风格不是老板指哪儿才打哪儿), 以及wide range of knowledge (举个例子吧,如果你学的是机械, 可以强调你还懂材料,电子,甚至物理,化学,当然这些要和你的本行相关)。有工作经验的人,要强调这些方面:hands-on (特别是如果你的背景偏理论和数值),motivated, customer-driven, result-driven, versatile, team-work, leadership(如果找比较高的位置 — technical leadership也是leadership)。 {==注意到区分对待!!!有没有工作经验和**不是**一份简历打天下==} ## 关于找工作(一 简历 【之五】) 5. 下一块:EXPERIENCE。只要这个词就好了,样板里的PROFESSIONAL EXPERIENCE有脱裤子放P之嫌。有不是应召做男朋友/女朋友/老公/老婆/女婿/媳妇,谁关心你的PERSONAL EXPERIENCE? 如果你是在校或者刚毕业的学生找工业界的工作,建议你把这一块放在EDUCATION的前面,除非你在学校里只上课,别的什么都没干。如果你已经有工作经验。。。没有商量的余地。 EXPERIENCE (还有后面的EDUCATION)要按时间==倒叙==(最近的经历在最前面)。格式可以照抄样板的。基本上是这个样: 职称(Nuclear Scientist), 11号字,斜体,黑体, 左对齐。 另起一行,左对齐,公司/学校, 镇子, 州。比如, ATOMIC DOGPOO INC, Dogtown, DG, 11号, 大小写照样板来。 同一行,右对齐,开始-结束。 比如, 1900-Present. 只列年份就可以。 有同学说了,俺的经验太牛,在一个公司被提升了5次,怎搞?答案:您的位置那么高了,还来听俺罗嗦,what’s wrong with you? –开玩笑的,别见怪。对你的情况,如果位置是类似的, 建议合并到一起。比如变成这样: Junior Nuclear Scientist (1900-1910), Senior Nuclear Scientist (1910 – 1950), Super-senior Nuclear Scientist (1950 – present). 之下的内容就有门道了,先留点悬念,请仔细研究样板里的EXPERIENCE有什么最大的特点? 答案是– 每一条都是以动词开始的。其实样板并不很好,更好的应该是以动词的过去时开始,因为现在时可以理解成工作任务的描述,不代表你一定做过。 用动词有什么意义?这得从简历的目的说起。公司看简历的目的是什么?一个非常非常重要的原因是看你过去做过什么。注意,关键词是“做过”, 不是“什么”。中国人习惯强调“什么”,因为做的怎么样是不言而喻的,谁愿意哪壶不开提哪壶啊?可是老美不一样,你不说自己做的好我怎么知道你做的好啊?(唐僧的传人)所以一定要强调”做过”(所以是过去时)。 另一个要点(样板里体现的不好),要==强调结果==, 因为公司找你是要解决问题赚钱的。你做得再漂亮,不解决实际问题也没用。至于怎么做的,在面试前基本上没人关心。(等你去工作以后,就更没有人关心了) 要点明确了,怎么做呢?和QUALIFICATION那段差不多,要用(老美的说法)“powerful keywords”。哪些算呢?developed, advanced, solved, improved, reduced (cost), organized, led。 那些不算呢?worked (废话,你拿了公司/学校的钱,当然要干活了), studied, served, collaborated, supported (除非你要找非常低的位置或者秘书之类的工作), contributed(基本没用)。有点概念了没有? 有同学反映了:我刚毕业没多久, 没什么好说的。其实工作过的很多人也一样(包括我),因为很多工作每天就是固定的程序 — 太新的东西不容易带来直接经济效益,而公司的第一目标是要赚钱的,所以稳定自然是第一位的了。我坚决反对无中生有(万一面试遇上明白人,你能拿到的工作也拿不到了),但是建议大家要学会从无聊的工作里找到闪光点。 对工作的人来说,这个工作给公司带来了什么效益(不一定是直接的金钱,当然如果是的话更好)。举个例子吧,也许你琢磨出来的小改进让一个零件的成本降低1毛钱(没什么吧),可是公司一年要生产1000万个,你就可以说reduced annual cost by $1Million(厉害不?),或者产量只有10个,可是原来的成本是4毛,你可是reduced cost of the critical part by 25% (那个零件到底是不是critical, 谁能核实?)。【 这里有一个不太诚实的招数(我学的),如果你有大概的印象/估计,凑一个偏大的数。因为牵扯到钱(商业秘密),具体数是没法核实的。而对你的简历而言,有实际数字绝对是很有说服力的。一点警告,别吹的过头,让人家揪着小辫子你就完蛋了。】试着从赞助你做那个项目的公司的管理层想一想,他们为什么愿意花这个钱?找到了这个原因,你也就知道该怎么写了。 {==请认真体会领悟贯彻本段==} 对还在学校/刚离开学校的人来说,好像又跑题了。我打包票:没有。学校里也是一样的,你老板能搞到钱,还是有原因的。什么?老板当初就是不知道怎么骗来钱的?那也没关系,去和老板聊聊,别太露骨的问问“如果那个项目成功了,会有什么样的应用?”是啊,项目还没完呢/已经给废了,可是你的工作不也推进了项目的进展吗?无论多么难看的工作,闪光点总是有的,就看你能不能发掘出来了。我见过的最牛的,是实验做了三年,试验了n种方法,没有一种成功。结果老哥(老美)写的是”comprehensively evaluated existing experimental techniques on … and demonstrated the necessity for developing technology in new directions”, 还被认为是”very impressive work”,拿到了工作。 另外一个问题:对学生而言,列什么项目?很简单,所有和专业相关的,只有不是那么课的学期论文,都可以列,哪怕是你只给老板帮忙了一个星期。为什么不列学期论文?原因是为未来的面试未雨绸缪:万一被问出来是学期论文,你想问你的人郁闷不郁闷?(既然问你,自然是对那个项目有兴趣了) 当然凡事都不是绝对的(impossible is nothing, 呵呵),如果你实在想列,也不是完全不能,只是要慎重,做好被穷追猛打的准备。学期论文的问题主要有两个:1.缺乏实际意义; 2. 为了应付工事。如果你能把这两点的回答准备好,尽管列。给你一点提示吧:如果论文来自于实际问题(比如,分析911世贸大楼倒掉的工程原因)或科研课题,要抓住这一点狠强调。如果是用来练手的题目,得好好琢磨琢磨怎么说怎么这么花费了远超过课程要求的精力去做的。 好了,现在去总结分析你过去若干年有多牛了吧。打开你的简历草稿,往多里列,目标:至少填满一个纸。什么?不是说简历最好一页吗?这么多哪放得下?不用担心,现在是草稿, 先列出来以后再根据需要筛选。 EXPERIENCE这一块是简历里最最重要的一部分,因为一个公司要了解你,差不多唯一的方法就是看你做过什么。这么说吧,能不能过recruiter/HR那一个基本上靠QUALIFICATION,而能不能过技术方面的第一关基本上靠EXPERIENCE。所以,EXPERIENCE 要占简历总长度的30-50%(甚至更长)。 ## 关于找工作(一 简历 【之六】) 6. 下一块:PATENTS。这一块不是必须的,因为多数人都没有专利,但是如果你有的话,把它提到前面来。为什么?一个字,钱。别忘了,公司找你是为了赚更多的钱的。你有专利,至少说明了几个事实:1. 你有创造力; 2. 你的创造力有经济意义。 要知道,申请专利是一个费时费钱的事,如果没有潜在的经济效益,公司是不会去费那事的。 有工作过的同学问了:Invention disclosure算不算?回答这个问题之前,我们先给不知道invention disclosure是什么东东的同学解释一下。所谓的invention disclosure, 通常是公司为了留下“原创”性的工作的法律依据,而要求职工提交给公司的律师的文件。一项发明/改进能不能申请专利,你说了不算,我说了也不算,得律师说了才算。所以很多公司都鼓励职工写invention disclosure,甚至把invention disclosure和业绩/奖金挂钩。对公司来说,invention disclosure变不成专利申请通常不会损失什么,可是如果漏掉了专利,可亏大发了。所以公司的政策常常是宁可错交3000,不可漏过一个。这种情况下,你说invention disclosure的意义大不大? 7. 再下一块:AWARDS。这下许多同学高兴了:这玩意,咱哥们多的是。抱歉,多数(比如奖学金什么的)恐怕没什么用。但是如果你有全国性的奖,哪怕是针对每个行业的,一定要列出来。简单的标准,如果奖项牵扯到多个学校/公司,基本上可以算。为什么?因为那说明你的成绩得到了同行的认可,不是一般的牛。所以如果有同学得过,比如说,美国化学会的最佳论文, 千万不要谦虚。 好了,容易让人郁闷的两块过去了,可以开讲每个人都得写的部分了。 7a. 再下一个:CERTIFICATION, 如果你有什么相关的认证的话。 ## 关于找工作(一 简历 【之七】) 8. 最常见(基本上每份简历里都有)也容易是最没用的部分来了:EDUCATION. 差不多没干招工广告的第一条都是关于学位要求的,而且HR的人在怎么忽略 你的简历,总要看一看你的出身是什么。不是俺搞出身论,牛校出来的人就是要占一些便宜,这是没办法的事。那为什么说这一部分容易是最没用的部分? 请您看看你的简历,是不是这样的? Ph.D, Web Posting, University of Nowhere, Some Town, SomeState, 2000 Advisor: Professor Post A. Lot Thesie/Dissertation: On How to Create 1,000,000 Posts in an hour 差不多? 你刚刚浪费了HR的给你的宝贵的20秒里的1/3.为什么说是浪费了?因为由于的信息只有第一行。剩下的部分对HR的人来说就是天书,对管技术的呢?也基本上是天书。这又为什么? 先说ADVISOR。测试:10秒钟,列举你所在一行的排前五位的大牛。有多少人能说出来?恐怕多数人都做不到吧。所以如果你的老板不是Albert Einstein这样的牛人+名人,你其实完全可以说你的老板是Professor Random Mumble, 效果是差不多的。什么?你的老板就是本行业的前五名的大牛?那么只有两种情况你要列出老板的名字:1. 你要去的公司做的东东刚好是你老板出名的领域(你还是得先搞清楚那个公司技术上把关的人和你老板不是对头 — 文人相轻的事不是只有中国才有); 2. 能影响是否招你的人是你老板的本人/fan/学生/哥们/朋友/小舅子(这个好像也不太安全)– 如果是这种情况,你也不需要靠resume去通关,有更有效的方法(以后再讲)。 再说论文:不客气的说,完全(100%)没有用处。ADVISOR至少还有可能因为name recognition给你帮点忙,论文的题目只能浪费所有人的时间。说的难听点,你的学位已经拿/骗(比如我)到手了,学位论文的历史使命也就结束了。 那么EDUCATION到底要写成什么样?有三个版本: 版本一(适用于有若干(>5)年经验的老油条): Ph.D. in Web Posting, 2005, University of Internet, Cybertown, Cyberstate M.S. in Web Posting, 2001, University of Internet, Cybertown, Cyberstate B.S. in Goofing Around, 2000, University of Nowhere, Notown, China 版本二(适用于有 < 5年经验的新鲜油条): Ph.D. in Web Posting, 2005, University of Internet, Cybertown, Cyberstate research was focused on developing new methods to create 1,000,000 posts in a day. M.S. in Web Posting, 2001, University of Internet, Cybertown, Cyberstate thesis work/research was focused on…. B.S. in Goofing Around, 2000, University of Nowhere, Notown, China concentration: playing video games all day long 版本三(适用于没有经验的生油条): Ph.D. in Web Posting, 2005, University of Internet, Cybertown, Cyberstate GPA= 4.0 research was focused on ….. responsible for maintaining the … equipment in the xxx Lab. (put a couple \[1- 3\] descriptions of your activities besides taking courses) M.S. in Web Posting, 2001, University of Internet, Cybertown, Cyberstate GPA= 3.9 thesis work/research was focused on…. responsible for maintaining the … equipment in the xxx Lab. (put a couple \[1- 3\] descriptions of your activities besides taking courses — do not resue what you mentioned already) B.S. in Goofing Around, 2000, University of Nowhere, City, China GPA= 0.1 concentration: playing video games all day long 格式注意: 1. 学位 (不包括专业)和年份是黑体; 2. 注意没有学校的zip和具体的地址; 3. 如果是中国的学校,不要列省/自治区; 4. GPA=xxx右对齐。 有同学提了:我读博士/硕士期间做的东西就不提了?要提, 但不是这儿,应该是在EXPERIENCE里(你的头衔是research assistant). ## 关于找工作(一 简历 【之八】) 到这儿,你的简历就差不多了。如果你有论文,可以加一小节 SELECTED PUBLICATIONS,列1到3篇, 最好是在比较牛的杂志上的。 不要有的部分:Objective(已经讲过了), Interests/Hobbies/etc (没人关心,而且与你的工作基本无关。唯一的例外是如果你是跑马拉松的, 想办法把这一条塞到什么地方去 — 公司里的人往往有家有业,没多少时间参加体育活动,所以最流行的锻炼方式是跑步。如果你是跑马拉松的,说好听的是反映了你这个人有毅力,实际的情况是遇上被共鸣的机会比较多。), references (所有人都是“available upon request”)。 草稿弄好了,下一步怎么办?存文件。把你的文件名命名为 ZUQUO-SOCCER-QU-SR-NUCLEAR-ENGR-ALQAEDA.DOC. 即, 你的名字-工作位置-公司名字。其中,公司名(Al Qaeda)是给你看的,剩下的是给HR准备的 — 设想一下,HR的计算机某个文件夹里有20个my resume.doc, 头大不大?他/她的头大了,拿谁出气? 然后,开始读。一个词一个词的读,坚决断绝拼写错,语法错,单复数错,时态错之类的小问题。自己读(每天吃饭前读一遍),发动所以能发动的人读(老婆/老公/女朋友/男朋友, 同学,朋友),最好能找到native speaker帮你读(可以贿赂顿饭什么的),但是不建议找不认识的人(因为不太会用心)。 然后,就是改。刚开始时改得面目全非是很正常的。总要有三五七八个(不是三千五百七十八)版本才会基本定型。然后就可以广而告之了。如何广而告之后面再讲。 关于找工作(一 简历 【之九】) 讲了这么多写resume的细节,有没有体会出最根本的指导思想是什么? 其实说出来很简单 — 当然对新毕业/还在校的同学来说,这有点难 –要给公司一个==雇你的理由==。算一算经济账吧,公司雇一个人(professional)的开支大概是所付工资的1.5倍(老美劳动统计局的数据,[http://www.bls.gov/news.release/ecec.t01.htm),如果你不能给公司赚回这么多钱,公司为什么要雇你?所以当你读你的resume的时候,这个问题要时时响在你的耳边:我过去的经历能不能说服他们我有足够的能力给公司带来好处?记住这儿的关键词是“==过去的经历==”–](http://www.bls.gov/news.release/ecec.t01.htm%EF%BC%89%EF%BC%8C%E5%A6%82%E6%9E%9C%E4%BD%A0%E4%B8%8D%E8%83%BD%E7%BB%99%E5%85%AC%E5%8F%B8%E8%B5%9A%E5%9B%9E%E8%BF%99%E4%B9%88%E5%A4%9A%E9%92%B1%EF%BC%8C%E5%85%AC%E5%8F%B8%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E9%9B%87%E4%BD%A0%EF%BC%9F%E6%89%80%E4%BB%A5%E5%BD%93%E4%BD%A0%E8%AF%BB%E4%BD%A0%E7%9A%84resume%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E8%A6%81%E6%97%B6%E6%97%B6%E5%93%8D%E5%9C%A8%E4%BD%A0%E7%9A%84%E8%80%B3%E8%BE%B9%EF%BC%9A%E6%88%91%E8%BF%87%E5%8E%BB%E7%9A%84%E7%BB%8F%E5%8E%86%E8%83%BD%E4%B8%8D%E8%83%BD%E8%AF%B4%E6%9C%8D%E4%BB%96%E4%BB%AC%E6%88%91%E6%9C%89%E8%B6%B3%E5%A4%9F%E7%9A%84%E8%83%BD%E5%8A%9B%E7%BB%99%E5%85%AC%E5%8F%B8%E5%B8%A6%E6%9D%A5%E5%A5%BD%E5%A4%84%EF%BC%9F%E8%AE%B0%E4%BD%8F%E8%BF%99%E5%84%BF%E7%9A%84%E5%85%B3%E9%94%AE%E8%AF%8D%E6%98%AF%E2%80%9C==%E8%BF%87%E5%8E%BB%E7%9A%84%E7%BB%8F%E5%8E%86==%E2%80%9D%E2%80%93) 公司不是NBA, 靠potential是找不到工作的。 这一点搞清楚,写cv也就不是很难了。想一想,看cv的人需要什么样的人? 当然是能做科研的。所以和科研相关的东西就需要突出了(你如果要找工业界的工作,强调科研很容易把别人吓着)。具体表现在哪儿呢?(我所接触的科研类的工作,基本上都要求有博士学位,所以我的看法就限于那个范围了) 1. 博士论文做的是什么?老板是谁?这个有点不合理,但是没办法:如果你的老板牛/人气广,你的机会要好得多。 2. 发了什么论文?什么样的杂志?被引用多少次? 这两条决定了你的cv和resume要有本质的不同:resume里education和publication是尽量精简,而cv里这两块要详细。 那么如果你的“出身”不是很好怎么办?很遗憾,这个世界不公平,不过你的机会也不是没有。因为多数情况下,博士之后的科研与博士论文不是完全一样的。所以出身固然重要,更重要的是你所受的做科研的训练。怎么在CV中体现出你受了良好的训练?一个重要的部分是experience。 这儿,和resume 又不一样了:resume要强调解决实际问题,强调结果; cv要强调的是怎么做的,具体说就是你琢磨出了什么新鲜独门的招数。说到招数,给个开武馆的类别吧:工业界要找到相对于武馆的工作人员,打群架是要好用;科研圈子要找到是武馆的正式弟子,基本套路要熟,最有吸引力的还是有开创新局面能力的好苗子。(日月神教这样的不算数) 具体的细节就不讲了(我也讲不好 –经历有限)。 一个小建议:如果你还和你的老板/导师有联系,建议你找机会(一起喝个咖啡什么的)和老板好好谈一谈,一个重要的方面是让老板不客气地评价一下你的学术水平,毕竟你老板见过的世面比你多多了。知道了自己的弱项,现补可能来不及了,但是你在面谈的时候可以有意识的避开那些方面–能读出Ph.D.的,学术上都是有两把刷子的,可别哪壶不开提哪壶。 最后明确一下工业界/科研圈子的分类(好象应该在最前面):通常说起来,学校(如果你去做教授/postdoc/research scientist), 国家实验室基本上都是科研圈子,工业界大多数是工业界(废话)/非学术圈子。有几个注意的: 1. 大公司的研发不一定是科研圈子(因公司而异),甚至有的公司的研发的不同部门定位都不一样。这个没有一刀切的标准,只有你自己想办法去打听了(有一个不一定管用的方法:看他们的论文多少。说不一定管用是因为很多公司【有可能是大多数】是基本不允许发文章的 –牵涉到公司的商业机密)。 2.好象药厂的研发部门普遍都是要有postdoc经历的。我道听途说,不负法律责任啊。 3.有些公司(比如consulting公司)看起来不起眼,research其实是很牛的。如果你申请他们的工作,做好被问的稀里哗啦的准备(因为那儿的人虽然未必是牛人,但在他/她所做的一块去很有可能是非常的牛,基本上对没在那个题目上下过大工夫/有过相当的经验的人是见一个灭一个)。 罗里八嗦写了这么长,希望能对你准备简历有一点帮助。基于我的经验,你去outplacement/career placement公司培训,或者找专业写手,他们能给你的也就这么多了。所以如果你原来有这方面的预算,我有一个小小的建议:把预算的90%留给你自己,剩下的10%拿去帮助需要帮助的人。如果你现在是处于骑驴找马的阶段,建议把比例变成75%/25%. 如果你想不出去帮助谁,我还有两个建议:1. 海外中国教育基金会(Overseas China Education Foundation), [http://www.ocef.org](http://www.ocef.org); 2.帮助陈伟宁的遗孀和小女儿([http://chenweining.org)。声明:我不是清华/北大的,也不认识她们。](http://chenweining.org%EF%BC%89%E3%80%82%E5%A3%B0%E6%98%8E%EF%BC%9A%E6%88%91%E4%B8%8D%E6%98%AF%E6%B8%85%E5%8D%8E/%E5%8C%97%E5%A4%A7%E7%9A%84%EF%BC%8C%E4%B9%9F%E4%B8%8D%E8%AE%A4%E8%AF%86%E5%A5%B9%E4%BB%AC%E3%80%82) {==虽然无须donation,请你常怀感恩之心,若能乐于助人更佳==} ## 关于找工作(二 Cover Letter) 准备好了简历,下一个文档就是cover letter了。其实对衡量你是否是一个好的候选人来说,cover letter的作用==几乎是零==(很多情况下主管技术工作的人或者雇人经理根本见不到cover letter)。那么为什么还要准备cover letter呢?答案和简历的qualification那一段差不多 — 主要目的是帮助你顺利度过/混过recruiter/HR这一关。{==这是大实话 所以内推优先 social network优先==} 写cover letter也是有固定的套路的,而且这个套路更简单(一两个字)。不过俺已经吊了大家这么长时间的胃口了,就再多吊一会儿吧。 先说说recruiter/HR是怎么衡量一个候选人的。简历里的qualification毋庸置疑是非常非常重要的,但是qualification其实还不是他们/她们的“第一印象”。第一印象是什么?就是cover letter了。这么说吧, 找工作就和(通过介绍人)找对象差不多,小伙/姑娘再好,介绍人那儿没有好印象,要再进一步也不容易吧?那么怎么留下一个好印象呢?差不多唯一的办法就是想办法减轻介绍人的工作负担了。所以俺的罗嗦一下recruiter/HR是怎么衡量一个申请人会不会的。 有一点基本可以确定,recruiter/HR对你的专业所知非常有限。可是他们/她们 也要工作不是?怎么办呢?很简单,把招工广告拿过来,把简历拿来,对照招人的要求一二三四五六七, 一条条的比较,符合一条打一个勾,最后数有多少个勾–勾越多的越好。有同学说了,你不是说他们只花20秒吗?哪有时间来一条条地过?没错,他们是没时间。大多数人根本过不了前20秒这一关,所以也不会被打勾了。那么为什么要在讲cover letter的时候提这个呢?还是一个原因:减轻recruiter/HR的工作负担。试想如果你已经替他/她老人家做了这项工作了,他/她对你的印象也会好很多不是。再说了,有些要求你马马虎虎可以算达到,也可以算没达到,你先入为主地说达到了,也多少占一些便宜吧。 好了,进入正题:cover letter 怎么写?正式书信的格式不用我提了吧(如果不清楚,去随便那个图书馆找本书信格式的书看看)。cover letter的主体有一个模式(就是我说的一两个字的样板):Q-letter。现在你知道了,网上随便google吧。我给一个我用的版本: 第一段:I am writing in response to your recent advertisement for a Nuclear Scientist (用招工广告里的title) (position opening # 12345) on your website/monster.com/careerbuilder.com/wherever(选一个,或者类似的). Based on my experience/background(选一个,或者排列组合,不要用“/”), I believe I am a good/strong candidate for the position. 简单不简单?别的什么话都不需要说,没用。 第二段:查入一个三列,4-6行的表格。左面一列(第一列), 题头(11号字,全大写, 或者变黑体)YOUR NEEDS; 右边一列(第三列), 题头MY QUALIFICATION. 第二列空着,不用。 下一行开始,左面一列,抄招工广告里的具体要求,基本上是copy&paste;右边一列,对应的你的资历。 这么 列上3-5条就可以了,再多了recruiter/HR也没空看。 然后,把表格的线/框全去掉,修改字体(表格里的字体常常和文本里的不一样),对齐,表格的宽度(总宽度比正文的宽度稍小,第二列用来调节左面和右面的距离)/高度,让这个表格看不大出来是一个表格。 第三段:Thank you for your considerations. If you would like to discuss further about my qualifications, please do not hesitate to contact me via email at (把简历里的email地址抄过来) or via telephone at 123-1234-567 (知道为什么前面建议搞一个prepaid的手机专物专用了吧?)。I look forward to talking with you. 然后, Sincerely, 空三四行(签名用),敲上你的名字(和简历里的要一致)。 有了这个样板,申请每个位置时把列表里的内容改一改就差不多了。(简历也要相应的改一下) 下一步,把cover letter和简历合成一个文件(不是压缩成一个文件啊),即第一页是cover letter, 第二(三)页是简历。用简历的文件名(参见前面讲过的文件命名方案)。 都弄好了,就可以email给recruiter了。Email很简单: Dear Mr/Ms xxx, I am writing … (把cover letter的第一句话抄上). Attached please find the cover letter and my resume. Thank you. Job Hunter 下一步,就是等鱼上钩了。 学习班里教的:cover letter里最后一句和recruiter约一个时间电话联系 I look forward to talking with you over the phone this coming Friday (大概两三天后吧)between 10 and 11 AM. 我个人不喜欢这样做,一是觉得有些唐突(如果recruiter刚好那时候忙,你这不是添乱吗?), 再者感觉没必要,反正他/她给你的时间就是20秒,你或者过关,或者不过关,有什么好废话的。如果你过关了,他/她自然会和你联系;如果你不过关,再去罗里八嗦,第一未必会改变他/她的想法,第二搞不好你就此被打入冷宫(recruiter一定会再有类似的工作机会的),那可亏大发了。 ## 关于找工作(二1/2 简历/cover letter的补充说明) 前面详详细细地解释了简历和cover letter怎么写会对HR/recruiter的喜好,据说应该是有效的(俺去的那个outplacement 公司大大小小有百十号人,如果教的东东不管用,要维持下去大概也不容易吧?)。当然不管用的时候也是有的,比如公司根本不用recruiter。(俺做hiring manager的时候公司里的HR只负责把简历输入到数据库里,俺得一个一个看。虽然不至于每个只用20秒,但一个小时看个四五十是没有问题的。)那种情况下能不能过关主要靠申请人的实际经验了。可是(1)作为申请人你是无法预知你会遇到这种情况的; (2)即使是hiring manager直接看,读起来容易些也不会有副作用,所以我的建议是尽量照着模板来。也许刚开始把自己的简历改成模板的样子比较费劲,但俺的经验是后面的修改就轻松多了。 当然俺的经验毕竟有限,所以如果您有不同的意见,欢迎评论/分享。 {==俺想开发一个软件帮助这些可怜的HR分析简历,你们觉得咋样==} ## 关于找工作(二3/4 常见问题FAQ) \== 需要的话,这个帖子会不断更新 == Q:这些东东可靠不可靠/管用不管用?是不是楼主在闭门造车? A: 管用不管用要你自己去试。俺的感觉还是有帮助的。大多数内容是基于俺在一个叫Right Management的公司听的课总结/抄袭下来的。如果你感兴趣,可以去他们的网站看一看[http://www.right.com。据他们自己说他们是北美同类公司里最大的。俺感觉他们教的东东基本上是靠谱的,但是考虑到去听课的人什么背景都有,有些东西不是很适用,所以俺根据他们讲的主题思想发挥了一下(多数发挥都和他们的专业人士讨论过)。举个例子吧:在experience里,他们讲的要==强调结果==,举的例子是marketing方面,开发了什么什么方案拓展了多大多大的市场。对做技术的人来说,俺就给发挥成解决了什么样什么样的问题了(最好还有导致了多少多少的额外利润/生产率提高)。](http://www.right.com%E3%80%82%E6%8D%AE%E4%BB%96%E4%BB%AC%E8%87%AA%E5%B7%B1%E8%AF%B4%E4%BB%96%E4%BB%AC%E6%98%AF%E5%8C%97%E7%BE%8E%E5%90%8C%E7%B1%BB%E5%85%AC%E5%8F%B8%E9%87%8C%E6%9C%80%E5%A4%A7%E7%9A%84%E3%80%82%E4%BF%BA%E6%84%9F%E8%A7%89%E4%BB%96%E4%BB%AC%E6%95%99%E7%9A%84%E4%B8%9C%E4%B8%9C%E5%9F%BA%E6%9C%AC%E4%B8%8A%E6%98%AF%E9%9D%A0%E8%B0%B1%E7%9A%84%EF%BC%8C%E4%BD%86%E6%98%AF%E8%80%83%E8%99%91%E5%88%B0%E5%8E%BB%E5%90%AC%E8%AF%BE%E7%9A%84%E4%BA%BA%E4%BB%80%E4%B9%88%E8%83%8C%E6%99%AF%E9%83%BD%E6%9C%89%EF%BC%8C%E6%9C%89%E4%BA%9B%E4%B8%9C%E8%A5%BF%E4%B8%8D%E6%98%AF%E5%BE%88%E9%80%82%E7%94%A8%EF%BC%8C%E6%89%80%E4%BB%A5%E4%BF%BA%E6%A0%B9%E6%8D%AE%E4%BB%96%E4%BB%AC%E8%AE%B2%E7%9A%84%E4%B8%BB%E9%A2%98%E6%80%9D%E6%83%B3%E5%8F%91%E6%8C%A5%E4%BA%86%E4%B8%80%E4%B8%8B%EF%BC%88%E5%A4%9A%E6%95%B0%E5%8F%91%E6%8C%A5%E9%83%BD%E5%92%8C%E4%BB%96%E4%BB%AC%E7%9A%84%E4%B8%93%E4%B8%9A%E4%BA%BA%E5%A3%AB%E8%AE%A8%E8%AE%BA%E8%BF%87%EF%BC%89%E3%80%82%E4%B8%BE%E4%B8%AA%E4%BE%8B%E5%AD%90%E5%90%A7%EF%BC%9A%E5%9C%A8experience%E9%87%8C%EF%BC%8C%E4%BB%96%E4%BB%AC%E8%AE%B2%E7%9A%84%E8%A6%81==%E5%BC%BA%E8%B0%83%E7%BB%93%E6%9E%9C==%EF%BC%8C%E4%B8%BE%E7%9A%84%E4%BE%8B%E5%AD%90%E6%98%AFmarketing%E6%96%B9%E9%9D%A2%EF%BC%8C%E5%BC%80%E5%8F%91%E4%BA%86%E4%BB%80%E4%B9%88%E4%BB%80%E4%B9%88%E6%96%B9%E6%A1%88%E6%8B%93%E5%B1%95%E4%BA%86%E5%A4%9A%E5%A4%A7%E5%A4%9A%E5%A4%A7%E7%9A%84%E5%B8%82%E5%9C%BA%E3%80%82%E5%AF%B9%E5%81%9A%E6%8A%80%E6%9C%AF%E7%9A%84%E4%BA%BA%E6%9D%A5%E8%AF%B4%EF%BC%8C%E4%BF%BA%E5%B0%B1%E7%BB%99%E5%8F%91%E6%8C%A5%E6%88%90%E8%A7%A3%E5%86%B3%E4%BA%86%E4%BB%80%E4%B9%88%E6%A0%B7%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%E9%97%AE%E9%A2%98%E4%BA%86%EF%BC%88%E6%9C%80%E5%A5%BD%E8%BF%98%E6%9C%89%E5%AF%BC%E8%87%B4%E4%BA%86%E5%A4%9A%E5%B0%91%E5%A4%9A%E5%B0%91%E7%9A%84%E9%A2%9D%E5%A4%96%E5%88%A9%E6%B6%A6/%E7%94%9F%E4%BA%A7%E7%8E%87%E6%8F%90%E9%AB%98%EF%BC%89%E3%80%82) Q: 这些信息对非工程师有用吗? A: 应该是有用的。象我提起过的,我的本行是工程,所以只能提一些我觉得合理的观点。至于这些观点是不是最好?俺不知道,也不可能知道。俺费了牛劲解释为什么的原因就是希望你能触类旁通,把自己的优势放到招人的人感觉舒服的地方。 Q: 我就没见过一页的简历。。。 A: 同意你的观点。我也很少见一页的简历(特别是当申请人有研究生学位的时候)。事实上, 我的简历也是2页,但是主要的内容(qualification 和 experience 【俺的工作历史比较长,做过的东西跨度也比较大】)都在第一页上,第二页其实只要一半多一点的样子,都是不得不列的东东(education, patents, 等等)。俺的recruiter说他曾经想帮我压缩到一页,可是实在是放不下。 所以俺的建议是一页最好,两页也凑合。也许有的行业惯例是长篇大论,但至少俺做招人经理的时候是没耐心看长篇大论的(其实我基本上只看qualification 和experience,大概靠谱了才去看education什么的) Q: 我有几十篇论文,怎么列? A: 俺曾经负责招过研发工程师(R&D engineer, research scientist),也负责招过“普通”的工程师(比如application engineer)。俺的经验是文章太多未必是好事,因为有时会有先入为主的印象:做科研太牛的人转型到工业界比较吃力。当然凡事不能一概而论,你如果是申请去要拼技术的地方(比如大药厂的研发,石油公司的研发,一部分小的consulting firm),论文多应该不是坏事。俺的建议是宁缺勿滥,牛杂志上的要列,很一般的杂志上的和会议论文就不要列了(因为很多会议论文是可以随便发的,不需要经过peer review的过程,所以容易给人一个错误的印象:这个人没有多少像样的东西,靠发会议论文凑数混学位)。当然,如果你所在的行业对会议论文要求也是很严(是整个行业,不是某一个会议),又另当别论。 Q:你能不能把你的简历贴出来给大家看看? A:抱歉,我的经历有一些相当特殊的东西(比如在某年做某方面的东西),即使把细节略去,同行也基本上能猜出我是谁,所以我很不倾向于把简历(即使是修改过的)贴出来。 Q:你能不能帮我改一下简历? A:再次抱歉,原则上俺不能。主要原因是俺的空余时间非常不固定,没法保证时间/质量。以后也许会考虑适当地帮一下。但是即使是帮的话,数量也不会大。 ## 关于找工作(三 广而告之【之一】) 简历准备好了,下一步就是想办法把自己“卖” 出去了。可是怎么“卖”呢? 中国人有句老话:“酒香不怕巷子深”,又有“敏于行,慎于言”,可惜在老美这儿统统行不通(好象在中国也行不通)。从某种意义上讲,要有效地推销自己,必须得把自己“广而告之” — 你想想, 如果招工的人根本不知道世上还有你这么一个人,机会能到你的头上吗? 以俺的经验,找工作大概有三条路,一条条的讲吧。 第一条路:最简单的方法,通过网络找。这主要是两件事。1. 挂简历; 2. 看广告。 先说挂简历。建议把你的简历放到两个大的网站:monster.com 和 careerbuilder.com。这两个网站基本上是属于“通用型”网站,recruiter基本上都会去看一看的。用什么格式的简历呢?pdf版或者word版。俺倾向于pdf版,因为有的网站太“聪明”,会把你的word文件的格式弄乱。除了这两个网站,你可以放到一些比较“专门”的网站,比如你如果是做计算机相关的,还可以放到dice.com上。简历挂上去之后,这一部分工作就基本算结束了。你要做的只剩下等鱼儿自己上钩了。 稍微跑题一下:建议不要把简历放到太多的网站山。因为一旦你把简历挂到网站上,你的简历基本上就是公共信息了,recruiter能看到,伪recruiter也能看到,而且伪recruiter会不屈不挠地试图说服你。怎么鉴别伪recruiter?俺也没办法。基本上靠直觉吧,如果有什么来的太简单(比如说让你直接去on-site interview什么的 — 不是没有,很少),多留点心吧。一点小经验,如果你的专业与保险业没有什么关系,那些邀请你去interview的保险公司(的分支/代理), 比如比较臭名昭著的metlife和aflec, 基本上是逗你玩的。他们会说“我们有很多很成功的雇员和你一样是工程背景,。。。”什么的,好象你可以一步迈入finance挣大钱了。事实是什么呢?你确实会很容易那到工作,但也仅此而已。固定的工资基本上是没有的,搞不好你还得自己掏培训费,自己买工作用品等等。高收入有没有?当然有,只有你一个月卖出多少份保险。 2.看广告。现在网络这么发达,好多以前几乎不可能得到的信息,都可以很容易的找到了。招工信息也是这样。俺的建议是每天拿出0.5-1个小时,在网上看有什么新的工作机会。一点小窍门:你不一定要去monster啊,careerbuilder啊,yahoo hotjobs啊,dice啊什么的一遍又一遍的搜索. 现在有很多“检索”网站,提供“一站式”服务,即你只要去一个网站,他们可以替你搜索若干网站。俺用的是indeed.com, 基本上可以包括绝大部分工作信息,每天把最多七八页招工信息列表看一看,也就是半个小时的事。另外一个类似网站是simplyhired.com。大同小异。 说到网络,俺有一些小的经验: 1. 搜索的关键词覆盖的范围越宽越好。的确,会有很多不着调的搜索结果,可是也会有很多你容易漏掉的结果会出来。举个例子吧,如果你做的是机械控制, 只搜索"mechanical"会比搜索“mechanical & control” 得到多的多的结果(当然也包括不太着调的,比如修房子的mechanical engineer)。 2. 关于indeed.com的小tips: (1) 不要轻信indeed给出的招工广告的“年龄”,因为indeed有时候(比较经常)会把很古老的招工广告翻出来当成新的。所以最好再用google查一下那个具体的广告,有时你会发现那个广告已经在那儿好几个月了。 (2) indeed上的工资水平过滤(左面的面板)基本上可以忽略,很多数时候不着调。 3. 提防利用找工作的人的心态赚黑心钱的公司。比如有一个网站叫6figurejobs.com(他们还有很多别的域名), 建议你躲着一点。如果你不幸在他们的网站上注册了,他们会不停的骚扰你,甚至会给你提供一些免费的服务(好象有一本书,还有免费的resume review), 然后会和你电话约谈,给你一个去一个号称花了几百万研究出来的什么找工作的网站(忘了叫什么名字了)的帐号,其实目的就是吓唬你,让你和他们签约,让他们帮你找工作。签约费据说在七八千的量级(你付给他们),而且绝对没有“不满意退款”一说。类似的公司还有很多。所以如果有公司联系你,你要做的第一件事是去google公司的名字,看看他们到底是干什么的。第二件事比第一件重要的多(因为6figurejobs.com网站看起来挺正式),去google 公司名字+spam,你会发现你不是第一个他们试图想骗的人。 4. 有一个网站叫jobfox.com。 这个网站说起来还不能算黑心网站,但是他们的所谓的"smarter approach"基本上是胡言乱语,实在没必要在这个网站浪费时间。 5. 网上有很多专业的简历修改服务,收费几十到几百不等。俺个人的建议是没有必要用他们的服务。有几个更有效的方法。(1)如果你还在学校的话,可以去学校的career center/career office寻求帮助。那儿的人多少都是受过一些训练的,有些还本身就是专业写手,他们应该可以给你一些建议; (2)去图书馆找关于写简历的书照猫画虎; (3)\[比较无耻的自我宣传\] 看俺博客里的经验。这些经验是俺第一手的积累。如果说专业写手/书上写的是武术套路的话,俺的就是军体拳,虽然不太好看,管用还是挺管用的。 ## 关于找工作(三 广而告之【之二】) 找工作的第二条路:recruiter。recruiter, 也就是常说的head hunter, 是专门的以帮公司招人为生的人/公司。recruiter 大概有两类:1. (通常是比较大的公司)他们常常和一些公司有合同,是那些公司的exclusive recruiter。也就是说,如果那个公司要通过recruiter招人,他们必须通过这家公司。这样的好处是什么呢?如果一个公司每年招的人比较多,通过签一个exclusive recruiter, 他们通常只要付一个固定的费用(有时会根据招人的数目稍做调整),这样往往比雇用一批non-exclusive要省钱。2. non-exclusive recruiters。简单的说,招人的公司把招人信息放出去,一堆recruiter帮他们招人, 谁找到了谁拿commission。 明白了这个区别,对“recruiter为什么问我申请过这个位置没有?”的答案应该很清楚了吧—对他们来说,如果你已经被毙过,他们就没必要浪费时间了。而对你来说,等于间接地告诉了你他们不是exclusive的(他们有可能是别的公司的exclusive recruiter)。 如果有recruiter和你联系,你该怎么办呢?第一,约一个时间电话里细谈(如果是recruiter直接打电话给你,让他们把工作位置的信息email给你,同时找个借口\[现在不方便说话什么的\]另外约时间)。问什么?因为你需要做第二步的工作:调查和工作位置相关的背景内容,比如什么公司,公司的主要业务是什么,要找的是干什么的人。记住,打有准备之仗会大大增加你成功的几率。然后就是和recruiter的电话了。 电话里你该做的第一件事就是在开始的“how are you doing?”之类的废话之后,想办法(比如“thank you for your interest. Before we start, can I ask you a question?“)问第一个问题:“are you an exclusive recruiter for them?” 因为答案会给你一些线索。比如,如果他们是exclusive recruiter, 你基本上可以确定是招人的公司考虑的有限的几个人之一,而如果他们不是exclusive recruiter, 你有可能只是一大堆潜在候选人中的一个。另外,exclusive recruiter通常对招人公司很了解,甚至直接认识hiring manager, 所以他们会(只要你去问)告诉你面试要注意什么,面试人都有什么样的背景, 等等有用的信息。 不管是不是exclusive recruiter, 对找工作的你来说都是免费的服务(如果有向你要钱的,比如6figurejobs.com这样的,躲着点),而且他们在绝大多数情况下会极力帮助你的(比如帮你改简历,准备面试)。原因很简单,只有你成功了,他们才有钱赚— 对non-exclusive recruiter来说,成功一个拿一个的commission (顺便说一句,这个commission可不是小数目,行业的标准据说是所招的人的两个月的工资 — 不是被招的人出, 而是招人的公司出); 对exclusive recruiter来说,成功一个剩下的工作量就少一个。 俺个人对和recruiter的谈的态度是实事求是,有一说一,原因在“面试”一节里。 如果recruiter对你比较满意,他们会去和公司谈(他们会告诉你他/她下一步的计划),你基本上可以开始着手准备hiring manager的电话interview了。这个电话interview基本上是板上钉钉的,因为不需要花公司什么钱。— 俗不俗?凡事都是以钱来衡量的。 那么怎么找recruiter呢?等他们自己上钩是一个办法。还有一个办法是靠别人推荐。再有一个办法是半主动出击:如果招工广告是列出了让你联系的人的名字,google他的公司地址,然后在cover letter里的收信人一块里直接用他/她的名字/地址。这实际上是一点心理学的小花招,据说这样会使收信人中文感觉比较重要。心情好一些,就会愿意帮忙一些。那么如果没有联系人的名字怎么办?还是心理学的小花招。cover letter的题头(就是dear xxx一行)写dear hiring executive。当然收你的信的人一般也就是个打工仔,可是被人尊称为executive还是挺爽的不是? ## 关于找工作(三 广而告之【之三】) 找工作的第三条路:==关系网==。俺个人的感觉,这是==**最**\==有效的方法。因为如果有“内线”,你成功的几率大大的大大的(不是俺输重复了)增加了。另外很多情况下,你的“内线”可以帮你探听一些内部消息,这些内部消息可是无价之宝吧。 那么怎么找内线呢?首先,如果你要找工作,除非你是在骑驴找马,不能悄没声地找。先给你的朋友,哥们,姐们发一封email:“兄弟打算找工作了,简历在附件里,你们谁知道合适的机会拉兄弟一把啊”。也许你会问,某某朋友没在工作,这个email就免了吧。俺的答案是,发封email又不花钱(网络真是好啊,寄封信还得四毛多呢),您老人家省什么省?朋友不工作, 你就知道朋友的朋友(的朋友)也不工作?有的时候,工作机会会“莫名其妙”地出来。给你们讲一个真实的例子吧。俺的一个朋友,悄没声地找了小半年,也没什么动静。后来老哥无意中和平时一起打网球的一个人(A) 提起,当时也没有什么动静。A去教会,和B(我的朋友不认识B)闲聊是提起来,B说,“唉,好像我老婆公司在招人,我给问问吧。” B的老婆是做会计的,按理说也不着调(俺的朋友是做计算机的)。可是小公司里就那么多中国人,随便问了问,结果真有一个组在打算招人。于是大概两三个星期后,我的那个朋友去面试了,然后拿到了Offer。最绝的是,那个招人信息根本就没公开过。这个例子也许有点不可思议,可是很多事情就是不可思议的。你如果不去试一下,就是有不可思议的事情也轮不到你的头上啊。 第二个办法:如果你还在学校的话,或者离开学校没多久的话,并且还你的老板/导师的关系还可以,去骚扰你的老板/导师。他/她应该会有一些关系(肯定比你的多)。虽然他/她不一定会直接帮你,你总可以虚心地请教一下“去什么行业比较合适?”吧?他给你的建议往往是他有熟人的行业。这样即使他/她不直接帮你,保不准你要申请的位置的hiring manager是知道他呢。当然如果老板肯帮忙(很多老板都愿意帮忙的,有学生毕业也是衡量教授的工作的一个方面),事情就好办多了。特别是如果他/她愿意帮你联系他/她以前的学生,你的便宜可占大了— 至少对俺来说,如果俺的老板发话说如果有机会帮帮忙,俺一定会大大的上心的。 第三个办法:linkedin。 你有没有linkedin的帐号?没有的话,赶紧去申请一个,然后把你认识的人统统加进去。linkedin的最大的好处是你可以看到某个人是你的第几层关系网上的 – 朋友(contact)是第一层,朋友的朋友是第二层,朋友的朋友的朋友是第三层。我不记得在哪儿看过,在这个世界上,任何两个人之间的关系网都不超过四(五,六,不记得具体是几了,总之是一个不大的数)层,也就是说从你开始,你认识的人的n(n 不大)次方可以包括世界上任何一个人。这个信息有什么用呢?如果你想申请某个公司的位置,而公司要求你直接到网站去投简历,那样的话你的几率基本上是和买彩票差不多(除非你的简历一下子把他们镇住)。这时候你就可以去linkedin看看,有没有那个公司有没有什么人是在你的关系网里。如果有,你会看到你们之间的联系(你的第一/二层关系网上的朋友)是谁,找你的朋友, 请他/她帮忙。如果你把你的学校(大学,研究生)都列上了,有时候你会找到校友(尽管你们入学的时间可能相差了十几年)。有了这一点共同点,你就可以试图把你的校友加到你的关系网里,然后请他/她帮忙了— 如果你的背景差不多,多数人是愿意帮忙的(只是把简历转发给HR而已,而且很多公司有referral bonus)。但是如果人家不想帮忙,也不要有怨言,以为公司里招人有时候针对性是非常强的,背景差一点都不行。而作为公司里的雇员来说,如果推荐的人太离谱,也不太好(以后再推荐人就不太好用了)。 用linkedin还有一个好处:很多很多recruiter都用linkedin,而且有成百上千的contact。你和他们/她们建立关系,你的关系网一下子就增大了很多。另外如果你拿到了on-site interview的日程安排,你也可能能在linkedin上查到要见的人的背景(不建议你把他/她加为contact,会让人不舒服)。 第四个办法是俺从Right Management的学习班上听来的,没实践过,不过俺打赌大多数找工作的同学都没听说过这档子事:在美国有很多networking group,说白了就是找工作的人的碰头会。这儿有一个目录:[http://www.job-hunt.org/job-search-networking/job-search-networking.shtml](http://www.job-hunt.org/job-search-networking/job-search-networking.shtml) 。 俺的猜想是networking group对象俺一样的工程师可能帮助不太大,因为象俺们这样的工程师是靠技术吃饭的,太专门话,不是象sales,marketing之类的专业性不是非常的强。当然俺是乱猜的,你如果有时间,自己去参加几次也没有什么害处。如果你打算去,准备好一个"30 seconds sales pitch", 基本上就是以三四句话概括一下你的背景和你想要找的工作(和你简历里的qualification差不多),练熟了,因为你会被要求做一个自我介绍(要不然别人怎么知道你是哪路神仙?) {==对于软件工程师或者创业者而言 现在很多技术讨论会还有meetup是很不错的渠道 尤其是技术人才 找找业内论坛或者知名博主发起的一些活动 当地线下最好 见到真人交流沟通一下 如果合适效果完全相当于内推 说实话 那些读MBA的不也是多认识些高富帅白富美知道些人生赢家的机会么==} ## 关于找工作(四 面试) 好了,现在有公司的人给你打电话/发email约谈了。恭喜你,你基本上已经度过了做没谱/不着调/撞大运的一关了。接下来是什么程序呢? 一般说来,公司的面试会是两步:1.电话面试 (telephone interview); 2. 面对面面试(on-site interview). 先说电话面试:电话面试有可能是两个电话。第一个,和recruiter/HR谈。找一个基本上没什么担心的,因为recruiter/HR对你的技术能力的判断力几乎是零。他们打电话的目的一般是想搞清楚一些非技术的问题, 比如你的身份问题,是否需要搬家,什么时候available, 等等。对这些问题就实话实说好了,因为很多事情(比如身份问题)不是个人/公司能控制了的。相对来说,recruiter给你打电话要好办一些,因为他们通常会尽量帮助你(别忘了,他们的收入是和帮助公司招到人挂钩的, 有的甚至是直接挂钩\[招到一个人,拿一个人的钱\])。 一个很普遍的,让很多人不舒服的问题是recruiter有时会问你对工资的期望值是多少。我的经验是如果你有大概的概念,不妨直言(反正俺都是明着说的)。提醒一下,如果你是骑驴找马,而现在的工作有奖金,记得把奖金包括进去。recruiter问这个问题的原因很简单:如果你的期望值是10万,而那个位置最多给7万,那就不要浪费大家的时间了。 {==建议给个range 也可以直接让HR先说职位offer的range==} 同时,你可以问recruiter这些问题:1. 那个位置的pay band 是多少? (如果recruiter问你的期望值是多少,而你基本上没概念的话,可以用这个问题来反问recruiter — 当然得委婉一点,比如:I’m quite flexible on the level of pay, may I ask you what the pay band for that position is?) 2. 如果recruiter提起和hiring manager 的电话面试,可以问他/她 hiring manager的背景以及面试需要注意哪些方面。正常情况下,recruiter会尽量帮助你的。 下一步,就是技术方面的面试了。你能不能拿到工作,这一步是至关重要的。遗憾的是,这一步也是最没法准备的。为什么?很简单,前面过HR/recruite关,HR/recruiter的训练都是大同小异的,所以可以对症下药;而技术方面,隔行如隔山,而且参与面试的人有各种各样的风格(多数公司都没有固定的面试问题),能不能说服他们你是合适的人选,只有靠你自己的能耐了。 那么是不是说只有去碰运气了?也不完全是。面试之前,至少有一项准备工作:==调查==一下公司的背景以及面试你的人的背景(如果可能的话)。公司的背景包括主要的业务(总不能人家问你“对我们公司知道什么?”回答“nothing‘吧),最近的新闻(一般公司的主页上会有,另外google), 主要的竞争对手等等。面试你的人的背景有什么用?通常情况下,他们未必都是你的同行(比如有的人是工程师,有的人是学物理的,有的人是做marketing的),知道了会和什么样的人面谈,才好有的放矢的准备啊。面谈的时候,也可以有选择地吹吹牛。 面试的程序有什么呢?基本上是两块:1. presentation and/or hands-on project. 2. 和不同的人面谈。hands-on project好象在找软件工程师的工作是特别普遍。俺不是学软件的,所以也没什么经验。建议去网上(比如mitbbs)找”面经“。 presentation对工作经验不多的申请人来说几乎是必须的(对多年工作经验的人来说,做presentation有时不现实, 因为大多数公司里做的东西是不能随便出去讲的)。面试时的presentation其实和学校里的差不多,( 当然每个人在学校里受的训练也不一样),但是要注意淡化技术细节,把重点放在解释清楚到底是怎么做的。原因很简单,在学校里做presentation, 听众基本上都是同行,所以你可以不厌其烦地讲解细节,把别人都灌晕了才牛;而在公司里,第一同行未必占多数,再者基本上没人喜欢看公式,特别是说话管用的经理们。如果你不能用大白话把你的东西讲清楚,你觉得经理们会不会帮你说话? 至于和不同的人面谈,俺能给的经验就两条:1. 要尽量给人留下一个容易相处的印象。为什么?因为以后大家要做同事的。虽然未必会做同一个项目,但谁也不能断定以后绝对不会合作。如果有一个P股上的痛(hehe, 老美的说法,pain in the \*ss), 不是给自己找麻烦吗?2. 吹牛不要紧,不要漏。特别是和技术背景强的人聊天,他/她问某个问题,通常是有一定概念的。如果你乱吹,牛皮吹破了,你的面试成绩也就差不多了。其实有时候老老实实说”我所知有限“也不一定是坏事,因为有时候面试的人是故意来看你到底懂多少的。 几个与面试相关的非技术经验: 1. 面试前一天,最好开车去面试地点一趟。熟悉一下路程,以防万一第二天路上耽搁(比如有时候公司的门面很小,或者gps不准确)。 2. 面试时西装革履(除非公司明确告诉你不需要)。建议开车时把西装挂起来,到了公司再穿上。进了房间后,可以把西装脱下来。 3. 比约定的面试时间提前大概10分钟到。如果到早了,在公司的停车场等一会儿;如果迟到(最好不要),提前打电话给hiring manager告诉大概会迟到几分钟。 4. 面谈后记得要名片。在面试后的24小时内给每个人发一封感谢的email。内容可以基本一样,但是要每人一封(不要群发)。多数情况下,对方不会回你的email,那是正常的,没有什么可紧张的。 {==这个很重要 你要相信他面试了这么多人 如果没什么人给他发感谢信 你很突出 如果大部分人给他发感谢信 你很突兀==} 5.最重要的一点,放松。要相信自己的实力。 ## 关于找工作(五 找工作的心态问题【之一】) 技术细节基本讲完了,下面开始讲一点虚的 — 找工作的心态问题。 先声明一下,俺找工作的时候一没身份的压力,二没经济的压力(或者是在骑驴找马,或者是正拿着被裁的package,开开心心地领着失业救济"度长假"),所以有可能是站着说话不腰疼。您要是正一肚子火呢,等消消气再来看。 其实找工作的心态说起来非常简单,就一句话:“要相信自己的实力”。想想您老人家背井离乡,飘洋过海地跑到这个地方来,说着鸟语,看着写满鸟字的书,还拿到了鬼子都不容易拿到的老鸟学位(骂死他/屁挨着地),搞定个把鸟工作还不只是时间早晚的问题。咱们和老美相比差什么?一是不太清楚他们游戏的规则/套路(这个希望俺费牛劲写的这些帖子能管点用),二是没有老美的关系网(先天不足,没法子,老美到了中国还不是一样没辙?),第三个就是中国人普遍太谦虚,以致于有些畏畏缩缩(不是wsn的ws),不敢/不会象老美一样装牛B。 所以俺说根本的根本是要有自信,要有近于自大的自信。你自信满满了,写的简历才能吓住人(因为你做的东西只能用一个字概括:牛),面试时才能说服人,(就算稍微吹点牛,别人也不敢乱问啊)。你也许会觉得俺在说胡话,俺是故意这么说的,因为中国人普遍认技术挂帅,总觉得别人能看出来自己的技术有多牛。技术要好是对的,但它顶多是七分,剩下的三分可就得靠吆喝,忽悠之类的软能耐了。有一点您可以基本放心,您在怎么自信满满,和很多老印/老美比起来也是小儿科的很。(by the way, 那样的老美基本上是无知者无畏,老印吗,就不好说了) 找着了这个根源因素,网上(特别是mitbbs上)找工作的时候常见的“什么什么可怎么办啊?”这样的问题也就不能成为问题了(怎么象方鸿渐的成名演讲的语气?)。下一节具体晒一晒那些不成为问题的问题。 ## 关于找工作 — 文摘之一 \=== 说明 === 文摘系列没有固定的计划/蓝图,我在网上看到的东西随看随贴,会穿插于正常的“关于找工作”系列之中。 \=== 说明结束 === (文摘之一) 小背景: Steve Allard是我打过一点交道的recruiter(他一度反复游说我去一家startup)。此人的能耐大小不清楚,但磨嘴皮子的工夫那是相当的美国,基本上能把死的说成活的。 介绍这个背景的原因是希望不要给你留下我支持/推荐或者不支持/不推荐他的印象。只是觉得他写的一些东东有些道理,所以给大家节省一点时间,做个压缩饼干式的文摘。 有时间/兴趣的话,原文(英文)在这儿:[http://talentretriever.wordpress.com/2009/04/16/6-steps-to-a-winning-resume/](http://talentretriever.wordpress.com/2009/04/16/6-steps-to-a-winning-resume/) 要点: 获奖简历6要素: 1. 目标明确。 【俺的评论】即俺所说的有一个大框,根据实际情况照方下药。所不同的是他强调的是以简历作者的追求为准则(以人为本嘛),俺说的是以招工单位的要求为参考准则—前面提过了,俺的一套往好听里说是军体拳(实用,但不好看),往不好里说就是野路子,有点偏阴损。 2. 列表(bullet items),但是也不要全列表。 【俺的评论】和俺说的基本一致,两三句三四句易读的话(短语),然后是列表。 3. 具体,有数据,可以吹牛\[他没敢明着说\],但不能漏 【俺的评论】和俺说的基本一致 4. 动词 【俺的评论】和俺说的一致, 动词开头,挑吓人的词用 5. 废话少说 【俺的评论】和俺说的又一致,宝贵的空间不要用来说屁话(实在想说屁话,象俺一个开个博客)。还有,俺说的不要列reference也提到了(讲的比俺讲的还生动) 6. 短 【俺的评论】老美能做到这一点可不简单,我看他们的教材/文章有90%以上是废话连篇,又臭又长。 呵呵,看来俺业余也可以琢磨着干干recruiter的活了。 另外这一片也可一看,是关于如果使用linkedin的,俺就不摘要了。 [http://talentretriever.wordpress.com/2010/03/03/building-your-linkedin-brand/](http://talentretriever.wordpress.com/2010/03/03/building-your-linkedin-brand/) 现在有工作的同学可以看看这个:[http://talentretriever.wordpress.com/2010/05/04/“but-i-have-a-job-and-i’m-happy-”/,](http://talentretriever.wordpress.com/2010/05/04/%E2%80%9Cbut-i-have-a-job-and-i%E2%80%99m-happy-%E2%80%9D/%EF%BC%8C) 有点意思。不过俺建议不要被他完全忽悠了,俺就是对他太客气,被他穷追猛打了两个星期(那个位置简直就是照着俺的背景/经验写的,也难怪他不屈不挠。不幸的是那个startup实在是太绿了,俺实在是不敢冒险赌一把)。 剩下的文章基本上没必要看,主要是写给公司看的。这家伙也许正在努力给自己找铁饭碗。 给他免费做一个广告吧:你如果想和他联系,可以在linkedin上找到他。 ## 关于找工作 — 文摘之二 \== 感谢zjh67同学同意俺免费用他的原创文章 == MITBBS 上zjh67的文章,面试的真实例子分析,非常有帮助。 原文在这儿: [http://www.mitbbs.com/article\_t/THU/31222293.html](http://www.mitbbs.com/article_t/THU/31222293.html) 【俺的点评】这个经历和俺有一次招人的情况机会一模一样。中国人一般技术基础是不错的,但是吃亏在两三个方面: 1. 技术面太窄。我见过不少自己的东西搞得很熟的,但是也仅限于自己的那一点东西。其实不需要你对别的多么精通,大概有些印象, 能马马虎虎说一说就可以了。因为工作以后的东西通常和你以前做的是不同的,如果看不到你的触类旁通的能力,公司是会很犹豫的; 2. 太学术化。在校的时候做presentation是越复杂越好,可是在公司里更重要的是别人能大概听懂你的东西。在去面试之前,要想办法搞清楚那个公司的风格是什么—有的公司(比如consulting)很注重研究,但更多的公司是希望找到的人能短平快地解决问题。在准备presentation的时候,可以有两个方法:(1)对每一个公式都问一下自己:这个公式删去的话,我还能不能把我的做法大概讲出来?追根究底的话,你会发现绝大多数公式都没有必要出现。(2)找一个对你的东西没有多少概念的同行(比如新进实验室的小师弟),看看他能不能基本上跟着你的思路走。要记住,公司的任务是要赚钱的。如果你的工作不解决实际问题,或者你的方法先进的别人根本听不懂,做的再漂亮也没用。说到底,最重要的东西不是你做的细节有多漂亮(能拿到学位,在细节上都是有两把刷子的),而是你的分析问题,解决问题,表述问题的能力。为什么要用表述问题的能力?管理层对你做什么总得有点概念吧,另外一个重要的原因就是你迟早是要和别人合作的,曲高和寡可不好办。 3. 和第二点差不多,但是可能短时间内不太容易提高:基本概念要清楚。这个不是指你能把基本定理背出来,还是要真的明白为什么一个问题可以那样做。举个材料力学的例子吧,悬臂梁理论是解决工字钢相关的问题的一个基本工具(大学二年级的东西,学机械,土木,航天,力学的人大概都能把公式从头到尾推出来),可是你有没有注意什么情况下不能用悬臂梁理论? \= 以下为转发的文章 ==== 我在一家半导体设备公司任职。前些日子我们组有两个机械设计工程师的位置空缺。印度同事推荐了许多印度人。 我也通过别人介绍联系了两个师弟。可是面试结果下来,offer 全给了小印。虽然参加面试的六人中有两个小印manager, 但我的感觉是师弟们的背景和表现和小印们相比的确差强人意,落选当在情理之中。我想在这里将过程简单回顾一下,希望对其他正在或将来要找工作的师弟师妹们能有所帮助。 由于各个行业各个公司各个小组的情况不尽相同, 所言不当之处还请各位包涵, 就当是他山之石吧。 首先要说明的是我们要招的机械工程师必须具备很强的分析问题能力。当然基本的专业训练如结构应力,流体传热,材料应用等是不可缺少的。 师弟A: 本科和硕士都在清华,有机械和材料的背景。即将从一工程排名前20的学校博士毕业,无工作经验。据说其导师是行业中的牛人。在面试前我和他通过几次电话,请他至少要做一个准备,那就是用5 分钟的时间总结一下他所完成的最重要的项目。这是因为在他之前我们面试了一个明大的小印硕士,他准备了一份非常漂亮的彩色打印的presentation,highlight 了他所承担的项目,而且简明扼要地介绍了他所面对的问题、难点,解决问题的思路,得到的结果,优缺点以及后续工作等等,给我们所有的面试人员留下深刻印象。由于他是硕士,我问的几个问题他都没能正确回答,但是他尽了最大努力从他所理解的机理出发试图得到正确答案。这使得我这个对小印有所抵触的人都在心里赞叹。 回到师弟A。面试那天他的 attitude其实很不错。我不知道他是否按我的提示做好了准备,因为我本人在给他面试时并没有谈及这些。在面试结束后的讨论会上,我们的CTO(白人)坚决反对雇用A,理由是他对所承担的博士课题缺乏深度的了解,而且只局限于他所做项目本身而已(他的课题是一个大课题中的一部分),他对上下游的情况几乎一问三不知。这不是一个博士应有的表现。所以尽管personally他觉得A是个good guy ,他还是反对。一个资深的白人工程师也持反对态度。他向A提了一个压力计算的工程问题,他本期望A能将问题简化,给出一个估计值(量级之内)。可是A却告诉他要构造一个模型然后用simulation软件找到答案。所以这个资深工程师的结论是A缺乏工程师的素养,不会猜结果。两个小印manager的评价倒并不很负面,其中一个表示他持中性。另一个觉得对fresh的博士不能要求太高,有些方面毕竟工作后才能学到。可是我们组招人的标准是全体一致通过。就这样这个位置给了那个明大的小印硕士。 师弟B: 本科在清华,流体背景。硕士在北大,应用力学。工程排名前20 的学校博士毕业,专攻传热模拟计算。在一个专业咨询公司工作了3-4年后,刚失掉工作。我找他除校友因素外还因为他的博士学校在传热领域很强。由于A的前车之鉴,我再三嘱咐他要做好相应的准备。可是面试的结果B还不如A,一是他的知识面窄。即使是他专攻的传热领域,他的基本素养也没有给人留下印象。二是他的精神面貌没有表现出他对所应聘工作的兴 趣和热情。所有面试人员都觉得他是为面试而面试。其后我们又面试了一个明大的小印应届博士(不明白为什么来这么多明大的。估计都是其中一个小印manager引荐的)。他对他的博士课题充满了激情(有关energy harvest在交通领域的应用),也看得出他的确在研究中下了大功夫。和前一个小印一样,他对不知道答案的问题敢于从基础知识出发尽最大努力去分析。结果他也拿到了offer。 总结一下: 1.也许大家在平时要注意知识的积累,尤其是专业知识面要宽,不要只局限于博士课题。对于所做课题,一定要200%地了然于胸,包括来龙去脉,问题难点,解决方法,独到之处,局限性,等等。 2.未必要记住什么公式,但一定要了解物理现象的本质和机理。清华的学生应该在这上面有优势。 3.做好面试的准备。要对所面试职位表现出一定的了解和兴趣。不然你来面试干嘛。正确理解面试人员的问题。不清楚一定要问。回答问题要言简意赅,击中要害。 衷心希望师弟师妹们能找到理想的工作,学有所用。 ## 关于找工作的补充【之一】 记不记得俺提到过的experience里要用“吓人”的动词? 给你们一个小列表 (不是我的原创,不记得从哪儿抄来的了)。注意(1)全都是过去时; (2) 没有studies, investigated, worked on, supported 这些无关痛痒的词。 1. Accelerated 35. Empowered 69. Motivated 2. Accomplished 36. Enabled 70. Negotiated 3. Achieved 37. Encouraged 71. Obtained 4. Acted 38. Engineered 72. Operated 5. Adapted 39. Enhanced 73. Orchestrated 6. Administered 40. Enlisted 74. Organized 7. Allocated 41. Established 75. Originated 8. Analyzed 42. Evaluated 76. Overhauled 9. Approved 43. Examined 77. Oversaw 10. Assembled 44. Executed 78. Performed 11. Attained 45. Expedited 79. Pinpointed 12. Boosted 46. Focused 80. Planned 13. Budgeted 47. Forecasted 81. Prepared 14. Built 48. Formulated 82. Prioritized 15. Calculated 49. Founded 83. Processed 16. Catalogued 50. Generated 84. Produced 17. Chaired 51. Guided 85. Reconciled 18. Coached 52. Harnessed 86. Repaired 19. Collaborated 53. Identified 87. Researched 20. Communicated 54. Illustrated 88. Revitalized 21. Compiled 55. Implemented 89. Selected 22. Consolidated 56. Improved 90. Solved 23. Coordinated 57. Increased 91. Spearheaded 24. Created 58. Initiated 92. Stimulated 25. Cultivated 59. Instituted 93. Strengthened 26. Decreased 60. Integrated 94. Succeeded 27. Demonstrated 61. Introduced 95. Surpassed 28. Designed 62. Invented 96. Synergized 29. Developed 63. Launched 97. Troubleshot 30. Diagnosed 64. Led 98. Uncovered 31. Directed 65. Maintained 99. Upgraded 32. Documented 66. Managed 100. Utilized 33. Doubled 67. Mastered 34. Educated 68. Mediated ## 关于找工作(五 找工作的心态问题【之二】) 长周末临时决定去探望一个朋友,耽误了接着往下写,见谅\*\*\*\*\*\* 所谓“不成为问题的问题”,基本上是在bbs上,网上论坛上差不多每个星期都会见到的一些问题。从俺个人的角度看,大多数问题都已经被回答过若干次了— 当然俺这个观点大有站着说话不腰疼的嫌疑,因为想当初俺找工作时也有差不多的疑问。俺有一个比喻,找工作这件事就和骑自行车差不多,当你没经过(还不会骑)的时候,它看起来挺神秘/吓人,但是一旦你知道了是怎么回事,真的是没有什么门道。 列一下俺常看到的“问题”。假如某个问题恰巧是您问过的,而俺的意见/答案比较不好听,请包涵。 1. 没接到HR/recruiter的电话,怎么办? 没什么要担心的。如果他们真的觉得你的背景很合适的话,会在给你打电话的。即使不给你打电话也无妨,你的机会本来也不是很好— 如果好的话,他们通常会给你给你留言。(顺便说一句,如果你有一个专物专用的手机,这样的事就不太会发生了)。 2. 约好了电话面试,我被放鸽子了。。。 如果是对方(特别是hiring manager)和你约的某个时间给你打电话却没打过来,那说明他们不想要你了—。。。—骗你的,当然不是了。要知道hiring manager没有专职的, 也就是说,他/她还有别的工作要做,而招人面试的优先级通常不会很高。所以他/她可能哪儿耽误了(如果hiring manager约了几个电话面试,晚点的情况非常常见),也可能一时脱不开身(如果他/她临时和老板开会,总不能把老板晾那儿吧), 也可能就是忘了(谁让你的优先级太低呢)。那么遇到这样的情况怎么办?在约好的开始时间之后大概15分钟给对方打一个电话。如果他在办公室(即使是在讲电话),一般会马上和你说一下的;如果不在,给他/她留个言,客客气气地说明你没接到电话,然后告诉对方什么时候找你比较方便。遇到这样的事你偷着乐吧,hiring manager多多少少有点理亏了,面试时会对你松一点点。 3. 电话/on-site面试过了,多长时间有动静? 你现在才想起来问这个问题?早干什么去了?这个问题的答案,只有hiring manager才知道—如果你后面还有好几个要面试的人,等个几个星期也不是什么新鲜事。所以在面试的最后,hiring manager通常会问你还有什么问题吗?这个时候要就得问他下一步的计划和时间表(plan & timetable)。(当然还要问别的问题)hiring manager给你的时间表就是你应该开始关心(如果到时还没有动静的话)的时间表。 如果过了他们/她们告诉你的时间还没有动静,写封email或者打个电话问一问,有的时候公司里有别的事情耽误了,但是公司一般不会逐个通知候选人。问一问不会损失什么的。 4. 某某位置是个什么级别的位置? 这个问题除了那个公司的人没有人能回答你。同样的位置,在有点公司可能是要10年以上的经验才会拿到,在另外一个公司可能只要有研究生学位就可以拿到。俺曾经遇见过一个做了好几年senior staff scientist的老哥,当时俺的敬仰那是如滔滔江水,后来才知道他以前的公司Ph.D.工作三到五年基本上全可以升到senior staff scientist的位置。(那个公司再往上的位置是没有任何修饰的scientist) 有时候从job description上大概可以看出位置的高低。最可靠的途径还是电话面试时直接问HR / Recruiter / Hiring Manager. 先这些吧。如果有什么问题,尽管问。 ## 关于找工作的补充【之二】 如果你还是对你的简历不放心,这个网站列了一些职业写简历的网站: [http://www.resumeobjective.info/Reviews-of-Resume-Writing-Services.html](http://www.resumeobjective.info/Reviews-of-Resume-Writing-Services.html) 我不知道那个网站和他们所列的网站的关系,但是俺的感觉是这个钱实在是没必要花 — 简历再难写,总比您的硕士/博士学位容易吧?当然您如果想花钱买个安心,也没人拦着您不是。 还有一个很多人注意不到的找工作的地方:你所在(想去的)州的就业办公室。名字各个州不一样,有的叫office of employment, 有的叫labor force development,还有的直接归Department of Labor管。网上查一下,应该很容易找到相应的网址的。在那些网站上,一般会有job board,有时候公司直接到那些"官方"的job board上贴广告(特别是如果他们想找有工作经验的)。另外,你可以找一下离你住的地方近的office, 他们有时会有免费的讲座,还有网络,打印,复印,简历修改等等服务(有可能是免费的)。 ## 关于找工作 — 文摘之三 找教授位置的同学必读:[http://quattro.me.uiuc.edu/~jon/ACAJOB/index.html](http://quattro.me.uiuc.edu/~jon/ACAJOB/index.html) Professor Dantzig 是UIUC机械科学与工程系(不知道是那个神人想出来的名字,没听说过有“机械科学”这档子事)faculty recruiting committee的主席,他所写的建议绝对是第一手的信息,如假包换。 即使你不找faculty的位置,建议你也读一读,有些东西可以借鉴。你也可以看到CV和resume有多大的不同—如果你的resume写成Prof Dantzig给的CV sample那样,你被HR/recruiter毙掉的可能性相当的高。 ## 关于找工作的补充【之三】 经常在网上看到有同学发帖子说运气极好/极糟被是中国人面试。俺自己曾经参与过若干次面试,而且因为俺的技术头衔比较高,如果要招的方向与俺的差不多,俺的意见有时是决定性的。事实上,曾经有被大家不看好的人因为俺的意见而给招进来的,也有大家都看好的人被俺一句话废掉的。所以估计被俺面试过的人对俺也是毁誉参半,而且可能是毁>>誉。 为什么说这些?是因为俺打算讲一讲俺作为“面试官”心里是怎么想的。当然俺的想法不一定有代表性,但是普遍性应该还是有一点的。 先晒晒俺的背景。俺马马虎虎可以算是学机械的,但是俺在学校里是做实验的日子用一只手就可以数的过来,也就是说俺的东西基本上是玩虚的(理论,计算什么的)。再有就是俺做学生时,特别是离屁挨着地学位比较远的时候,没少因为脑袋犯糊涂被老板臭骂(现在想想老板的脾气真好啊,居然忍住了没揍俺),所以现在俺看一个人行不行/牛不牛的标准第一是看他/她做东西的大方向对不对头,也就是脑袋清楚不清楚—细节可以学,经验可以积累,脑袋糊涂可不好办。 俺觉得俺的这个调调在负责技术的“面试官”中间还是有一定普遍性的,特别是如果你是Ph.D.并且/或者申请的是R&D的位置。(别的情况,直接跳到下面的3)。当然“面试官”的水平也参差不齐—技术头衔高不代表技术水平高,但是不幸的是技术头衔高的人的意见往往比较管用—所以不排除他/她看不出来你的水平高低乱评一气的情况。不过如果你不幸遇上了技术一塌糊涂的“面试官”,而他又被你这个超级高手当成了低低手把您给毙了,你要学会看事情的积极方面:如果你去了那家公司,向那个“面试官”汇报(他/她当然要指导你的工作了),你会不会心情好? 现在假定“面试官”的技术水平与其技术头衔相称(呵呵,恬不知耻地说,比如俺),你怎么做能赢呢?有几个方面: 1. 你对自己的东东(Ph.D.论文,或者presentation的东西)要熟。这个熟不是说要抠多小的细节,而是说要对为什么做这个,做的思路是什么,理论基础是什么,别的可选的方案有什么,为什么选现在的做法,现在的做法有什么不足,这些看起来无厘头的问题要想清楚。清楚到什么程度?要清楚到能和同行针尖对麦芒地就这个题目辩论的地步—当然不是要你去和别人辩论。为什么这么强调这个问题呢?直接的原因是如果你在细节问题上被问倒,通常问题不会太大;可是如果在大方向(技术名词,approach)上说不清楚,或者给人留下一个你只是跟着老板跑的印象,可大大的不好办。 有同学说了,我就是老板指哪儿我打哪儿,怎么办?赶紧去问老板啊。通常情况下你老板应该会很高兴的(俺知道俺当时\[不是要找工作的时候\]去问老板,老板那个高兴啊\[榆木疙瘩总算开窍了\],直接拉俺出去吃了一顿); 2.大方向明确了,怎么做也是一个门道。记不记得俺前面提过被presentation里的公式尽量省略?是有原因的。你讲自己的东东,底下的听众通常是多少有一点概念,但是其实不懂。那么你想想在三四十分钟内他们/她们能理解你三/四/五年的心血的百分之几?(想想你在学校里听讲座,能听明白多少?)可是还是要对你有些技术上的观点吧?这个观点从哪儿来?几个途径:(A)你看起来对自己的东东有没有自信心?这个就是上面第一点要解决的问题; (B)你讲的清楚不清楚?同样,不是细节清楚不清楚,而是大框架清楚不清楚。这就需要你有能力把阳春白雪给白菜豆腐化,用大白话把高深的东东讲清楚。而大白话和罗里八嗦的公式是不沾边的。另外,你讲的过程中,肯定有人听着听着就跟不上了,那个时候再看到满眼的公式,大概谁也没兴趣了。 记住,做presentation最理想的结果,是别人听完你的presentation, 能大概说出你是这么这么做的,可是具体细节一概不知。 那么是不是就彻底不要公式了?当然不是。有些不得不用的(by the way, 那样的很少很少),还得留着。其他的,转移到backup slides里,预备有人和你死抠公式。 3. presentation重点是给人留下你学有所专的印象。但是仅有专是不够的(俺曾经毙过一个presentation非常好,博士论文也很有深度/难度的—老哥后来以同样的presentation拿到了教授的位子),另外一个可能更重要的方面就是你对专业知识的"杂"和"活"。这个通常在一对一的面试时被考察。从某种程度上说,这个"杂"和"活"其实是决定你能不能拿到工作的主要因素。 俺通常会问一些稀奇古怪的问题(比如给我一个悬臂梁/Bernoulli梁不适用的例子)或者一些很基本的问题(比如问学流体力学的,固体材料的弹性塑性变形是怎么回事?)或者一些和被面试人专业相关的东东(比如和做材料加工的人扯扯thermocouple的设计和选择)。这些东西说起来都是挺恶毒的,因为你根本没办法临时准备。更恶毒的是,有些是期待你明白的,有些是看看你有没有概念(有时候没有概念也没什么,但是如果你不懂装懂又被我抓到,你基本上就被俺毙掉了)。所以能给你的建议就是放松,把你的真实水平发挥出来。这么想:即使被废,也没什么,反正和俺这么恶毒的人共事也没有可期待的。 遇到不会的问题时的具体的建议:如果是非常基础的问题,老老实实说不会;如果是具体一些的问题,可以先说不是很确定答案(这句话不要用的过度,用的太多会给人一个不自信的印象,大大的不妙),然后说我可以试着这么做,blah blah。(参见前面贴的文摘之二),这样的话会给人留下一个此人不是死读书,读死书的人的印象,是大大的好事。(其实还有一个原因:俺个人一般不这么做,但是俺知道有人拿自己工作中的难题去考面试的人。想想如果你能给他/她支点(歪)招,他/她还能不大说你的好话?) 如果你现在有时间,把那些“introduction to。。。”的书翻出来看前两三章吧。 4. 另外一个决定你能不能拿到工作的主要因素,是你与人相处的能力。每个“面试官”都在衡量,如果我以后和这个人同事,会不会别扭?这个没有什么办法,如果你的性格太内向/外向,注意收敛一下(一句话不说的木头没人喜欢,叽叽喳喳的喜鹊也让很多人头痛)。一般人说起来应该都没有什么问题的。如果你的口语不好,也不要担心,只要你能维持正常的谈话,一般不会被挑剔的(你的电话面试已经通过了不是?)。另外也不要紧张,因为紧张也没什么用。 5. 俺觉得去面试最重要的心态是自信和淡定,或者说是战术上重视(因此认真准备,在技术上吓死他们),战略上藐视(一方面充满自信,一方面想清楚就算拿不到offer也没什么,权当攒经验值了,这样你就不会紧张了)。俺在前面的回帖里说过,不要给自己找什么“这可是dream job”这种自己和自己过不去的心理压力。一个工作好不好,不是简简单单的技术内容+工资水平决定的,你不去经历,你永远不会知道那个工作是不是你的dream job。(别的不说,再好的工作,让你赶上一个指手画脚,容不得人的老板,每十分钟检查一次你的工作,你还dream不dream?) 6. 一些小小小小的建议: (1)不要一见面试的人是某国人就有心理预定位(stereotype)。俺不讳言俺不怎么待见老印,但俺也认识很多非常出色的老印。每个人都是不一样的,某国人怎么样,可能整体上(统计上)和文化背景有关,但个体上和国籍无关。 (2)(还是要淡定)不要想三想四。面试的人和善不代表他/她会说你好话,凶恶也不代表他/她会毙掉你。无论你的感觉怎么样,和每个人面谈的时候都要一样的态度。 (3)有不懂中文的人在场的时候不要讲中文。第一不礼貌,更重要的是别人会怀疑你unethical。 (4)一般说起来,中国人会尽量帮忙的。但是这种帮忙是有限度的,不要因为自己面试的不好回去就骂“被老中面试”怎么怎么的。 (5)和中国人面谈,不要主动要求讲中文。如果他/她想和你讲中文,他/她会提的(俺个人一般统统用中文,但是如果错过了presentation, 会用英文扯淡10分钟,看看对方的英文到底怎么样)。 (6)吃中饭时,简单第一,不要吃有可能出乱子的东西(比如meatball sandwich),因为一旦你把衣服搞脏了,下午不好办(总不能打赤膊吧?) (7)注意一下吃饭的礼仪,不要出声音,特别是不要吧唧嘴。俺知道在一些地方吧唧嘴是吃的好的表现,但是俺见过太多因为这个大大丢分的同学了(偏偏俺的厚脸皮遇到这样的事突然奇薄无比,提醒的话怎么也说不出口)。你如果有这种习惯,现在就要注意改,因为如果需要有意识的注意的话,到时候你一定会露馅。如果你拿不准,问你的老婆/女朋友/室友。(俺到现在还没见过女生有吧唧嘴的) (8)如果你出来没去吃过西餐(快餐不算),建议你找时间去一次。也不用什么高档的地方,applebee这样的大路货就可以。如果有钱,建议你美式(applebee,TGI Friday之类),墨西哥式, 意大利式各去一下,熟悉一下环境,免得万一面试有比较正式的晚餐,不知道怎么点东西。 ## 关于找工作 — 文摘之No. 4 An excellent blog I stumbled upon… lots of insights/suggestions/advices if you have time to read it. [http://recareered.blogspot.com](http://recareered.blogspot.com) (Disclaimer: I don’t know the blog author. Neither am I affiliated/conneccted with him.) Personal note: I’m getting really (I mean REALLY) busy with life and work so I won’t be able to update the blog often. But every now and then when I see something nice, I’ll post the link. 小广播 我不是做HR/recruiter的,所以有些经验难免会一叶障目,不见森林。如果你有什么建议/意见/不同观点,请不要犹豫提出。 如果不太麻烦的话,麻烦你点一下右面的google广告。所有广告收入我都会捐给和中国相关的慈善机构(我工作的公司会提供1:1的match)。谢谢。 ## END * * * * * * * * * # 个人意见 如果你已经翻到这个地方,恭喜你。 这一系列文章是RandomMumble(不好意思还不不知道其本尊大名)发在Google BlogSpot上的,2010年5-6月,最后两篇是晚些时候,还是开篇的地址,原文请移步:_[http://randommumble.blogspot.com/](http://randommumble.blogspot.com/)_ 再次感谢他的无私分享和友情建议 ### comments by tc on 2013 当初的LinkedIn现在已经成为必然选择 CS的同学如果进大公司的话,刷题也是新的必然 Amazon为代表的公司开始向OOD转移面试思路 细节很重要,坚持很重要。 ### comments by tc on 2016 若干年后我也终于成为IT大厂的一员(亚麻需要内推的请戮[这里](http://jobs.amazon.com/)看职位,邮件联系[我](mailto:tan.chao.hawk@foxmail.com)),回过头来看这篇文章,很多预测以及建议已经成为常识,但其基本思路和技巧即使在现在来看仍然很有价值,因为知乎朋友反应文章无法打开才意识到我的[page](http://tanchao.github.io/)迁移覆盖了原文章。今天整理一下,也算是对 _掉线_ 的弥补。 目前我给朋友的建议发生了改变,不再是积极寻找开放职位然后面试,而是**积极准备然后等待机会**。可能因为工作年限增加,现在市场上的工作可能很多,但是符合自己的期望和标准的机会不一定多,这个时候选择好目标公司的目标职位(确切的说是dream position),积极准备并等待开放职位出现一蹴而就,一般来说更好。简单理解,以前可能决定要换工作,然后一个月练习一个月面试然后offer(**钱**)合适就接受;现在是确定好几家公司的大致职位,弄清楚要求和主要技能,然后开始针对性的准备,同时关注这些职位是否开放机会,一旦出现就联系内推或者HR,这个过程可能持续几个月。 另外相信面试更多是考核**合适**,而不是优秀,成为这个开放职位最合适的候选人最重要(所以内推的重要性不仅仅是过简历海选,还有内幕交易)。仔细研究职位描述,more attentions to "**PREFERRED QUALIFICATION**",尽量打听面试的具体题目和考核点,大部分公司的面试比实际工作的要求要高一些(所以不要觉得这样展示的不是真实的自我,相信我,调查这一切信息是非常值得value的能力)。 谈一下如何像面试官提问(之前我也有一个文章整理了一些内容,可能过几天也整理一下放过来),这个环节就两个方向,一个求稳,一个求胜,求稳不多说,问问工作相关的比较具体的问题展示期待和关心即好。求胜就要站在面试官角度思考,我希望招什么样的人(适合并胜任职位的人,聪明人,有趣或者新奇的人或者符合我审美观的人,美女帅哥,对公司理念或者文化或者模式习惯甚至于痴迷对人,学弟学妹亲朋好友八杆子打得着关系对人,等等等等),举个例子,比如面试的时候问老板,我注意到你们团队同时在招比您这个级别的人,不知道是不是report line有什么变动?(政治敏感性也很重要),再比如问面试官,刚刚您的介绍里面谈到了你们在探索某项技术运用到某个业务的可能性,根据我以前的经验blabla,不知道你们是否有这样的考虑或者有什么应对计划?(我认真听您BB了,而且我也很聪明,甚至还有相关经验)再然后就是注意具体的问题比宽泛的问题好,宽泛的问题属于求稳型,比如理想和星辰大海。 该下班了,就这样push。 ============================================================ # First Setups and Issues with Thursday URL: https://tanchao.xyz/posts/2016/07/13/thursday-init/ Date: 2016-07-13 Last updated: 2016-07-13 Tags: thur Description: alias pem file and command ### how to access ec2 better? - alias pem file and command ```bash # AWS related export AWS='ec2-52-77-227-119.ap-southeast-1.compute.amazonaws.com' export PEM='/Users/tanchao/workspace/credentials/thursday-ec2-t2micro.pem' alias sshaws='ssh -i $PEM ec2-user@$AWS' alias scpaws='scp -i /Users/tanchao/workspace/credentials/aws9517.pem' ``` - define ssh config [mac way](https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/ssh_config.5.html) (recommand) ```bash host aws HostName ec2-52-77-227-119.ap-southeast-1.compute.amazonaws.com Port 22 User ec2-user IdentityFile /Users/tanchao/workspace/credentials/thursday-ec2-t2micro.pem ``` - we host a git repo on ec2 and i need checkout without login/pem file ```bash git clone ssh://aws/~/gitrepo/recruiter-webapp ``` ### a good markdown online editor place [mahua](http://mahua.jser.me/) ### lombok ### tomcat 7 ### maven rebuild project ============================================================ # interestingly, i turned back to Jira heavily now, my agent n… URL: https://tanchao.xyz/notes/substack-c-266185177/ Date: 2026-05-27 Last updated: 2026-05-27 Source: https://substack.com/@sprtn/note/c-266185177 interestingly, i turned back to Jira heavily now, my agent need a state tracking mechanism of a task, and Jira naturally fit in, it has labels so I can dynamically assign different dimensions. ============================================================ # one side you boost implementation and code generation, on th… URL: https://tanchao.xyz/notes/substack-c-263963543/ Date: 2026-05-23 Last updated: 2026-05-23 Source: https://substack.com/@sprtn/note/c-263963543 one side you boost implementation and code generation, on the other side, the quality and thinking reduced a lot. human has to focus on the dirty and hard work. ============================================================ # Addictive self destruction. URL: https://tanchao.xyz/notes/substack-c-263143969/ Date: 2026-05-22 Last updated: 2026-05-22 Source: https://substack.com/@sprtn/note/c-263143969 Addictive self destruction. Just can’t stop building fully autonomous agent. I told my manager, I hope this can replace myself in six months. You hold an edge with hard work, but soon everyone catch up, or being forced to, with new model versions. It’s easy to execute, but it’s hard to think for longer than three months. ============================================================ # you need pirates, who are curious and brave enough to explor… URL: https://tanchao.xyz/notes/substack-c-262917579/ Date: 2026-05-21 Last updated: 2026-05-21 Source: https://substack.com/@sprtn/note/c-262917579 you need pirates, who are curious and brave enough to explore the world baring the risk. — e.g. someone said they spend 1 billion token per day, what do you think? e.g. someone said they spend 10k USD$ tokens per day, what do you think? have you tried? is it hard or easy to do that? before efficient token usage, can you waste token at this speed? ============================================================ # the more i tailor my dev-agent, the more i realize how claud… URL: https://tanchao.xyz/notes/substack-c-262293729/ Date: 2026-05-20 Last updated: 2026-05-20 Source: https://substack.com/@sprtn/note/c-262293729 the more i tailor my dev-agent, the more i realize how claude code were designed like this and why they chose it, it also taught me the same thing, an objective rule exists, different paths ends there, because they are just that effective and efficient. or because we are all humans, engineers, inherit the best practices and engineering principle, somehow we share the same mechanism that wanted my agent to apply. ============================================================ # there is a self-enforcement loop to quarantine myself to int… URL: https://tanchao.xyz/notes/substack-c-262312355/ Date: 2026-05-20 Last updated: 2026-05-20 Source: https://substack.com/@sprtn/note/c-262312355 there is a self-enforcement loop to quarantine myself to interact more with agent and less with human. like the SDLC loop. ============================================================ # if you don’t read carefully and pay attention, then a typica… URL: https://tanchao.xyz/notes/substack-c-262354676/ Date: 2026-05-20 Last updated: 2026-05-20 Source: https://substack.com/@sprtn/note/c-262354676 if you don’t read carefully and pay attention, then a typical pattern in autonomous agentic loop will happen: 1. something changed; 2. memo this change; 3. something changed again; 4. another memo over this new change. instead, there shouldn’t be memo about this, but change the origin guidance/document/readme/script. not new, RCA, and keep it remain fixed. ============================================================ # 现在很多信息的流动必须promo到多模态 URL: https://tanchao.xyz/notes/substack-c-261859670/ Date: 2026-05-19 Last updated: 2026-05-19 Source: https://substack.com/@sprtn/note/c-261859670 现在很多信息的流动必须promo到多模态 ============================================================ # I count with my little boy, just realize 10 starts from 1, 2… URL: https://tanchao.xyz/notes/substack-c-260139653/ Date: 2026-05-16 Last updated: 2026-05-16 Source: https://substack.com/@sprtn/note/c-260139653 I count with my little boy, just realize 10 starts from 1, 20 starts with 11, we used to argue a lot whether it’s fair or not to prompt to sr sde until you perform at that level for more than half year, back at Amazon, this counting settled my mind now. Clearly that’s right, you fill the row, then claim done. ============================================================ # it’s really interesting to see how human-like these agent ha… URL: https://tanchao.xyz/notes/substack-c-259644888/ Date: 2026-05-15 Last updated: 2026-05-15 Source: https://substack.com/@sprtn/note/c-259644888 it’s really interesting to see how human-like these agent harness system are designed towards. for example, opus 4.7 would plan for a task with bounded time-window and implicit effort-level, which are human best practices on task management. ============================================================ # it’s so easy, and much easier to distract me into something … URL: https://tanchao.xyz/notes/substack-c-258953314/ Date: 2026-05-14 Last updated: 2026-05-14 Source: https://substack.com/@sprtn/note/c-258953314 it’s so easy, and much easier to distract me into something less valuable and easier, like short video, quick and fullfill and next round, but the real valuable things come from the hard and long-time-taken ones. ============================================================ # they say it’s the best time to innovate, i say no; it’s the … URL: https://tanchao.xyz/notes/substack-c-259033323/ Date: 2026-05-14 Last updated: 2026-05-14 Source: https://substack.com/@sprtn/note/c-259033323 they say it’s the best time to innovate, i say no; it’s the best time to strengthen relationship, something not tech/skill related, but soft/invisible/unfair. ============================================================ # 1 year passed, I still remember how excited I was to build m… URL: https://tanchao.xyz/notes/substack-c-258523675/ Date: 2026-05-13 Last updated: 2026-05-13 Source: https://substack.com/@sprtn/note/c-258523675 1 year passed, I still remember how excited I was to build my first `param-cleanup` rule with Cursor on top of `Claude 3 Opus`. And how coding world iterate that copilot → cursor → claudecode changing rapidly. ============================================================ # Agentic blogger. URL: https://tanchao.xyz/notes/substack-c-257864041/ Date: 2026-05-12 Last updated: 2026-05-12 Source: https://substack.com/@sprtn/note/c-257864041 Agentic blogger. Interesting how common framework could be leveraged with ai assisted workflow. ============================================================ # Learning is a natural result of doing. URL: https://tanchao.xyz/notes/substack-c-255425345/ Date: 2026-05-07 Last updated: 2026-05-07 Source: https://substack.com/@sprtn/note/c-255425345 Learning is a natural result of doing. ============================================================ # I want to watch live, just to avoid the clippers the directo… URL: https://tanchao.xyz/notes/substack-c-255451770/ Date: 2026-05-07 Last updated: 2026-05-07 Source: https://substack.com/@sprtn/note/c-255451770 I want to watch live, just to avoid the clippers the director thought helps. [https://youtu.be/lte0aFb3sdI?si=WI7YqftGDZbMudEr](https://youtu.be/lte0aFb3sdI?si=WI7YqftGDZbMudEr) ============================================================ # 一叶障目 URL: https://tanchao.xyz/notes/substack-c-254757086/ Date: 2026-05-06 Last updated: 2026-05-06 Source: https://substack.com/@sprtn/note/c-254757086 一叶障目 common and easy to see the world in just one direction. try many different things and see what works vs not. think really hard. ============================================================ # 人有多大胆 地有多大产 URL: https://tanchao.xyz/notes/substack-c-252080270/ Date: 2026-05-01 Last updated: 2026-05-01 Source: https://substack.com/@sprtn/note/c-252080270 人有多大胆 地有多大产 Interestingly, as I noted before, aiming 10x vs 100x would force me to focus on quite different things. ============================================================ # The interesting fact is that good enough. URL: https://tanchao.xyz/notes/substack-c-251375743/ Date: 2026-04-30 Last updated: 2026-04-30 Source: https://substack.com/@sprtn/note/c-251375743 The interesting fact is that good _enough_. 4.6 is good, 4.7 is better but also more expensive and slower, so engineers vote with their feet. They stay with 4.6. The interesting insight is that, a capable enough model is just enough. Soon open models will catch up, inferences will compete. Coding just need enough intelligence. Business moat will stand long, not due to intelligence, but due to domain insights. ============================================================ # you cannot fool your customers, particularly when your custo… URL: https://tanchao.xyz/notes/substack-c-251020297/ Date: 2026-04-29 Last updated: 2026-04-29 Source: https://substack.com/@sprtn/note/c-251020297 you cannot fool your customers, particularly when your customers are smart. ============================================================ # It’s interesting how things developed. I felt I’m fooled, on… URL: https://tanchao.xyz/notes/substack-c-246571832/ Date: 2026-04-20 Last updated: 2026-04-20 Source: https://substack.com/@sprtn/note/c-246571832 It’s interesting how things developed. I felt I’m fooled, on something I don’t believe should be critical blocker, and I conveyed myself that if they blocked me with that then we just don’t fit. They came back to me saying that’s not a blocker, but need other strong evidence. Very interesting. Made me feel more willing to work with them. It’s good. And let’s see. Because I had prepared for failure so it’s better than expected. And I had backup plans, just not as challenging as this problem space. Let life talks and I will keep doing my best. ============================================================ # How to win AI? Don’t compete on repeatable executions for su… URL: https://tanchao.xyz/notes/substack-c-243682705/ Date: 2026-04-15 Last updated: 2026-04-15 Source: https://substack.com/@sprtn/note/c-243682705 How to win AI? Don’t compete on repeatable executions for sure; make it more powerful is anti-intuitive but very promising- that’s why I never believe in AGI in short periods; do right decisions - taste is a popular word but it’s really accurate to be popular. you can’t beat McDonald in fast food, but there are plenty of space for restaurants. ============================================================ # We learnt it already with pandemic, how cities shrink, but c… URL: https://tanchao.xyz/notes/substack-c-242798549/ Date: 2026-04-13 Last updated: 2026-04-13 Source: https://substack.com/@sprtn/note/c-242798549 We learnt it already with pandemic, how cities shrink, but capitals won’t stop. [https://arxiv.org/abs/2603.20617](https://arxiv.org/abs/2603.20617) ============================================================ # there is always 2 mindsets: 1) why they did this to me? vs 2… URL: https://tanchao.xyz/notes/substack-c-242857570/ Date: 2026-04-13 Last updated: 2026-04-13 Source: https://substack.com/@sprtn/note/c-242857570 there is always 2 mindsets: 1) why they did this to me? vs 2) why I couldn’t handle this when they did? ============================================================ # Resilience matters, many tech engineers live a competitive l… URL: https://tanchao.xyz/notes/substack-c-242908997/ Date: 2026-04-13 Last updated: 2026-04-13 Source: https://substack.com/@sprtn/note/c-242908997 Resilience matters, many tech engineers live a competitive life both in technical tasks and mental health. The tricky part is, regardless how good they solve tech challenges, the mental challenges are quite so different. When life gets harder, that not good enough is a failure; growing to conquer any problems, study harder and practice more generally solved problems, but life and mental is different, there are always better stage and never a best stage, there are no right nor final solution. At a center stage, adding self awareness and family into the success metrics. The math and risk is easier to control. May you a peaceful mind and your family be good. [https://gofund.me/62d2101b8](https://gofund.me/62d2101b8) ============================================================ # We deliver fast now. URL: https://tanchao.xyz/notes/substack-c-240822219/ Date: 2026-04-09 Last updated: 2026-04-09 Source: https://substack.com/@sprtn/note/c-240822219 We deliver fast now. But what’s should we deliver? Why? ============================================================ # I took a break. Simply because I was tired and burnt out wit… URL: https://tanchao.xyz/notes/substack-c-239932200/ Date: 2026-04-08 Last updated: 2026-04-08 Source: https://substack.com/@sprtn/note/c-239932200 I took a break. Simply because I was tired and burnt out with too many running agents. The effort to orchestrate multiple agents and fix the bugs/workflows was overwhelming, a lot. I was exhausted for quite some time that cannot process anything after work. I continue to work as usual, not off, and I recovered. The interesting thing is that mental orchestration and fixings actually cost a lot. I’m not hurrying to make a perfect system now. I thinks it’s a natural process. And it’s quite personal. ============================================================ # Truth is truth. URL: https://tanchao.xyz/notes/substack-c-234115688/ Date: 2026-03-27 Last updated: 2026-03-27 Source: https://substack.com/@sprtn/note/c-234115688 Truth is truth. Beauty is beautiful. Once they appears, nobody can deny it. Keep the eye on customer need, stay with the company’s interest, find the right function working for them. ============================================================ # The tech world will become silo. URL: https://tanchao.xyz/notes/substack-c-233455431/ Date: 2026-03-26 Last updated: 2026-03-26 Source: https://substack.com/@sprtn/note/c-233455431 The tech world will become silo. It’s so cheap to personalize tool chain and customize my own workflow. I can easily refer others best practices (as long as they share publicly) and merge into mine. Those are treasures for the future. I’m silo and will not open. Just that’s the way to keep an edge in the new world. ============================================================ # The faster I work, the more I deliver, the less churns on do… URL: https://tanchao.xyz/notes/substack-c-230623225/ Date: 2026-03-20 Last updated: 2026-03-20 Source: https://substack.com/@sprtn/note/c-230623225 The faster I work, the more I deliver, the less churns on downstream (CICD), the bottleneck is clearly on upstream now. What’s important? What’s the business value? What should I build fast next? What’s future feature building pipeline looks like? I kept joking PM is eating SDLC, now I’m going to eat product. ============================================================ # Am I working on something that’s valuable? URL: https://tanchao.xyz/notes/substack-c-229669743/ Date: 2026-03-18 Last updated: 2026-03-18 Source: https://substack.com/@sprtn/note/c-229669743 Am I working on something that’s valuable? Valuable to whom? Valuable in future? (While people say that SaaS is dead) Valuable to models? — My first impression is, they are valuable. But they are valuable only for our customers; so the presumption is the product/company still valuable that attracts customers. ============================================================ # I listened to latent space, in a frontier ai company’s engin… URL: https://tanchao.xyz/notes/substack-c-228000672/ Date: 2026-03-15 Last updated: 2026-03-15 Source: https://substack.com/@sprtn/note/c-228000672 I listened to latent space, in a frontier ai company’s engineering exercise, the proud is we are doing what they are sharing. I’m the builder of many foundations. I’m proud of what I do. ============================================================ # The Wall-E world is coming. When it comes, there will be no … URL: https://tanchao.xyz/notes/substack-c-227734973/ Date: 2026-03-14 Last updated: 2026-03-14 Source: https://substack.com/@sprtn/note/c-227734973 The Wall-E world is coming. When it comes, there will be no social network. Everyone sits on their own seat watching their own TV drinking/eating their own favorite taste all rely on robots. A central super intelligence decide who should do what. The only human useful is the captain need to make occasional decisions for the SI due to constitutional rules. Are they happy? They are. They may not be able to feel unhappy by any chance. Do they look poor? They do. If I look at them with all my experience of life. ============================================================ # Today I raised an opinion in an open chat with strangers, wh… URL: https://tanchao.xyz/notes/substack-c-226628272/ Date: 2026-03-12 Last updated: 2026-03-12 Source: https://substack.com/@sprtn/note/c-226628272 Today I raised an opinion in an open chat with strangers, when allocate tasks and if we could break down tasks at daily execution level, then we don’t dispatch to a human but AI Tool, so we don’t really need hiring intern or junior anymore. Only a few high potential, like HF are doing now. Much few people enter the SE industry in future. Someone disagreed strongly and believed the traditional talent pipeline, organically grew/filter talent (with matching experience). First, I realized I am cold, efficiency-only engineer, no empathy when talking about technical topic; Second, I realized I do have a good team who adapted changes earlier and easier, that could understand and accept changes. Third, I noticed that a good way to filter out above-the-bar companies to join, just ask their AI tooling adoption speed. ============================================================ # if you are an engineer/builder, here is my best advice as of… URL: https://tanchao.xyz/notes/substack-c-226630457/ Date: 2026-03-12 Last updated: 2026-03-12 Source: https://substack.com/@sprtn/note/c-226630457 if you are an **engineer/builder**, here is my best advice as of early 2026. your number one (or only) focus should be “**how can I be 100x**“. about one month ago, the focus was “how can I be 10x“. pause here and think about it hardly (you can skip all my other posts), think about it before you go bed, think about it again tomorrow and in the weekend. ============================================================ # The frustration is not to work calmly under the AI pressure,… URL: https://tanchao.xyz/notes/substack-c-225617316/ Date: 2026-03-10 Last updated: 2026-03-10 Source: https://substack.com/@sprtn/note/c-225617316 The frustration is not to work calmly under the AI pressure, but that you worked hard for monthly suddenly meaningless with newer model capabilities. The experience you gained also not applicable. It’s so fast, so rapid iterations. ============================================================ # So interesting that, we leverage the non-deterministic LLM t… URL: https://tanchao.xyz/notes/substack-c-223459718/ Date: 2026-03-05 Last updated: 2026-03-05 Source: https://substack.com/@sprtn/note/c-223459718 So interesting that, we leverage the non-deterministic LLM to make ourselves deterministic on specific tasks (agency). ============================================================ # As an employees, why I am capable of my current job? URL: https://tanchao.xyz/notes/substack-c-222671120/ Date: 2026-03-04 Last updated: 2026-03-04 Source: https://substack.com/@sprtn/note/c-222671120 As an employees, why I am capable of my current job? - I am a good people, that could communicate, think and learn - I am a skilled software developer, know computer science, know programming and systems - I am an experienced engineer that know best practices - I know how my company’s internal development environment setups and works - I know how my domain works Now I need build an agent on top of Cursor/ClaudeCode to do my job, what should I _not_ focus on? 1. They in charge of training the base agent to be human-like, knowledgable, can think (reason) and learn (memory+RL) 2. They tailor the CC/Cursor/Codex to be skilled in software engineering, understanding systems, languages 3. They feed the agent with experience and best practices What I should focus on? - teach them the company development environment, how system build and communicate (SDE Camp) - teach them the company software structure and architect (SDE Camp) - teach them the company domain software details (first 3-6months warm up) - train them do simple tasks (know param control, adding tests etc.) - train them design complex tasks (consider existing architect, general internal design principles…) Next, layoff me. ============================================================ # 我听着Suno里面智能生出的音乐 想起一个词 无病呻吟 想着说之前的作词作曲都是作者的思想感情 后面仔细一想 也并非如此… URL: https://tanchao.xyz/notes/substack-c-220338617/ Date: 2026-02-27 Last updated: 2026-02-27 Source: https://substack.com/@sprtn/note/c-220338617 我听着Suno里面智能生出的音乐 想起一个词 无病呻吟 想着说之前的作词作曲都是作者的思想感情 后面仔细一想 也并非如此 音乐工业也是分工合作 拿到一个曲子根据要求作词 甚至还要考虑歌手去迎合 所以其实无所谓 ============================================================ # Resilience is important. URL: https://tanchao.xyz/notes/substack-c-220027669/ Date: 2026-02-26 Last updated: 2026-02-26 Source: https://substack.com/@sprtn/note/c-220027669 Resilience is important. Skills came from practice, practice came from curiosity and action. Stay foolish, stay hungry. ============================================================ # SaaS companies that holding a primitive functionality will r… URL: https://tanchao.xyz/notes/substack-c-219057636/ Date: 2026-02-24 Last updated: 2026-02-24 Source: https://substack.com/@sprtn/note/c-219057636 SaaS companies that holding a primitive functionality will remain good. ============================================================ # What makes a leader? trust your followers. URL: https://tanchao.xyz/notes/substack-c-219131920/ Date: 2026-02-24 Last updated: 2026-02-24 Source: https://substack.com/@sprtn/note/c-219131920 What makes a leader? trust your followers. What makes an agent lead? trust your agent, grow them, help them with skills and new capabilities. TL → AL, lead an army of working agents. ============================================================ # Stay hungry, stay foolish. URL: https://tanchao.xyz/notes/substack-c-217543097/ Date: 2026-02-21 Last updated: 2026-02-21 Source: https://substack.com/@sprtn/note/c-217543097 Stay hungry, stay foolish. The new paradigm shift made everything revolutionary different from it is before. All status quo being challenged and improved. Let’s see! Let’s build! ============================================================ # It’s time for perfectionism. URL: https://tanchao.xyz/notes/substack-c-215984546/ Date: 2026-02-17 Last updated: 2026-02-17 Source: https://substack.com/@sprtn/note/c-215984546 It’s time for perfectionism. AI generates, actually flood, many good enough or close to very good content. But they cannot reach perfection, occasionally coincidentally they hit one but they couldn’t judge or hold _**one**_ taste of perfect state. I wrote good code. I architect good software. I write good design and manage tasks. But now, not only use coding assistants but perfectly, reflect my taste and my experience. ============================================================ # These AI assistants force you to be solo player. URL: https://tanchao.xyz/notes/substack-c-209561265/ Date: 2026-02-03 Last updated: 2026-02-03 Source: https://substack.com/@sprtn/note/c-209561265 These AI assistants force you to be solo player. ============================================================ # Work hard, work long, and work smart, you cannot succeed wit… URL: https://tanchao.xyz/notes/substack-c-201411482/ Date: 2026-01-18 Last updated: 2026-01-18 Source: https://substack.com/@sprtn/note/c-201411482 Work hard, work long, and work smart, you cannot succeed with 2 out of 3. This is a popular quote from JeffB. At first I thought I need to do 2 of them (allow my poor English); then I know it’s actually all 3; now I say, actually need 4th factor: luck (sometimes people call it timing). ============================================================ # the future belongs to who have dreams and don’t hesitate to … URL: https://tanchao.xyz/notes/substack-c-200779808/ Date: 2026-01-16 Last updated: 2026-01-16 Source: https://substack.com/@sprtn/note/c-200779808 the future belongs to who have dreams and don’t hesitate to try AI for their dreams and keep trying across failures. ============================================================ # Maybe only me, GOOG is actually being impacted. URL: https://tanchao.xyz/notes/substack-c-200218686/ Date: 2026-01-15 Last updated: 2026-01-15 Source: https://substack.com/@sprtn/note/c-200218686 Maybe only me, GOOG is actually being impacted. Chip business is hardware, we already learnt that’s a heavy lift than software, it might shine at the beginning, overtime this industry is just hard. Stackflow use case is telling that, no one/human access my website, but I made money by sell the data to LLM/AI access. This was the story Google/Ads told, you don’t need to advertise your website and adding it to some indexing website, I will find you for the right people and give you money. It was a market 90%+ dominated by Google. It now has at least 3 competitors and a bunch of OSS watching it (thanks to Meta/Deepseek they have a place). ============================================================ # My son asked, “am I above average at this skill?”, I told hi… URL: https://tanchao.xyz/notes/substack-c-197296558/ Date: 2026-01-09 Last updated: 2026-01-09 Source: https://substack.com/@sprtn/note/c-197296558 My son asked, “am I above average at this skill?”, I told him that metrics is not accountable, nor the result would please him. ============================================================ # optimize for people URL: https://tanchao.xyz/notes/substack-c-197303149/ Date: 2026-01-09 Last updated: 2026-01-09 Source: https://substack.com/@sprtn/note/c-197303149 optimize for people ============================================================ # Graphite claim that they are the new PR tool for AI, but to … URL: https://tanchao.xyz/notes/substack-c-197007451/ Date: 2026-01-08 Last updated: 2026-01-08 Source: https://substack.com/@sprtn/note/c-197007451 Graphite claim that they are the new PR tool for AI, but to me, AI eliminate the need of stacked PR, the reason is it code too fast… ============================================================ # engineering strength: URL: https://tanchao.xyz/notes/substack-c-196511956/ Date: 2026-01-07 Last updated: 2026-01-07 Source: https://substack.com/@sprtn/note/c-196511956 engineering strength: 1. get things done 2. try again, try hard, retry until get things done 3. regardless things are blocked by internal/external, workaround it or compromise partial, get things done. ============================================================ # I kept complaining that the infra and tools changed rapidly … URL: https://tanchao.xyz/notes/substack-c-196027546/ Date: 2026-01-06 Last updated: 2026-01-06 Source: https://substack.com/@sprtn/note/c-196027546 I kept complaining that the infra and tools changed rapidly and we have to keep eyes open in internal channels for new changes. On the other side, this is where my confidence rooted in SNOW. ============================================================ # I saw some posts around the power of vibe coding or AI tooli… URL: https://tanchao.xyz/notes/substack-c-193167649/ Date: 2025-12-30 Last updated: 2025-12-30 Source: https://substack.com/@sprtn/note/c-193167649 I saw some posts around the power of vibe coding or AI tooling from social media (outside of tech), they claim that anyone can build, simple and easy, it’s early and eventually everyone could be professionals. My first impression is really interesting, [http://xiaonei.com](http://xiaonei.com) (校内网), not sure if early Facebook also supported it, at the time it supports an iFrame that everyone could code to customize their homepage to have some fancy look. Quite similar that every college student felt that they could be CS experts — just build websites. It ends up the most technical thing majority could do is to explore the good looking templates and then copying paste exactly the same, but when everyone copying the most popular template, the specialty went away, silently no one is doing it anymore. I hated CS in the first 2-3 years after graduation with B.S. degree, I spent a week to locate a bug that I used a Chinese input dot instead of English input dot, shamefully, someone helped me to find it. There were so many times I questioned how and why I chose this major. I had to fail hard and then crawled out. I never believed that normal people would be engineers by having good tools. Just look at hardware engineering. ============================================================ # I’m so frustrated by how my echo dot cannot play my Spotify.… URL: https://tanchao.xyz/notes/substack-c-190124423/ Date: 2025-12-21 Last updated: 2025-12-21 Source: https://substack.com/@sprtn/note/c-190124423 I’m so frustrated by how my echo dot cannot play my Spotify. This simply prevents me from using it. I feel so ashamed. ============================================================ # evaluation is the king. URL: https://tanchao.xyz/notes/substack-c-188139737/ Date: 2025-12-15 Last updated: 2025-12-15 Source: https://substack.com/@sprtn/note/c-188139737 evaluation is the king. quality assurance is the critical part to enable fully AI coding. ============================================================ # Essentially I want to deal with big problems where intellige… URL: https://tanchao.xyz/notes/substack-c-186931450/ Date: 2025-12-12 Last updated: 2025-12-12 Source: https://substack.com/@sprtn/note/c-186931450 Essentially I want to deal with big problems where intelligence matters. ============================================================ # The very important strength for software engineer: know what… URL: https://tanchao.xyz/notes/substack-c-184638714/ Date: 2025-12-05 Last updated: 2025-12-05 Source: https://substack.com/@sprtn/note/c-184638714 The very important strength for software engineer: know what’s the expectation, what’s the benchmark, what’s the constraints, what are the trade-offs made, what are the “no-choices“, and higher level more importantly “any old constraints or trade-offs are gone now“. ============================================================ # OAI cannot make its auth right, that’s why I don’t use it re… URL: https://tanchao.xyz/notes/substack-c-183988631/ Date: 2025-12-04 Last updated: 2025-12-04 Source: https://substack.com/@sprtn/note/c-183988631 OAI cannot make its auth right, that’s why I don’t use it recently… simple, I don’t think Claude or Gemini is less useful, I use it just because of a habit. But now it’s so annoying that try to cancel subscription from Apple but switch to its website subscription, it’s shady and ugly. ============================================================ # customers are always right. URL: https://tanchao.xyz/notes/substack-c-178994097/ Date: 2025-11-19 Last updated: 2025-11-19 Source: https://substack.com/@sprtn/note/c-178994097 customers are always right. customer never need educate, if they misuse or misunderstood, it means our product is not intuitive enough. never educate customer, solve their problem without question, listen to them, think as them, do for them. ============================================================ # I’m Chinese. URL: https://tanchao.xyz/notes/substack-c-175892190/ Date: 2025-11-11 Last updated: 2025-11-11 Source: https://substack.com/@sprtn/note/c-175892190 I’m Chinese. It’s very strange that I owned 3 houses but never thought they will be my _forever_ house. It’s like I knew it was just one stop house. When I read the _final_ letter, he mentioned he owned first and only house since 1958. Kind of resonate. If I can and only one house, what would I choose? ============================================================ # It’s just better. It’s faster, cheaper, able to do something… URL: https://tanchao.xyz/notes/substack-c-174486012/ Date: 2025-11-07 Last updated: 2025-11-07 Source: https://substack.com/@sprtn/note/c-174486012 It’s just better. It’s faster, cheaper, able to do something that others cannot do, it’s simpler. ============================================================ # I heard the podcast, the conviction was not there. URL: https://tanchao.xyz/notes/substack-c-174718457/ Date: 2025-11-07 Last updated: 2025-11-07 Source: https://substack.com/@sprtn/note/c-174718457 I heard the podcast, the conviction was not there. Someone came to a design review and stated that the system will be 100x faster, which is ambitious and exciting, then I’d ask technical details how they achieve that. They cannot just argue that “trust me bro“, or “if you don’t sign-off this design I don’t need you to be reviewer, and of course you will no be on my launch thanks list“. My engineering integrity will just push myself away from such design review. ============================================================ # Improvements normally come from more granular observations. URL: https://tanchao.xyz/notes/substack-c-173328868/ Date: 2025-11-04 Last updated: 2025-11-04 Source: https://substack.com/@sprtn/note/c-173328868 Improvements normally come from more granular observations. My son is learning swim, our new target is to reduce 10% time, it sounds like unrealistic and have to wait for him to grow up and hopefully everything happens automatically for the bigger boy. I discussed with him and compared others’ videos, we located several places that we could crawl some time, jump start, turn, streamline, each of them might give 1 or half seconds, looks like there is a concrete 5% space we discovered just with this first exercise - look closer. I have been proud of my technical strength in e2e dynamic system scaling, reliable, and performance per cost efficiency. All started with good dashboard, then more granular observations. 0-1 requires innovation, paradigm shift requires learn and speed, crafting an existing system, normally just need someone persistently working on small granular improvements. ============================================================ # Don’t be angry at work, different team have different perspe… URL: https://tanchao.xyz/notes/substack-c-172160837/ Date: 2025-10-31 Last updated: 2025-10-31 Source: https://substack.com/@sprtn/note/c-172160837 Don’t be angry at work, different team have different perspectives, let the process flow. (I’m good at corp work now, must leave) ============================================================ # I’m no longer interested in the big corp set up but find my … URL: https://tanchao.xyz/notes/substack-c-170375409/ Date: 2025-10-26 Last updated: 2025-10-26 Source: https://substack.com/@sprtn/note/c-170375409 I’m no longer interested in the big corp set up but find my passion for an environment to keep building crafts. In tech industry, a craft needs to be either advanced in technology, or fastest, or most efficient, or most cost effective, or simplest. In industry world the simple is not about the architecture, but the maintenance and operational costs etc. The piece speaks for itself. ============================================================ # Many PM or leadership have good ideas, or learn from competi… URL: https://tanchao.xyz/notes/substack-c-169407769/ Date: 2025-10-23 Last updated: 2025-10-23 Source: https://substack.com/@sprtn/note/c-169407769 Many PM or leadership have good ideas, or learn from competitors, but not all “looks obvious right” and “definitely valuable to our customers” are correct. The reason is still, we don’t have full data, we cannot get full feedback, we are not domain expert (up to date). Specially as a platform, we cannot create something that works perfectly for every customers, and most of time if it works perfectly for one or two customers it would not act enough for most customers. “Are Right A Lot”, I learnt it as I joint Amazon 10 yrs ago, but I really practically learn it at Snowflake. I have to hold one opinion, and I have to study the evidences why that opinion holds itself, and sometimes that opinion are not for technical correctness/beauty, not purely for logic correctness either, but the most generic good enough option for majority of our valuable customers. ============================================================ # I got a HR call, a good brand, however I got bored just in t… URL: https://tanchao.xyz/notes/substack-c-168476246/ Date: 2025-10-21 Last updated: 2025-10-21 Source: https://substack.com/@sprtn/note/c-168476246 I got a HR call, a good brand, however I got bored just in that call. Their focus was on 1) what level are you in and which level are you for; 2) what skills do you have what positions are a good fit. I got bored because I heard the attention was all around “fill in the structure”. Something amazed me at Snowflake was the flexibility of shifting the focus of a team to work on what’s important for the organization. The flexibility that anyone could fix everyone’s problems. So I really want to join a place where the attention is on the problem and product. Not level and match. I don’t care them, or significantly less on levels/domains, if I am solving the right and hard problems. ============================================================ # Things are changing rapidly, ai code assistant, ai review as… URL: https://tanchao.xyz/notes/substack-c-168686260/ Date: 2025-10-21 Last updated: 2025-10-21 Source: https://substack.com/@sprtn/note/c-168686260 Things are changing rapidly, ai code assistant, ai review assistant, ai ops assistant… ============================================================ # Note the people complaining about, they care and they are no… URL: https://tanchao.xyz/notes/substack-c-167556571/ Date: 2025-10-18 Last updated: 2025-10-18 Source: https://substack.com/@sprtn/note/c-167556571 Note the people complaining about, they care and they are not satisfied with current state quo. They have an anger, in some sense eager, to change something to be better. Are they focus on what’s good for themselves? For their smartness? Or for the organization good? Do they stop at talking about sh_t or trying to clean the sh_t? ============================================================ # Work for the professionals who is willing to pay more to gai… URL: https://tanchao.xyz/notes/substack-c-166970106/ Date: 2025-10-16 Last updated: 2025-10-16 Source: https://substack.com/@sprtn/note/c-166970106 Work for the professionals who is willing to pay more to gain an edge advance. For example, elementary teachers doesn’t have this need, elementary math coaches need this, they are willing to pay, probably xx$ for it. Software engineers, \*\*\*$ per month? Dentist or clinics, xxxx$? Find the real margin business first. ============================================================ # Would Spotify beat YouTube? URL: https://tanchao.xyz/notes/substack-c-166980600/ Date: 2025-10-16 Last updated: 2025-10-16 Source: https://substack.com/@sprtn/note/c-166980600 Would Spotify beat YouTube? Would Substack beat Spotify? Who creates the content? Who gets the biggest cut of the content? What’s the fairness to creators and consumers? What’s the fair share for the platform? Are consumers part of the platform? ============================================================ # Having access to too much info is bad, data mining itself is… URL: https://tanchao.xyz/notes/substack-c-166103480/ Date: 2025-10-14 Last updated: 2025-10-14 Source: https://substack.com/@sprtn/note/c-166103480 Having access to too much info is bad, data mining itself is really really hard. I have to cut off my newsfeed meaningfully. 三十而立 四十不惑 it’s time for me to focus on less things, keep learning but only in this space. Maybe, metadata layer in AI Data stack. ============================================================ # people love to innovate, instead of KISS. URL: https://tanchao.xyz/notes/substack-c-166284302/ Date: 2025-10-14 Last updated: 2025-10-14 Source: https://substack.com/@sprtn/note/c-166284302 people love to innovate, instead of KISS. for example, before COVID19, software engineer interviews often requires an “onsite” round; during the pandemic, this turns to be “virtual onsite“; now when everyone returns to office, and we invite the engineers to onsite again, it’s called “in-person onsite“. well, onsite became a higher abstraction layer now. ============================================================ # determine my metrics. URL: https://tanchao.xyz/notes/substack-c-165986967/ Date: 2025-10-13 Last updated: 2025-10-13 Source: https://substack.com/@sprtn/note/c-165986967 determine my metrics. in career growth, am i optimize for ROI? Speed in career ladder? growth in techniques? or else? if determined, how do I define the current benchmark and goal? 1yr, 3yr? 10yr? what are the input for the metrics? am i doing them now? ============================================================ # The extreme opportunity comes with not only the low price bu… URL: https://tanchao.xyz/notes/substack-c-165163086/ Date: 2025-10-11 Last updated: 2025-10-11 Source: https://substack.com/@sprtn/note/c-165163086 The extreme opportunity comes with not only the low price but the over-react risk. If you could keep your liquidity until then. ============================================================ # There 2 strategies of running businesses: 1 focus on marketi… URL: https://tanchao.xyz/notes/substack-c-163653494/ Date: 2025-10-06 Last updated: 2025-10-06 Source: https://substack.com/@sprtn/note/c-163653494 There 2 strategies of running businesses: 1 focus on marketing and advertising, as long as people are willing to pay for the product, the rest is minor; 2 focus on production, as long as the process of building the goods is efficient, people are willing to buy them because of price/quality. Lots of my personal values and principles were grown at Amazon, so definitely I believe in the 2nd strategy more and focus on skills that improve efficiency. ============================================================ # It’s really interesting to see how cursor let sales engineer… URL: https://tanchao.xyz/notes/substack-c-163675566/ Date: 2025-10-06 Last updated: 2025-10-06 Source: https://substack.com/@sprtn/note/c-163675566 It’s really interesting to see how cursor let sales engineers to teach engineers. ============================================================ # A leader, first of all, and most important, has a habit to l… URL: https://tanchao.xyz/notes/substack-c-162774356/ Date: 2025-10-04 Last updated: 2025-10-04 Source: https://substack.com/@sprtn/note/c-162774356 A leader, first of all, and most important, has a habit to lead. Essentially, they have a taste of “good“, they have a strong opinion on the right tenets, they proactive lead the tech and engineers, they influence the product decisions and leadership strategies. ============================================================ # Think of the n00b tasks that you want a new joiner to wrap u… URL: https://tanchao.xyz/notes/substack-c-162689953/ Date: 2025-10-03 Last updated: 2025-10-03 Source: https://substack.com/@sprtn/note/c-162689953 Think of the n00b tasks that you want a new joiner to wrap up with, they are the right targets for Cursor/CC to work at scale. ============================================================ # “knowing what to do” vs. “actually do it”, there is a big ga… URL: https://tanchao.xyz/notes/substack-c-158733983/ Date: 2025-09-22 Last updated: 2025-09-22 Source: https://substack.com/@sprtn/note/c-158733983 “knowing what to do” vs. “actually do it”, there is a big gap there. particularly in the hard situation, there are so many reasons and situations that prevent people from doing what is right. i’m one of the normal people. that’s why intentional practice is important, habit and mechanism are the real trustworthy things, than people. ============================================================ # the mortgage company sent a survey that I won’t answer. they… URL: https://tanchao.xyz/notes/substack-c-158743086/ Date: 2025-09-22 Last updated: 2025-09-22 Source: https://substack.com/@sprtn/note/c-158743086 the mortgage company sent a survey that I won’t answer. they knew the answer but still holds a hope. the low interest rate locked a large portion of mortgages that won’t liquid for a long time. when I look at the housing market now, i won’t swap my mortgage, meaning I won’t sell my house for a new house, I’d only consider keep the low-interest mortgage and look for new. that’s also means I have less buying power, and delay my decision - won’t buy new house for a long time. ============================================================ # When thinking about future, I kept memorizing the WallE, tha… URL: https://tanchao.xyz/notes/substack-c-157704422/ Date: 2025-09-19 Last updated: 2025-09-19 Source: https://substack.com/@sprtn/note/c-157704422 When thinking about future, I kept memorizing the WallE, that’s what Jobs saw and believed. When intelligence really become a thing, the impact is on knowledge workers only. While the majority of people are physical workers. Self driving car → free drivers → impact business delivery fleet. Home robots → WALL·E itself is a garbage cleaner. → Dirty, fixed process, low margin. ============================================================ # Be careful on the metric shift. URL: https://tanchao.xyz/notes/substack-c-157767313/ Date: 2025-09-19 Last updated: 2025-09-19 Source: https://substack.com/@sprtn/note/c-157767313 Be careful on the metric shift. It used to be a solid chain contribute to really important things. However the organization itself could find ways to chase the easier metrics. Once it starts, it’s hard to see the real harm immediately. But, in a long run, the resource mis allocation will be apparent. It’s interesting that you can only in it to observe the shift. ============================================================ # Keep the OG for full context and guide, otherwise the same d… URL: https://tanchao.xyz/notes/substack-c-156343152/ Date: 2025-09-15 Last updated: 2025-09-15 Source: https://substack.com/@sprtn/note/c-156343152 Keep the OG for full context and guide, otherwise the same design decision might be revisited again and again. Or keep the decision document complete and discoverable. ============================================================ # When do you know that you are right? Turn the problem into a… URL: https://tanchao.xyz/notes/substack-c-155362896/ Date: 2025-09-12 Last updated: 2025-09-12 Source: https://substack.com/@sprtn/note/c-155362896 When do you know that you are right? Turn the problem into a math problem, then prove it. ============================================================ # The real question is, which one has deeper moat? Nvidia or O… URL: https://tanchao.xyz/notes/substack-c-154658117/ Date: 2025-09-11 Last updated: 2025-09-11 Source: https://substack.com/@sprtn/note/c-154658117 The real question is, which one has deeper moat? Nvidia or OpenAI? ============================================================ # As I grew a lot at Amazon, being a Principal Engineer was my… URL: https://tanchao.xyz/notes/substack-c-154411697/ Date: 2025-09-10 Last updated: 2025-09-10 Source: https://substack.com/@sprtn/note/c-154411697 As I grew a lot at Amazon, being a Principal Engineer was my career goal. While I also noticed and observed that the non-practical principals are causing the real damages. They might focus too much on being right, on their behavior instead of the product behavior. They might be cautious and move slower. They might be addicted to RCA, which again is right thing, but spent lots of effort to prove something is not worth the effort. They are at an age when Play Safe is the smartest choice. Keep a record for me to revisit after few years. ============================================================ # I don’t agree with daily stand-ups. Waste of individual time… URL: https://tanchao.xyz/notes/substack-c-154151339/ Date: 2025-09-09 Last updated: 2025-09-09 Source: https://substack.com/@sprtn/note/c-154151339 I don’t agree with daily stand-ups. Waste of individual time for supervisors to gain little benefit. I don’t want to work in any team requires that. ============================================================ # I’m more confident on my judgement now. URL: https://tanchao.xyz/notes/substack-c-151852697/ Date: 2025-09-03 Last updated: 2025-09-03 Source: https://substack.com/@sprtn/note/c-151852697 I’m more confident on my judgement now. Seeing it doesn’t mean able to joining it tho. ============================================================ # What are the real important things? What’s my current tenets… URL: https://tanchao.xyz/notes/substack-c-150539697/ Date: 2025-08-29 Last updated: 2025-08-29 Source: https://substack.com/@sprtn/note/c-150539697 What are the real important things? What’s my current tenets? It’s so hard to conduct some deep thinking now. Lack of knowledge, lack of confidence. What’s AI change/shape the world in 5 years? ============================================================ # Simple stupid, CitiBank. URL: https://tanchao.xyz/notes/substack-c-149182885/ Date: 2025-08-26 Last updated: 2025-08-26 Source: https://substack.com/@sprtn/note/c-149182885 Simple stupid, CitiBank. As a customer, I try to add it on my Apple Wallet, I tried several times, need my card handy, need my phone handy, mobile network right, making the call to verify, and security questions, and at last, sorry your phone cannot receive message. LMAO, I just set up the BofA card on my iPhone, so smoothly. Just bye bye City. I don’t need use it. Again, another business I say NO forever. In Chinese, there is a phrase “见微知著”, either they sucks in mobile adoption, or too much constraints in mobile payment, it’s just outdated. No future. ============================================================ # How confident you are on AI coding? URL: https://tanchao.xyz/notes/substack-c-147009212/ Date: 2025-08-19 Last updated: 2025-08-19 Source: https://substack.com/@sprtn/note/c-147009212 How confident you are on AI coding? How confident you are in customized AI coding workflow? How confident you are that AI followed the workflow? How confident you are on the workflow? How confident you are on yourself who designed that workflow? ============================================================ # The beauty speaks for itself. URL: https://tanchao.xyz/notes/substack-c-147043619/ Date: 2025-08-19 Last updated: 2025-08-19 Source: https://substack.com/@sprtn/note/c-147043619 The beauty speaks for itself. — I am crafting, and how do I know I’m not just building? ============================================================ # There are lots of things that are right to do; but they are … URL: https://tanchao.xyz/notes/substack-c-145135278/ Date: 2025-08-13 Last updated: 2025-08-13 Source: https://substack.com/@sprtn/note/c-145135278 There are lots of things that are right to do; but they are not must do. It’s easy to invest into the right things, but the ROI does not worth it. ============================================================ # Business is business, business man doesn’t sale goods, they … URL: https://tanchao.xyz/notes/substack-c-143589603/ Date: 2025-08-09 Last updated: 2025-08-09 Source: https://substack.com/@sprtn/note/c-143589603 Business is business, business man doesn’t sale goods, they sale stuffs that make profits. There needs to be margin to allow different parties profit from it. You see advertisements not because they are good, but because they have big enough margin to advertise. ============================================================ # Vibe is dangerous. URL: https://tanchao.xyz/notes/substack-c-143545072/ Date: 2025-08-08 Last updated: 2025-08-08 Source: https://substack.com/@sprtn/note/c-143545072 Vibe is dangerous. Easily lost track of my own ability to think fast and lean. ============================================================ # I’m angry because I lost interest to fix things, I started c… URL: https://tanchao.xyz/notes/substack-c-143244153/ Date: 2025-08-07 Last updated: 2025-08-07 Source: https://substack.com/@sprtn/note/c-143244153 I’m angry because I lost interest to fix things, I started complaining instead. I’m angry because I cannot fix things. I’m angry because things are not working as expected. I’m angry that I worked late hours and pushed hard but failed to get it in. I’m angry, but no one cares. ============================================================ # If I have to quantify an engineering org, here are the top m… URL: https://tanchao.xyz/notes/substack-c-142831360/ Date: 2025-08-06 Last updated: 2025-08-06 Source: https://substack.com/@sprtn/note/c-142831360 If I have to quantify an engineering org, here are the top metrics: - time to spin up a dev environment from scratch - circle time to redeploy changes and run tests - CI time to validate a change - CD time to release a change - time to add metrics and able to monitor - change management effort and observations ============================================================ # explain code, explain tools, explain runbook process, explai… URL: https://tanchao.xyz/notes/substack-c-141137867/ Date: 2025-08-01 Last updated: 2025-08-01 Source: https://substack.com/@sprtn/note/c-141137867 explain code, explain tools, explain runbook process, explain human triage process → rule based agent. how it happens automatically? ============================================================ # I can easily tell whether a person is trying hard to solve a… URL: https://tanchao.xyz/notes/substack-c-140634732/ Date: 2025-07-31 Last updated: 2025-07-31 Source: https://substack.com/@sprtn/note/c-140634732 I can easily tell whether a person is trying hard to solve a problem; or, they just tried casually and finished their duty. From a personal aspect, that’s fair to do what I got paid for. From a growth aspect, that’s slow mode. ============================================================ # You wait for next big wave, it’s chaos, the coming wave migh… URL: https://tanchao.xyz/notes/substack-c-140830126/ Date: 2025-07-31 Last updated: 2025-07-31 Source: https://substack.com/@sprtn/note/c-140830126 You wait for next big wave, it’s chaos, the coming wave might offset by other drawbacks, the big wave might mitigate when it gets closer, it requires patience, sometimes a big drain happens first and happen to ride the next wave, then it becomes a “big” wave, to be fair, it’s not absolute BIG, but it’s relatively big when it happens. I kept thinking about this. ============================================================ # Nice, so instead of X I can publish here with my own space. … URL: https://tanchao.xyz/notes/substack-c-140523341/ Date: 2025-07-30 Last updated: 2025-07-30 Source: https://substack.com/@sprtn/note/c-140523341 Nice, so instead of X I can publish here with my own space. 88 X. ============================================================ # The “trust” problem. URL: https://tanchao.xyz/notes/substack-c-140526100/ Date: 2025-07-30 Last updated: 2025-07-30 Source: https://substack.com/@sprtn/note/c-140526100 The “trust” problem. The trade off between _restrictions_ and _user\_\_experiences_; and the balance among consumers, content creators, tool(model) providers, platform owners; are the product challenges. The realtime check and keep it up to date with an async algorithm/model refresh, the observability and auditing of an judgement, the life circle management of an event, on top of a high volume low latency distributed system; are the technical challenges. There are lots of fun. ============================================================ # First note URL: https://tanchao.xyz/notes/2025-05-17-init-note/ Date: 2025-05-17 Last updated: 2025-05-17 My son really likes cheddar better than jack.