Act with Prudence take extra care to avoid tech debt if you must accrue it, track cost appropriately Apply Functional Programming Principles learn to apply functional principles to make your code simpler and easier to debug Ask, “What Would the User Do?” (You Are Not the User) the user may not think like you best… Continue reading 97 Things Every Programmer Should Know
Designing Data-Intensive Applications
Reliable, Scalable, and Maintainable Applications Intro applications today more data-intensive than compute intensive need to store data (dbs), remember expensive operations (cache), allow users to search (indexes), send a message to another process async (stream processing), periodically crunch a large amount of data (batch) Thinking About Data Systems wide-ranging requirements handled by stitching different tools… Continue reading Designing Data-Intensive Applications
Working Effectively with Legacy Code
Changing Software Four reasons to change software adding a feature fixing a bug improving design optimizing resource usage Adding features and fixing bugs some argue whether something is a bug fix vs feature more important distinction is behavior i.e. adding or changing Improving Design (Refactoring) keep behavior intact programmers avoid because easy to lose behavior… Continue reading Working Effectively with Legacy Code
Programming in Scala
A Scalable Language Intro “scalable language” mix of oop and fp flexible: good for scripts or complex systems A language that grows on you feel of modern scripting language can extend and adapt library abstractions like bazaar: designed and extended by users can define classes that look like built-in types e.g. BigInt can build customized… Continue reading Programming in Scala
Building Microservices
Microservices Intro Emerged in context of domain driven design, CI/CD, on-demand virtualization, infrastructure automation, small autonomous teams, systems at scale more flexibility to respond faster is goal What are microservices? small autonomous services that work together service boundaries based on business boundaries shouldn’t be too big (~2 weeks to rewrite) separate entities ideally own own… Continue reading Building Microservices
Problem Solving 101
Problem Solving Kids Basics problem solvers constantly try to pro-actively shape their environment you can learn to think, make decisions, act and be proactive it is a skill and habit different types of people miss sigh: easily gives up and is terrified of failing mr critic: shoots down other ideas, but doesn’t actually get stuff… Continue reading Problem Solving 101
The Pragmatic Programmer
A Pragmatic Philosophy Intro think about big picture context lets you know how good software needs to be you work with people so communicate! The cat ate my source code Don’t be afraid to admit ignorance or error Must actively agree to responsibility but will be held accountable Should nota agree if impossible or extremely… Continue reading The Pragmatic Programmer
What We Actually Know About Software Development, and Why We Believe It’s True
Notes from talk have high standards when evaluating new methodologies / look for citations 10-100x developer study based on a small number of developers in the 60’s newer study looked at ~50 and each person for less than 1 hour Lutz Prechelt has done many studies here Study has shown errors correlated to lines of… Continue reading What We Actually Know About Software Development, and Why We Believe It’s True
Hammock Driven Development
Notes from talk fixing at design stage is much cheaper than at development stage most important thing is solving the problem must understand the problem to solve it so ask questions restate the problem similar problems have been solved look at those solutions critically evaluate trade offs can only store about 5-9 things in your… Continue reading Hammock Driven Development
Design Patterns in Ruby
Building Better Programs with Patterns people develop solutions for common problems in all domains GOF popularized idea of prepackaged solutions and defined 23 patterns Separate things that change from things that don’t change is given ideally changes are local and don’t require updates everywhere Program to an interface not an implementation polymorphism decouples code is… Continue reading Design Patterns in Ruby