-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBecoming an Outlier - Reprogramming the Developer Mind.txt
417 lines (307 loc) · 13.7 KB
/
Becoming an Outlier - Reprogramming the Developer Mind.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
{Module One: Motivation}
Goal: Tranformation in thinking about career development
How you spend your time
How other perceive you
Skills to change career trajectory
Expected to:
Standout
Make impact
More options
Code with purpose
Software Development is calling.
Being wealthy is NOT about having money.
It's about having options.
3 Common Fallacies
1. Not enough time to learn - too much to keep up
2. No respect for the Skills we have - need connection to right people
3. No control over career trajectory
{Module Two: Command Your Time}
Objective:
The amount of success you have in life is roughly equivalent to
the amount of time you spend doing things people want
- add value to other people
The technical treadmill:
The specific technology mastered today is unlikely to be
marketable over a 10-year span
Foster the joy of learning and curiosity to keep up and
embrace the ever-changing landscape
Habits Build Experts
"I'm not a a great programmer; I'm just a good programmer with great habits"
Habit: 40% of your day
Exercise habit:
Replace habit that makes you stagnant with habit that makes you moving
Eating habit: choose breakfast well
Consider following options:
TV Book
Hot Dog Fish
Elevator Staris
Consumption Creation
Eating out Sack lunch
Soda Water
Buy new Buy used
Sleep in Weak early
Status quo Growth
Pessimism Optimism
Minimum Exceeding Expectation
HABITS ARE A CHOICE
Teach Yourself Programming in 10 years
- with on-going and deliberate practice
Expert = 10,000 hours
Deliberate practice:
Doing things you are NOT good at
Striving to improve
Evaluate your performance
Search for new framework, new patterns, and techniques
Focus on what you are not good at & push through the pain
Goal: 2 hours deliberate practice (14 years)
When focusing one area of life, other focusings will need to be reduced
Prioritize daily activities into categories
Rank categories: (top ones) Family, Health, Self Dev., Job
For other activities: Default to NO
You are on a mission - You set the pace of your time, not others
Multithread your life
Commute:
1. Eliminate if possible
2. Public transit
3. Listen to quality content (podcast, books on CD): http://outlierdeveloper.com/audiobooks/
4. Notes while driving (digital voice recorder)
Re-think giving back: donate by Programming
Code while on trip, long gap
Exercise while watching moive
Avoid coding + multi-tasking
Be Modal: focus on task at hand
"You do something all day long, don't you?
The only difference is that you do a great many things and I do one"
The importance of time alone to focus on task - stay in the zone
Options:
Private office
Work from home
Alternate schedule
Batch meeting
Headphones
Before leave for interruption, write down what you were doing
Find a way to automate daily task or setup reminder
What is your default mode?
A managed twetter stream as news
Preference as following:
News:
Hacker News
Reddit Programming
The Verge
TV:
PluralSight
InfoQ videos
DNRTV
TED Talks
Magazines:
Coding Horror
Los Techies
Hanselman
Book:
Code complete
Seven language in seven weeks
Patterns of EnterpriseAppArchtecture
Search for life changing media
"In order to do the big things, you have to let the small bad things happen."
- Does it help achieve my goal?
Focus on the area you can change
Money is Time
Buy time with money -
Success = spending time doing the things you want to do
{Module Three: Hack Your Image}
Perception is Reality
The need for personal referral
The cost of building prefessional relationship from scratch everytime you start
The developer image triangle (pick two if needed)
1. Be easy to work with
2. Do great work
3. Deliver on time
1 + 2: Cordial Craftsman -> Ivory Tower Developer for some (might be better then the other two?)
2 + 3: Reliable Robot -> Tolerate no mistake
1 + 3: Happy Hacker -> Debt generator
All three have downside - thus need balance based on context
Purpose Built:
The narrower the niche; the more likely to become a standout
Consider what are you known for:
Generalist or specialist?
Front end or back end?
Is 'it' clear on resume, blog and open source contributio?
What is the benefit moving to either extreme?
Bring Solution:
Negative: Complaint without concrete suggestion for how to resolve issue
Positive:
"I have been thinking about the issue we had with XYZ...How about we [alternative]
... this will [benefits & fix] ... I have investigated a few options and I recommand [solution] b/c ...
Can I build a proof of concept"
- taking initiative, been thoughtful and make managers job easy
Self-image is Your Greatest Constraint
I am who I think you think I am:
If you think people view you as "X" then you are likely to act like "X"
1. Hack your self image: improve the way you view yourself by ACT like your hero
2. Leave to leap (when not been taken seriously)
3. Reach beyond your comfort zone by taking "Scary Interview" and embrace the uncertainty
"If you are not worrying that something you're making will come out badly,
or you won't be able to understand something you are studying, then it isn't hard enough.
There should be suspense ... Look for smart people and hard problems.
Smart people tend to clump together, and if you find such a clump,
it's probably worthwhile to join it."
Avoid Conference effect: we are all learning here
Can I see your work?
- to apear to be more engaging
Twitter account with programming reference
Blog with a few posts
Github
Personal website
Reuse and Repurpose:
After you learned something new:
- Take side project or Use the tech in different projects
- Write a blog post
- Tweet abot it
- Lunch & learn (Brown Bag)
- Speak at Conference or Meetup
- Answer questions on forums / Stackoverflow
- Contribute to Open Source
How To Stop Sucking And Be Awesome Instead - Jeff Atwood
1. Embrace the Suck
The first rule of programming - It's always your fault.
Failure is the default mode and we can always do better.
Version 1 sucks but ship it anyway, because:
3 months of user feedback is always better then
3 months in development
Boyd's Law of Iteration:
Speed of iteration ALWAYS beats quality of iteration
- where you are today doesn't matter so much,
comparing to where you are goin tomorrow,
as long as you can change and adapt fast enough
The goal is to suck less every day, week, month, year...
2. Do it in public (where others can see)
This will make you spend the effort
The constraints are mostly self-imposed
[Do these things] [in these places]
Answer questions Blog
Document your learning Conference / Meetup
Share my Failures User Groups
Build something new Stackoverflow
Talk about your development process GitHub
Justify your technical decisions Hacker News
Share update on what you build Reddit Programming
Twitter
Google+
Example: when answering a question / solving a problem, make it a public available resource
3. Pick stuff that matters
Everytime you share something, Ask: So What?
People don't care about you, they care about:
- their problems
- information useful to them
- what entertains them
- what makes them feel like they rule
Getting things done is enabling other people getting things done
People tend to ignore / forget "not awsome",
but they remember their success - and the things you do to help them achieve that
Find an audience that needs your help, and
No one should be more excited about your mission than you
Ask: What cool thing did I do for someone else today?
It is better to try and failed than being safe and sorry
{Module Four: Own Your Trajectory}
Take active control over career and don't let circumstances dictate career path
1. Move from passive to active
2. Clear your mind
3. Choose your role
From Passive to Active
Stay only if it helps to achieve your goal
Make decision deliberately, not been forced to
Why Freedom Matters: here is two keys
Slack in finance to afford life - frugality
Skills in demand to make it anywhere, anyhow
Slack:
Clear your mind (with persistent focus):
because scarcity diminishes mental capacity
-> distraction makes you dumber
Devs needs uninterrupted thought
Financial worries make it harder to think about other things
Worries outside of job affect our abilities on the job
The biggest enemy is your bill -> the cheaper you live the greater your options.
Skills:
One must rigorously review the technical lanscape to see where their current skill set fits in
and where things are headed
Does the demand outstripe supply?
- Use TIOBE index to measure programing language popularity
How about demand in your city? Dice.com with City
Niche andleverage exist where demand outstripe supply - even if the opertunities is fewer
However, at either edge of adoption curve, patience and marketing are key
Technologies are unlikely to change if it is mature / dying - this can be upside
Program your Brain
Reading - Audiovisual - Demo - Discussion - Practice doing - Teach others
3 Steps for learning:
1. watch someone (video, books, blog)
2. Experiment with real world implementation
3. Teach someone else (also, blog post, stackoverflow)
Don't appologize for lack of knowledge or experience
Exploration and Exploitation
Exploration: Acquire new technology
Too much:
Never reach expertise
High opportunity cost
Exploitation: Apply acquired technology for work
Too much:
Skills become stale
Become irrelevant
Assembly Line Coder
Don't work only for money, work to learn
Opportunity curve
With expertise, more opportunities are available at any point in life
- remain relevant throughout retirement age
Search for scale:
You can only sell an hour of your life ONCE - this does not SCALE
To scale, one needs to get everything out of a given unit of work
SCALE buys more TIME
More TIME to enchance SKILLS
SKILLS to build more things that SCALE
Aim to get closer to independence and automated income
Level 1. Work (do what was told)
Fix bug, Bill by the hour
Level 2. Lead (talk about work)
Select architectures & Technologies
Mentor, hire and lead treadmill
Define project scope and processes
Level 3. Own
Products: SAAS PAAS
Frameworks
Author (books, lessons, etc...)
{Module Five: The Outlier Challenge}
1. Command your time
2. Hack your image
3. Own your trajectory
Act as if
Starting acting like a thought leader - get your thought and ideas out in the public.
- speaking, bloging, publishing
Act like you are rich:
- work part-time
- pay others to free up your time
- start working only part time so you have more time to learn
Manufacture Urgency
Make commitment with others to force you to deliver on your goals
Volunteer to present a topic you want to learn (for lunch and learn)
Announce your planned launch date
Take interview for tech you don't yet know well
Increase Luck Surface area
Luck Surface Area:
is directly proportional to the degree to which you do something you're passionate about
combined with the total number of people to whom this is effectively communicated
1. Speaking: lunch & learn, user group or conference - about things you want to be known for
2. Startup weekend / Code for charity: to build network
3. Connect people: Create a meetup / User Group / Mastermind
4. Blog / Tweet / Be Social
5. Contribute to Open Source: Halo effect
6. Never Eat Alone
7. Make the Hang: hanging out with leaders in your fields
Chase fear
Find what scares you and run AT it
- take a lead job
- manage others
- speaking
- committing to open source
- shipping art
Choose yourself - and choose HARD
b/c downside is much less than you think
Get Connected