Summarized using AI

Lightning Talk: Programming Like An Athlete

Gabrielle Ong Hui Min • October 13, 2017 • Selangor, Malaysia • Lightning Talk

In her lightning talk at RubyConf MY 2017, Gabrielle Ong Hui Min draws a parallel between athletic training and programming, advocating for a holistic approach to software development. As a software engineer at Tree Gecko, Gabrielle shares how her background in competitive athletics informs her programming practice. She emphasizes the importance of not only technical skills but also supportive skills necessary for effective software development. Her talk is centered around four key principles that can enhance programming skills:

  • Cross Training: Just as athletes must develop complementary skills to succeed, programmers should cultivate a diverse skill set that includes UX design, DevOps, and interpersonal communication. Effective communication can prevent misunderstandings and enhance project success.

  • Measure Progress: Gabrielle talks about the necessity of tracking one's progress, likening her training regimen of recording performance metrics to maintaining a programming notebook. By evaluating both quantitative and qualitative metrics over time, programmers can identify growth areas and improve their problem-solving capabilities.

  • Progressive Training and Recovery: She explains that continuous improvement requires progressive challenges followed by adequate recovery. In programming, this means knowing when to step back from tech to recharge mentally, similar to how athletes take breaks after competitions to prevent burnout and foster higher performance upon return.

  • Drafting & Community Support: Gabrielle highlights the importance of collaboration within the programming community. She likens the concept of 'drafting' in races, where runners conserve energy by running behind one another, to how community members can enable each other’s growth through shared resources and encouragement.

Gabrielle concludes with a heartfelt plea for developers to support one another, stressing the significance of community in personal and professional development. She encourages attendees to reflect on their training practices, the skills they can develop, and the importance of supporting fellow developers. The talk encapsulates not just the technical aspects of becoming a better programmer but also underscores the human element of growth within a supportive community.

Lightning Talk: Programming Like An Athlete
Gabrielle Ong Hui Min • October 13, 2017 • Selangor, Malaysia • Lightning Talk

Speaker: Gabrielle Ong Hui Min (@hellogabbo)

Website: http://rubyconf.my

Produced by Engineers.SG

RubyConf MY 2017

