TrentonZero's Thoughts
Archive
Links
Pages
Tags
GH
150 Things Every Software Engineer Should Know
0(n log n)
How to hash a data structure
When to use a hashmap
When to use an array
When
not
to use an array
[1..100].map(addOne)
[1..100].reduce(sum)
Why you can’t string append in a loop
That the next time after 1:59 is not 2:00
Why “float accountBalance = 100.32” is a bug
How to write a recursive algorithm
When to write a recursive algoritm
What tail call optimization is
How a compiler works
O(1)
Why was OO invented?
Why do some engineers hate LISP?
Why do some engineers swear by LISP?
Why do some engineers hate OO?
Why do some engineers swear by OO?
How to switch between normal and insert mode in Vi
How to save in Vi
Why is there are a long-running flame war between vi and emacs
What is the visitor pattern
How does a buffer overflow exploit work
What does a buffer overflow exploit look like in code
How does garbage collection work
How does double buffering work
How does DNS work
What it feels like when it is harder than it should be
What does cyclomatic complexity measure?
Why does high cyclomatic complexity imply buggy code?
How to spot buggy code using only whitespace
Why do some engineers swear by spaces?
Why do some engineers swear by tabs?
How to debug with a rubber ducky
What is TCP and why would you use it?
What is UDP and why would you use it?
What is a password salt and why do you use it?
How do random number generators work?
When to build a graph?
What happens when you git rebase?
When happens when you git merge?
What is fast-forward in git?
What really happens when you revert a merge commit in git?
Why are the estimates always wrong?
What is the million-man-hour myth?
Which side of the modal dialog the cancel button goes on
When
not
to show a modal dialog
What is a screen reader
How do you implement and train a neural network
An algorithm that sorts in less than O(n
2
)
How to sort a binary tree
What features allow NoSQL databases to scale horizontally better than SQL databases
What features do NoSQL databases sacrifice from SQL databases
ACID vs BASE
How deadlocks happen
What Turing Completeness proves
What it doesn’t prove
Dependency injection
The two generals problem
How much latency feels instantaneous
how much latency feels fast
slow
how much latency before the user gives up
why you never run a cron job every five minutes in a distributed system
that the user doesn’t know what he wants
how to tell what the user actually wants
what your boss really wants
the cost of your program crashing
what a new user sees when he starts your program
what your grandmother sees
how to explain why a feature is difficult or impossible in words an MBA can understand
in words your grandmother can understand
in words an arrogant junior engineer can understand
what each of these people really wants when they ask for the impossible feature
that easy-to-learn tools usually increase project complexity
that hard-to-learn tools usually decrease project omplexity
why hardware manufacturers invest billions in open source
how Bill Gates made his billions
the business model of a successful open source product
what marginal cost says about software as a business
what marginal cost says about open source software
why most of the highest quality software in the world costs $50-$200 per license.
why the lowest quality software in the world costs $1,000-$100,000 per license.
when to ask for help
when to add a third party dependency
when to roll your own
when to ignore the contractor
and when to defer to her
grep
grep -v
what Chesterton’s fence says about legacy code
Be fluent in a dynamically typed language
…a statically typed language
…an object oriented language
…a functional language
…a scripting language
C
LISP macros
how to implement a hobby language of each of these types in C
what it feels like to return to bad code after 6 months away
what the web is like at 56k
what the web is like on a screen reader
why regex cannot model XML
Each type of SQL join
its performance
its treatment of missing data
that Object-Relational mapping is impossible
That sometimes impossible things are worth almost doing
Nothing is easy
You need sleep to live
Your skills are probably worth more than you think
That engineers are taken out and shot at 40
How and when to optimize for CPU cycles
How and when to optimize for memory
How and when to optimize for latency
That usually it’s best not to optimize at all
How to optimize for free time
How to optimize for family
How to optimize for low bug counts
How to ask for a raise
How and why to avoid a bad software team
You need exercise to live
That you will desperately want a non-computer hobby by your mid-30s.
All that stuff about good computer posture applies to you.
The Gang of Four Design Patterns
The Unix Philosophy
Why engineers still use tools written the Unix way decades later
Why everything for end-users written the Unix way is dead and bankrupt.
What you sound like as a bright young engineer to the old timers
What the old timers sound like to a bright young engineer.
Why it seems like marketing never does any work
Why your blue-collar cousin thinks you don’t do any work
Why so many engineers hate Java
Why so many businesses use Java
What an architecture astronaut is
What a network effect is
Commodification
Promises
How to search a 100kb file for a string?
A 2 terabyte file
In ISO-8859-1
How to ensure only one copy of your program is running
Why email isn’t secure
The implications of the major open source licenses for commercial software development
What a Heisenbug is
How to debug it
How to avoid it
What a race condition is and what it looks like in code.
A bonus one: That much intelligent behavior can be emulated with a heuristic that simply maximizes the number of available actions next tick.
( This was inspired by
“Two Hundred and Fifty Things an Architect Should Know” by Michael Sorkin
)
« At The Duck Pond
Fat Nerd »
Archive
Please enable JavaScript to view the
comments powered by Disqus.