Skip to content

Instantly share code, notes, and snippets.

@bricker
bricker / amznymous.md
Last active April 23, 2024 11:14
An Amazon Programmer's Perspective (http://pastebin.com/BjD84BQ3)

Originally posted at http://pastebin.com/BjD84BQ3

Trigger warning: mention of suicidal ideation

tl;dr: I burned out as a developer at Amazon at the end of my second year. I’ve since found a healthy and sustainable work-life balance and enjoy work again. I write this to A) raise awareness, especially for new-hires and their families, and B) help give hope and advice to people going through the same at Amazon or other companies.

Hello, world

There’s been no shortage of anecdotes, opinions, and rebuttals regarding Amazon’s corporate culture as of late. I write this not to capitalize on the latest news-feed fad, but to share what I had already written and promptly deleted. I didn’t think anyone would want to hear my story, but it’s apparent people are going through a similar experience and don’t have a voice.

I’m a Software Development Engineer II at Amazon; SDE II basically means a software developer with at least 2–3 years of industry experience. I started at Amazon as an SDE I.

In Ruby 2.7, an explicit Hash (with curly braces) as the last argument is implicitly converted to kwargs.

In Ruby 3.0+, an explicit Hash (with curly braces) as the last argument is treated as a Hash literal, and can't be parsed as kwargs.

import Foundation
import UIKit
class ConstraintTransaction {
private var constraints: [Constraint] = []
func add(_ constraint: Constraint) {
constraints.append(constraint)
}
import UIKit
class ConstraintDSL {
private let view: UIView
private var chain: [NSLayoutConstraint] = []
init(_ view: UIView) {
self.view = view
}
// Define Provider Protocols
protocol NetworkProvider {
var networkingService: NetworkServiceProtocol
}
protocol LoggingProvider {
var loggerService: LoggerServiceProtocol
}
protocol ConfigurationProvider {
const Promise = require('bluebird');
const fs = require('fs');
const LineByLine = require('n-readlines');
const { promisify } = require('util');
const exec = promisify(require('child_process').exec);
const filesWithoutExtension = [
'Podfile',
'Mintfile',
].reduce((acc, f) => { acc[f.toLowerCase()] = true; return acc; }, {}); // Convert to Set with lowercased filenames.
/**
JSONPrimitive represents any Swift type which can be interchanged with a primitive
JSON type. Use this protocol instead of `Any` when dealing with JSON data.
*/
public protocol JSONPrimitive {}
/**
Int is excluded here because JSON only has one "type" for numbers,
so we always use Double to avoid lossy conversion.
*/
extension JSONValue {
public var value: JSONPrimitive? {
switch self {
case .object(let value): return value
case .array(let value): return value
case .string(let value): return value
case .number(let value): return value
case .boolean(let value): return value
case .null: return nil
public enum JSONValue {
case object([String: JSONValue])
case array([JSONValue])
case string(String)
case number(Double)
case boolean(Bool)
case null
public var value: JSONPrimitive? {
public enum JSONValue {
case object([String: JSONValue])
case array([JSONValue])
case string(String)
case number(Double)
case boolean(Bool)
case null
}