00:00:06.280 hi everyone I am Gabrielle and I'm a
00:00:10.400 software engineer at tree gecko
00:00:12.080 Singapore no we don't do a trading we
00:00:14.540 don't sell desserts we are SAS company
00:00:17.210 doing inventory management and I wasn't
00:00:20.390 planning to mention this but since
00:00:22.040 Elijah mentioned in her tech baby stuff
00:00:24.650 yesterday I postponed university to work
00:00:27.560 full-time as a software engineer because
00:00:29.720 I realized I work I learned to better
00:00:31.550 doing things hands-on so you I wish my
00:00:38.570 parents were clapping as well so you can
00:00:43.280 say that I'm community thought because
00:00:45.289 everything I've learned is from reading
00:00:47.329 Doc's reading block pools watching talks
00:00:49.699 attending meetups and conferences like
00:00:52.280 this it's also on a thing that people
00:00:56.420 had tradegecko because they were the
00:00:58.129 ones who helped me grow from a really
00:01:00.199 scared 18 year old who didn't know what
00:01:01.850 I was doing into a stronger and less
00:01:04.370 scare software engineer they didn't dumb
00:01:06.620 anything down but they let me take
00:01:08.330 ownership of everything everything like
00:01:11.120 building features doing massive
00:01:12.770 migrations performance tuning and
00:01:15.170 basically just challenged me to grow so
00:01:19.070 quick plug we are looking round growing
00:01:20.900 out to you so finally if you are
00:01:22.280 interested okay so before getting into
00:01:25.700 programming I did competitive track and
00:01:27.800 fuel and portfolios I did this event
00:01:30.710 where I spring for intro meters and jam
00:01:33.290 open 10 hurdles and then I became
00:01:35.300 smarter and fun even where I run 15
00:01:38.330 meters and joong-won bar
00:01:41.020 so when I started programming I wondered
00:01:43.780 is there a training plan that I can
00:01:45.759 follow to get better I realized that
00:01:48.820 there are principles of athletic
00:01:50.470 training that can help me become a
00:01:52.509 better programmer and I'd like to share
00:01:54.280 four of them with you so the first is
00:01:57.399 cross training for high jump I thought
00:01:59.890 my charity of the training would just
00:02:01.929 jump over the bar like 10 hours a week
00:02:04.210 mine fact only 10% of the time was spent
00:02:07.299 high jumping and the rest were on
00:02:09.220 weightlifting for strength Huddle's to
00:02:12.160 contort my back into strange positions
00:02:14.709 and Sprint's to increase speed so it
00:02:18.819 turns out I had to build the supporting
00:02:20.680 skills to become better at my main skill
00:02:22.989 of jumping over the bar so what's a
00:02:26.440 programmers main skill this varies for
00:02:28.959 everyone but usually it's more than
00:02:30.640 technical abilities no point if I build
00:02:33.010 a super complex fast that no one wants
00:02:36.010 to use our nose house to use because it
00:02:38.170 doesn't solve their problem if I build
00:02:40.870 it but it can scale to handle thousands
00:02:42.970 of users so we programmers do so much
00:02:46.000 more than just writing clean code we
00:02:48.040 also need supporting skills like
00:02:49.840 requirement gathering UX and design
00:02:52.120 principles DevOps
00:02:53.950 and interpersonal skills I love the
00:02:56.680 point byakurai yesterday that the code
00:02:59.079 is to communicate and think about all
00:03:01.269 the times you've struck out the name of
00:03:02.890 function or name a class or how to write
00:03:05.859 your PR comment of nicely so that you
00:03:08.320 don't offend the author why do we do
00:03:11.170 that it's because communicating well in
00:03:13.840 those areas helps us help saves us from
00:03:16.500 misunderstandings and time fighting
00:03:18.430 fires
00:03:19.200 so cross training all these skills helps
00:03:22.239 us to become stronger overall however
00:03:24.850 when we are training so many skills
00:03:26.980 there's the danger of losing focus which
00:03:29.620 brings me the principle - you can't
00:03:32.170 improve what you don't measure for
00:03:34.450 training I had a notebook where I wrote
00:03:36.160 down what I did that day the timings and
00:03:38.319 Heights I jumped and how I felt so
00:03:40.829 because I wrote it down over time I can
00:03:43.900 see improvements both quantitative like
00:03:46.329 the increase in height that I jump or
00:03:49.000 qualitative like I
00:03:50.290 no longer feel like I'm dying when I
00:03:52.030 finish a hot training so I wonder the
00:03:55.420 track my progress as a programmer and I
00:03:57.519 also had a programming note book I wrote
00:03:59.890 down what feature about fix I worked on
00:04:02.170 what I learned how I broke down a
00:04:04.269 problem and when I missed any
00:04:05.920 considerations or use cases over time I
00:04:09.939 can see improvements like last time I
00:04:11.739 had to draw mind maps to map out the
00:04:14.109 function calls and now I can visualize
00:04:16.900 it in my head I know this is JavaScript
00:04:19.660 but you get the point I'm also thinking
00:04:22.240 about more considerations like usability
00:04:24.580 scalability and performance when
00:04:26.830 deciding one solution over another so
00:04:30.430 the third principle is progressive
00:04:31.990 training and recovery if I keep lifting
00:04:34.509 the same weights week after week will I
00:04:36.849 get stronger no I'm not going to
00:04:39.060 progressive training means increasing
00:04:41.410 the difficulty of exercise and so that's
00:04:44.289 always slightly challenging but your
00:04:47.410 muscles get stronger during exercise
00:04:50.009 they actually get weaker because the
00:04:52.870 increased stress causes muscle tears and
00:04:55.150 you feel these as muscle aches after you
00:04:58.000 finish a hard workout and state muscles
00:05:01.300 get stronger during recovery when they
00:05:03.430 heal from the tears and become stronger
00:05:06.820 than they were before
00:05:08.080 so with recovery this cycle of getting
00:05:11.440 weaker then stronger repeats and overall
00:05:13.990 we become stronger on the flip side with
00:05:17.500 insufficient recovery our bodies cannot
00:05:19.990 heal and will deteriorate in performance
00:05:22.599 so recovery is just as important as
00:05:25.810 training for the training to be
00:05:27.550 effective so there are three levels to
00:05:30.880 recover from as at the let the us at the
00:05:33.789 leads the recovery from training means
00:05:36.070 time away from training the rest and for
00:05:39.310 us programmers this we should also
00:05:41.020 recover from technology which we use all
00:05:43.479 the time how many times do you use your
00:05:46.630 check for nadir guesses 10 I see 10 so
00:05:52.810 the average person checks it 85 times a
00:05:55.539 day and it's twice more than they think
00:05:57.849 they do so we spent we spent so much
00:06:00.969 time subconsciously using technology and
00:06:03.520 then struggle to find time to do the
00:06:06.729 Apollo other priorities so maybe the way
00:06:09.460 for us to be masters and not slaves of
00:06:12.039 tech is to disconnect the second
00:06:15.639 recovery is from competition season so
00:06:18.430 athletes commonly taken offseason break
00:06:20.770 after their major competition to freshen
00:06:23.110 up mentally and physically this seems
00:06:25.810 counterintuitive like why would you take
00:06:27.820 a break just when you've reached your
00:06:29.200 peak performance this is to avoid
00:06:31.990 pursuing or hitting a limit to doubt for
00:06:34.419 improvement a break allows them to come
00:06:37.029 back better fresher to create a higher
00:06:39.580 trajectory and hit a new peak similarly
00:06:42.880 for us the after intense periods there's
00:06:45.880 physical and mental limits to what we
00:06:48.430 can take the way to increase that limit
00:06:51.370 is to take a break and come back with
00:06:53.349 fresh perspectives and increase our
00:06:55.389 capacity to handle more the third
00:06:58.719 recovery is from injuries or when
00:07:01.330 happens so once when I was injured I
00:07:03.729 wanted to be tough and continue training
00:07:06.460 by got scolded by my coach because I was
00:07:09.639 doing more harm and it was my
00:07:11.380 responsibility to do everything I could
00:07:13.510 do recover and get better even if it
00:07:16.990 meant not training so in our tech
00:07:19.779 culture though when someone asks how's
00:07:21.639 it going the default answer is
00:07:24.860 okay good compounded with our Asian
00:07:28.970 culture but not very good at
00:07:30.980 acknowledging when we're not good and
00:07:33.140 when and taking the steps to recover
00:07:35.410 then we see articles like this and this
00:07:40.270 last year I had two friends commit
00:07:43.190 suicide in the video before I had
00:07:44.840 another friend commit suicide and I wish
00:07:47.120 it didn't take such a tragedy for me to
00:07:49.850 start caring and I also hope that you
00:07:52.280 don't ever have to go through such a
00:07:53.840 tragedy to start taking action the
00:07:57.010 responsibility is on us individuals in
00:07:59.420 this community to look out for one
00:08:01.430 another to know the science and seek
00:08:03.710 help for ourselves and others the fourth
00:08:07.910 principle traffic others so in long
00:08:10.820 distance races runners run behind each
00:08:13.310 other to save energy from fighting air
00:08:15.710 resistance this is called drafting and
00:08:17.960 so a race strategy might be for members
00:08:20.480 to take turns being the front-runner so
00:08:22.700 that the rest can conserve energy and
00:08:24.470 last a long race so the whole pack runs
00:08:28.520 faster together than if they each ran
00:08:30.830 alone this reminds me of our rails
00:08:33.950 community where there's such a strong
00:08:35.870 culture of building one another up
00:08:37.730 whether it's contributing to open source
00:08:39.860 libraries entering on Stack Overflow
00:08:42.010 writing blog posts and organizing
00:08:44.300 meetups when we help one another get
00:08:47.180 better which improves our ecosystem and
00:08:49.670 helps ourselves get better for those at
00:08:53.540 the front of the pack
00:08:54.560 that's all you creators maintenance and
00:08:56.660 mentors of the community thank you for
00:08:59.360 breaking the winds for us and no I can't
00:09:01.940 do it
00:09:02.390 not fun I mean breaking through the
00:09:04.670 status quo to build this community to
00:09:07.400 introduce new ideas and fight resistance
00:09:09.740 that comes with anything new thank you
00:09:12.260 yeah thank you for blazing new trails
00:09:14.000 for us and thank you on behalf of
00:09:20.830 then for those of us who are writing on
00:09:23.870 the winds of others let's not forget
00:09:25.820 who's helped us to get to where we are
00:09:27.620 and as more people join us it's our
00:09:30.140 privilege to lead and teach them if we
00:09:32.840 embody the culture of learning and
00:09:34.550 sharing well we can trust they'll help
00:09:36.950 us one way or another whether it's
00:09:38.990 directly from the people that we helped
00:09:41.060 or indirectly like the industry having
00:09:43.580 cool great truths like having self
00:09:45.710 flying wheelchairs transport us around
00:09:47.840 the world when we are old and wrinkly so
00:09:51.380 wrapping up what are you training what
00:09:53.750 supporting skills can you train how are
00:09:56.630 you training how can you measure your
00:09:58.850 progress and are you having enough
00:10:00.950 recovery to make your training effective
00:10:03.790 lastly who are you training with who's
00:10:07.070 helped you to get to where you are and
00:10:08.720 who can you help to get better I'm just
00:10:12.200 a young developer that's very grateful
00:10:14.270 for this community who's welcome and
00:10:16.400 thought means so much and I hope we'll
00:10:18.260 all play our part to continue building
00:10:19.820 this community if you have any questions
00:10:22.340 just find me later or ping me on Twitter
00:10:24.380 thank you thank you so much Gabrielle
00:10:29.270 that was amazing
Explore all talks recorded at RubyConf MY 2017
+16