Slide 1

Slide 1 text

Endurance This talk isn't necessarily the path for everyone, but it describes the path I personally take. It is my mantra–my manifesto for the work I do and how I think about it. It has changes somewhat throughout the years, but surprisingly slowly.

Slide 2

Slide 2 text

Improving I'm going to start with self improvement, because it's the most general and the rest of what I'm going to say builds off of it. Many of us start out with a very simple set of skills, and a desire to achieve things that will only be possible by improving our skills.

Slide 3

Slide 3 text

Priorities To improve yourself, it needs to be a priority. This may sound passé, but you may honestly not have time for it. If your 9–5 job doesn't offer you opportunities for improvement, you will need to find time. You need to honestly self-assess whether this is possible. You may need to find a job that prioritizes self-improvement.

Slide 4

Slide 4 text

The Edge of Your Capabilities Work on things that are slightly harder than what you already know how to do. If you do this relentlessly, you will be constantly pushing the boundaries of what you know. If you only ever work on something in your comfort zone, you can spend 10 years doing the same thing over and over again, and never really improve.

Slide 5

Slide 5 text

• Hack on Rubinius • Templating Engine Compiler • Library internals • Performance • Encodings • Ruby C extensions • Ruby Rust extension • Elixir web framework • Package manager • Build tools • Web standards

Slide 6

Slide 6 text

Comfort Zone

Slide 7

Slide 7 text

Open Source

Slide 8

Slide 8 text

Bootstrapping When I first started programming, I tried to improve by reading books and working on personal projects. But it doesn't really work.

Slide 9

Slide 9 text

Help & Mentorship You really need the mentorship of project leaders and help from other people who are climbing the mountain with you.

Slide 10

Slide 10 text

"Simple" Things Santiago warnings story. Getting a full build set up is harder than it looks for most projects. Separate "getting up and running" from your first hard task.

Slide 11

Slide 11 text

Grow by Teaching Eventually, you'll be helping and mentoring other people, which is another level of learning. Teaching is very humbling. It shows you the gaps in understandability.

Slide 12

Slide 12 text

Feedback Putting your code out there is a great way to get feedback.

Slide 13

Slide 13 text

Feedback & Criticism

Slide 14

Slide 14 text

Don't Ignore It Don't ignore criticism. It can help you identify places where people are getting confused or otherwise falling off the wagon. It helps you identify where your conceptual model doesn't map onto your users.

Slide 15

Slide 15 text

Grain of Salt But take criticism with a grain of salt. People don't always know what they're complaining about.

Slide 16

Slide 16 text

Friends and Long Walks

Slide 17

Slide 17 text

Diminishing Returns from Hacking When trying to solve hard problems, the type of problems you will need to work on to improve, you get diminishing returns from simply hacking. You need to step back and rethink the big picture of the problem.

Slide 18

Slide 18 text

Walk I personally walk about an hour a day with Tom these days to discuss issues that have been bugging us that we're stuck on.

Slide 19

Slide 19 text

• Technical • Social • Strategic

Slide 20

Slide 20 text

Low Times Having someone to talk to you when times are low is very important, especially in a field so dominated by the Internet. You need someone to remind you that unhappy users complain much more than happy users praise.

Slide 21

Slide 21 text

"Kernel of Truth" It's also useful to have someone with you to help you suss out the kernel of truth in the criticism you receive. Talking to another person lets you be honest with yourself without getting depressed.

Slide 22

Slide 22 text

Walk by Yourself I walk by myself often on the weekends in a park for a few hours. Disconnect (or listen to music). This will help you find coherence in things that have been tumbling around.

Slide 23

Slide 23 text

Hard Problems

Slide 24

Slide 24 text

The First Solution is Rarely the Right One

Slide 25

Slide 25 text

Research is Useful If you're working on a hard problem, do your research first. Understand the state of the art. Example: bundler and SAT solving

Slide 26

Slide 26 text

Put it Out There Ultimately, the only really good way to hone in on a good solution is to put something out there and wait for feedback. You should expect a lot of user complaints about the first thing you build.

Slide 27

Slide 27 text

big picture little picture experience experience

Slide 28

Slide 28 text

Early Criticism is a Gold Mine Focus on refinement! Bundler 0.8 Ember Router v1 Ember Data Don't get too connected to your first implementation. It will probably be completely replaced by the time you've collected feedback from early users. You need to be very open to changing large parts of your ideas, especially around the mental model that your users will have.

Slide 29

Slide 29 text

Meet People Meet people in person. You'll get far better feedback and criticism than on the Internet.

Slide 30

Slide 30 text

Dog Food Always use the software you write.

Slide 31

Slide 31 text

Dog Food, But Understand the Limitations But if you're writing something general purpose, don't assume that your use-cases are the only use-cases.

Slide 32

Slide 32 text

Synthesis

Slide 33

Slide 33 text

• Things that are the same • Things that are trivially similar • Things that are similar • Things that are different

Slide 34

Slide 34 text

• Things that are the same • Things that are trivially similar • Things that are similar • Things that are different

Slide 35

Slide 35 text

• Things that are the same • Things that are trivially similar • Things that are similar • Things that are different Don't reach too far

Slide 36

Slide 36 text

Turing Escape Hatches

Slide 37

Slide 37 text

Don't Give Up

Slide 38

Slide 38 text

It's Easy It's especially easy to give up if you only ever hear negative things. When doing the hermeneutic circle dance, it's also easy to forget that you're heading towards a conclusion, and not just running around like a chicken without its head.

Slide 39

Slide 39 text

Your Problems Take on problems that you have, but nobody is solving (or everyone is solving simplistically).

Slide 40

Slide 40 text

• Work at the edge of your capabilities • Work on Open Source • Have a Confidant • Circle Hermeneutically

Slide 41

Slide 41 text

Leverage

Slide 42

Slide 42 text

Thank you.