-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnotes.html
648 lines (589 loc) · 30 KB
/
notes.html
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
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
<aside class="notes">
Name, Work for... heard me on...
<br>
Also pretty new...
<br>
Before becoming a dev, spent 15 years skating...
<br>
Come to realize over the past few years as I've worked to enter this field
<br>
Becoming a developer feels a lot like becoming a successful skater.
<br>
With that said, I'd like to show something...
<hr>
Now, I want to do a quick exercise;
<br>
Hands above head, 1 turn. (Confident!)
<br>
Bet you guys feel uncomfortable... That's what it's like to be a Jr learning!
<br>
I’m comfortable here...
only because I’ve learned to get comfortable with this feeling! :)
<br>
Over and over again I talk to juniors and we always have the same conversation.
<br>
I’m not going to say you have to do this... or that... today
I don't believe in those kind of absolutes...
<br>
But I am... going to share what’s worked for me... common things I keep hearing.
</aside>
<aside class="notes">
I want to talk about some numbers for minute: (FADE IN 7)
Right now, for every person in tech looking for a job, there are 3 open openings.
<br>
Average occupation = 1, with 6 people competing
</aside>
<aside class="notes">
So, how do we effectively funnel incoming devs to address this?
<br>
That's one problem boot camps are good at addressing!
<br>
They're popping up everywhere, churning out highly motivated Jr's,
but let's be honest, companies are usually looking for seniors.
<br>
In order to bridge the gap together, going to talk about what it actually looks like
to go from a bootcamp,
to full time developer, and what senior devs can do to support the process.
<br>
We all like to talk about numbers.
I challenge you, to look at the solution,
and acknowledge what the process actually looks like.
</aside>
<aside class="notes">
It's all about moving outside your comfort zone, and pushing through the stages of competence.
</aside>
<aside class="notes">
After skating => College
<br>
Ended up in marketing
- Intrigued by CMS
- Starting to experiment a little :)
<br>
Treehouse - Basics - Wordpress
<br>
PHP => Should do Rails... 4 hours to Rails Bridge, Rails Girls
<br>
Got more serious... decided on 2nd Bachelors in IT.... too slow... no Rails!
<br>
Bootcamp research =>
3 DAYS to another only to turn around & come home => (airbnb & flat tire along the way)
<br>
All in!!! Wanted something longer and harder => NSS
</aside>
<aside class="notes">
While I at NSS saw this...
</aside>
<aside class="notes">
Followed by this... which peaked my interest
<br>
Speaking to voice inside looking for next challenge!
<br>
No I could do even more Node when I moved from Nashville!
</aside>
<aside class="notes">
Finally, I saw this...
<br>
There I was, impressionable young developer. JavaScript it is!
</aside>
<aside class="notes">
Pretty soon after that decision, I did start to miss Rails and synchronous flow!
<br>
Past DOM manipulation JS typically isn't the most beginner friendly.
<br>
Wrking butt off though, and started to notice things...
<br>
Two of my mentors were saying really nice things about me on Hacker News.
<br>
Then was interviewed on some podcast's.
<br>
I was asked to help with some large conferences and a Meetup.
<br>
And got a raise!
<br>
All feeling totally out of my element.
<br>
Contrary to how uncomfortable I was... I was doing something right!
</aside>
<aside class="notes">
Ok, now for lessons learned! (FADE IN 3)
</aside>
<aside class="notes">
I'm definitely not talking about this kind of advice!
<br>
Those are all things that should evolve organically.
</aside>
<aside class="notes">
As we dive in always keep this in mind!
</aside>
<aside class="notes">
Let's first dispel the elephant in the room, and start with breaking in.
<br>
Employers probably aren’t hiring you expecting you to solve their most complex problems.
<br>
On the other end of the spectrum, don’t hold back from applying for jobs because you don’t feel ready.
Let your future employer decide this!
<br>
(FADE IN) Making 'some' mistakes is expected & normal.
</aside>
<aside class="notes">
You also don't want to be this guy
<br>
Contrary to what pop culture says, you should be
Leveraging social media, Hackathons and Meetups.
<br>
Establish a presence in the community.
<br>
Jr's have flooded the market... need got to speak up & stand out!
</aside>
<aside class="notes">
Be passionate. Literally everywhere, and with every one you meet.
<br>
The industry is filled with people who've been writing code, and studying CS since they were kids.
<br>
It's also filled with passionate people who enjoy it as a hobby.
<br>
When you're entering the field, you've got a lot to prove,
& people will be making a bet on you.
<br>
The more excited you are, the easier the decision will be.
<br>
Can also look for ways to contribute on GitHub.
Doesn't matter what.
<br>
A lot of juniors have said, this how they broke in!
<br>
Asked to work on first prod Rails app after submitting a doc PR
to the Rails Bridge Curriculum.
<br>
You're degree doesn't really mean anything if you don't have the work ethic and passion to put it into practice.
<br>
Dave Thomas who wrote the "Pragmatic Programmer" even talked about
the power of a passionate dev on a recent podcast essentially saying
<br>
those who weren't should even be in the field in his opinion.
</aside>
<aside class="notes">
Next, all jobs are not created equal!
<br>
You may need to strike a balance between your dream job,
and ok for now, because ‘a job’ is better than sitting at home doing tutorials forever.
<br>
Sure perks & high salary are nice, but if you want to grow & sustain your career,
mentorship, testing, coding standards, and code reviews should all be at the top of your list.
</aside>
<aside class="notes">
So, you've got the job... and you see the code base for the first time!
<br>
If you're anything like me, looking at 1/2 dozen apis, 2 etls, and a webui...
you might feel like this!
</aside>
<aside class="notes">
Bootcamps are a great way to jump start you're learning,
but they're not meant to take you 100% of the way.
<br>
Some things you can only learn on the job.
<br>
So, what does hard work look like?
</aside>
<aside class="notes">
You’re going to be doing less of this...
</aside>
<aside class="notes">
And more of this...
</aside>
<aside class="notes">
1st: Start with test - Read them AND write them
<br>
Reading them is best way to get up to speed on a large code base.
<br>
Writing your own makes you look professional and like you care.
<br>
2nd strategy: break stuff
<br>
Figure out what went wrong & how to fix it. Makes thing stick.
</aside>
<aside class="notes">
Work to always leave the code better than you found it.
<br>
There are tons of things that go on day to day outside of
just writing code.
<br>
Regardless, you should always focus on writing maintainable code.
<br>
That means the code you write is readable, extensible, & testable.
</aside>
<aside class="notes">
In order to grow, you also need to start looking past tutorials.
<br>
Instead, check out source code for the libraries you use on GitHub.
<br>
Read RFC's as well.
<br>
Easier to understand than you think,
and usually the most accurate documentation.
</aside>
<aside class="notes">
Next up, let's talk about working smart.
</aside>
<aside class="notes">
Everyone knows the saying, ‘Failing to plan is planning to fail’.
<br>
Spend time thinking before coding. Ex: API => start with Docs.
<br>
Have an opinion... be able to explain why you made the choices you made!
Nothing is more painful than seeing code that's been C&P'd and you know it.
<br>
Understand every line of code you write.
If it’s there, it should have a purpose.
</aside>
<aside class="notes">
With my background in skating and coaching, I know first hand
that practice does NOT make perfect... it makes permanent.
<br>
Focus less on being a great developer, more on being great problem solver.
<br>
With that said, you should be reflecting on your work regularly.
<br>
When you're working on a tough problem, and you finally come up with a solution,
step back, and retrace your steps.
<br>
Write things down even.
</aside>
<aside class="notes">
Pick one thing and stick with it - ES6, Angular.
<br>
I knew I wanted to do full stack JS,
but also knew I wasn't going to learn 1/2 dozen API's & Web UI at once.
<br>
Also, don't be overwhelmed by the # of libraries & frameworks.
<br>
Pick one thing, with an overall focus on problem solving.
<br>
Languages, libraries, and frameworks are just tools. They come and go.
What's popular today probably won’t be popular a decade from now.
<br>
Be lifelong learner.
</aside>
<aside class="notes">
Take care of yourself mentally and physically.
I’ve been determined to stay in shape, & balanced.
<br>
Up at 6 => gym => run => work
Sneak in podcasts sometimes. (Sshhh!)
Only when up for it.
<br>
Finish the day => meditation
<br>
Stay grounded & focused.
</aside>
<aside class="notes">
Stop calling yourself dumb! => Self fulfilling prophecy.
<br>
Self talk = time to ‘fake it till you make it’!
<br>
Much as want job only about writing code, not reality.
<br>
Can be emotional career.
Whether we (yes even guys) want to admit it or not,
going to be highs and lows.
<br>
Also be aware of The Dunning-Kruger effect.
<br>
Says there's tendency for under performers to OVER estimate abilities
<br>
& high performers to UNDER estimate their abilities.
</aside>
<aside class="notes">
When you don’t know how to do something,
or you come across a tough bug remind yourself (FADE IN)
<br>
Every time something goes wrong in your program = opportunity to learn something new!
<br>
Ton of fun, but time consuming & stressful.
<br>
Positive outlook is huge.
<br>
Without it you can enter a vicious cycle.
<br>
Work butt off because you feel inadequate.
<br>
Then burned out.
<br>
Happens over and over.
<br>
Establish boundaries to avoid that.
</aside>
<aside class="notes">
Finally, I want to talk about pair programming.
It's a really popular topic, for good reason (FADE IN 2)
<br>
It's valuable working with people close to your skill set, & Sr's
</aside>
<aside class="notes">
A lot of people ask my opinion on whether they should do bootcamp or learn on own.
<br>
Started alone, and was grateful
for the opportunity to learn with others.
<br>
So much so, I've tried to keep the theme going. (FADE IN)
<br>
Private Slack channel at work for Jr's.
Manager watching probably didn’t know till this talk!
</aside>
<aside class="notes">
<br>
Also helped start study group meetup & do regular Sat. hangouts.
<br>
Recommend leveraging the awesome communities out there..
Code Newbie => podcast, twitter chat & Slack
</aside>
<aside class="notes">
Now on mentoring and working with seniors
<br>
(FADE IN) Sun Microsystems studied the progress of
1,000 employees over a 5-year period and determined devs who had mentors got promoted 5x
more than those that didn't
<br>
Ask if you can pair at work. As a Jr still learning to create a mental model...
Paring allows you to step back and form an overall picture of the problem.
<br>
Also get mentorship from code reviews, contributing to open source.
<br>
If nothing else stand back & soak up what you see Sr's do.
Ask if you can stay late & peek over shoulder.
</aside>
<aside class="notes">
I spent a lot of time reflecting over the past year getting ready for this talk and realized...
<br>
It really was all about getting comfortable being uncomfortable, and working my butt off.
</aside>
<aside class="notes">
Already have this down, here's what you can do to help.
</aside>
<aside class="notes">
Want to start by talking about preparing yourself & team.
</aside>
<aside class="notes">
You're probably going to feel like this at times... advise you to suppress those.
</aside>
<aside class="notes">
Because this is what it's like for most Jr's starting out.
</aside>
<aside class="notes">
Let's imagine for a min. you're adopting a dog.
<br>
You can either go to the shelter and find an old one, or... you can get a puppy!
<br>
Older dogs are usually already house trained, but they also have bad habits.
<br>
Puppies are notorious for chewing/making a mess, but given a nice environment & training
the investment can be rewarding.
<br>
If getting a puppy sound fun, make sure you’re committed to the process, or they’ll end up in the shelter!
<br>
In other words, realize, you're directly responsible for the success of a Jr.
</aside>
<aside class="notes">
(FADE IN) If you don't already have one, establish a culture of open communication.
<br>
Everyone should be sharing knowledge no matter what their job title is.
<br>
A lot of people entering the field are coming from another career.
Their insight can offer new perspectives.
<br>
It builds trust & an environment where disagreements are healthy &
highly constructive.
<br>
If your team has Jr's, make sure you're checking in often & asking lots of questions...
<br>
Some newbies find it intimidating to speak up.
You may need to watch for non-verbal queues.
Ask directly, “Does this make sense”?
</aside>
<aside class="notes">
Learn to empathize and sincerely listen.
</aside>
<aside class="notes">
One big thing I've noticed over the past few years is how easy it is to forget
what you actually know.
<br>
(FADE IN) You'll help Jr's on your team immensely, if you frame conversations accordingly.
<br>
Which means explain things differently to a Jr than you would a Sr.
<br>
A lot of the time Jr's don’t have the same context to rely on.
<br>
If you and I were watching the Olympics together and I told you 'a skater cheated their
double axel & had a wrap’, you’d have no idea.
<br>
Instead, I could say to you 'they rotated their foot a 1/4 turn
before taking off (cheating),
<br>
and their leg went above their knee in the air
(wrapping) which is poor style’.
<br>
I might even get up and draw… hint!
<br>
With the inverse approach:
<br>
You might not know what a double axel is, so you Google that,
<br>
then you have to figure out what the heck
‘cheated’ and ‘wrap’ mean.. in that context.
<br>
Before you know it, what could be explained quickly,
turned into a 30 minute rabbit hole for you.
<br>
You might think this is a pain, but it'll help you grow as you’ll
have to think about problems in a different way.
</aside>
<aside class="notes">
(FADE IN) Project mgmt. is another subtle, but extremely crucial step.
<br>
Managers & product managers should work together
to ensure projects flow smoothly.
<br>
Jr's are still getting used to being able to gauge timing on projects,
and will probably need time before they're able to give solid estimates.
<br>
Ambiguity can be tough to deal with too.
So, you need to set explicit expectations.
<br>
Provide additional details or constraints & break tasks down.
Doing so will ultimately help a new developer contribute faster.
</aside>
<aside class="notes">
I've also seen the inverse, where Jr's aren't given enough to do.
<br>
It's easy to resort to having a Jr's sit idle, or to never be delegated substantial tasks.
<br>
It all goes back to planning & making an informed, strategic decision hiring.
</aside>
<aside class="notes">
Let's talk about preparing your code base, (FADE IN) specifically with testing.
<br>
(FADE IN) Microsoft did a study and found the number of defects decreased 40-90% when they started doing TDD.
<br>
(FADE IN) And they initial development time only increased 5-35%
<br>
Increases confidence making changes for everyone.
<br>
With a Jr it will serve as docs, & prevent regressions learning the code base.
<br>
If nothing else, start writing tests in tandem with bug fixes.
</aside>
<aside class="notes">
As with testing, having code standards, style guides, and linting in place is valuable for everyone,
<br>
but with a Jr on your team, it means you'll have less to worry about in your code review.
<br>
(FADE IN) A really important part of this is comments.
<br>
Saying goes, those who don’t think they need comments, are usually the worst offenders!
<br>
Developing a team style guide is also great project for a Jr because it will ensure
they understand best practices.
<br>
(FADE IN) JSCS makes this easier and helps with docs.
<br>
Without a doubt teams should be linting as well.
<br>
(FADE IN) There are things like
Cyclomatic complexity: Number of paths within a method or function. 5-10 = danger => refactor
</aside>
<aside clsss="notes">
(FADE IN) Next, I want to talk about code reviews.
<br>
Can either be an awesome way to learn, or extremely painful and discouraging.
</aside>
<aside class="notes">
Don't let this happen. With a Jr, every review is an opportunity to teach them something.
</aside>
<aside class="notes">
Unless you want your dog (air quotes) to wear a muzzle the rest of their life,
resist the urge to do this too.
</aside>
<aside class="notes">
Don’t just tell a Jr what to do.
Ask them their thoughts on doing something in the way you propose.
<br>
It forces them to think, and come up with own thoughts.
<br>
After, tell them ‘why’.
<br>
Offer's more technical value & build trust.
</aside>
<aside class="notes">
Next, pair programming.
<br>
#1 Thing:
Tell the Jr when you’re not sure.
Seriously... please!
<br>
sets an example for humility, and NOT doing so will eventually come back to bite the team.
<br>
Don’t get too clever with your solutions.
<br>
If it was hard to write, it’ll be even harder to read in the future!
<br>
Debug pair programming can be immensely valuable
<br>
Whether people admit or not, everyone writes bugs.
<br>
More often than not, we're working on existing code bases.
<br>
Learning strategies to quickly pin point issues in code you didn't write is
arguably more difficult than writing your own program from scratch.
<br>
With that said, next time you’re debugging grab the Jr on your team
and walk through the process with them.
</aside>
<aside class="notes">
(FADE IN) Finally, I want to talk about how working with a junior can boost your career.
</aside>
<aside class="notes">
Maybe you're feeling like this lately.
A Jr can totally fix that!
</aside>
<aside class="notes">
(FADE IN 2) Sun Microsystems compared career progress for 1,000 employees
over a 5 year period and found mentors were promoted 5x's more often & were 20% more likely to get a raise.
<br>
Training Jr. pays off for the team when you can start delegating more work.
<br>
They'll also help you understand how people perceive you better.
<br>
Mentee reveal ALL the good and bad traits you possess.
<br>
There’s a very strong mentorship model in this industry.
<br>
Pay back into it by taking an active, rather than passive role in the progress of the Jr's on your team.
(Less Tweeting… more doing!)
<br>
Of course teaching is a skill.. not something everyone enjoys.
<br>
Strive to contribute in whatever way you can.
<br>
Financially through sponsorship.
</aside>
<aside class="notes">
(FADE IN) Above all... be nice!
<br>
Keep in mind that every developer learned from a more
seasoned developer at one point.
<br>
Keeping a positive attitude can empower people to work even harder than they might otherwise.
</aside>
<aside class="notes">
No matter what side you're on you'll need to learn to embrace frustration
and move outside your comfort zone
<br>
Success isn’t what is looks like on the surface,
and moving through these steps will be rough at times.
<br>
By focusing on concrete objectives,
we can all advance collectively, close the talent gap along the way.
</aside>
<aside class="notes">
(FADE IN) Just remember, when you're frustrated and uncomfortable, you're in excellent company.
</aside>