diff options
Diffstat (limited to '')
-rw-r--r-- | 2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt | 696 |
1 files changed, 696 insertions, 0 deletions
diff --git a/2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt b/2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt new file mode 100644 index 00000000..fb2f1603 --- /dev/null +++ b/2023/captions/emacsconf-2023-mentor--mentoring-vscoders-as-an-emacsian-or-how-to-show-not-tell-people-about-the-wonders-of-emacs--jeremy-friesen--main.vtt @@ -0,0 +1,696 @@ +WEBVTT captioned by hannah, checked by sachac + +NOTE Introduction + +00:00:01.380 --> 00:00:06.319 +Hi everyone, my name is Jeremy Friesen, pronouns are he/him, + +00:00:06.320 --> 00:00:07.879 +and today I'll be talking about + +00:00:07.880 --> 00:00:11.519 +mentoring VS Coders as an Emacs-ian. + +00:00:11.520 --> 00:00:14.999 +A little bit of background, since 2015, I've mentored + +00:00:15.000 --> 00:00:16.559 +about 40 software developers, + +00:00:16.560 --> 00:00:19.239 +many of them in career-transitioning roles, + +00:00:19.240 --> 00:00:21.739 +oftentimes from boot camps. + +00:00:21.740 --> 00:00:26.739 +I've also managed a couple of small software development teams. + +NOTE Framing approaches + +00:00:26.740 --> 00:00:30.599 +So I want to think about mentoring and the framing approaches. + +00:00:30.600 --> 00:00:32.939 +We all don't know what we don't know. + +00:00:32.940 --> 00:00:36.419 +So while mentoring, I like to be curious---asking questions, + +00:00:36.420 --> 00:00:37.659 +I like to be visible, + +00:00:37.660 --> 00:00:41.939 +and I also like to pair so that we can share. + +NOTE What are you looking to learn? + +00:00:41.940 --> 00:00:45.299 +When I start, I like to ask the following type of question: + +00:00:45.300 --> 00:00:47.119 +"What have you been wanting to learn more of, + +00:00:47.120 --> 00:00:49.359 +get better at, and improve on?" + +00:00:49.360 --> 00:00:52.939 +Then I like to ask further questions to get an understanding + +00:00:52.940 --> 00:00:55.159 +of where they've been, where they're going, + +00:00:55.160 --> 00:00:57.279 +and what they'd like to achieve. + +00:00:57.280 --> 00:01:00.139 +Later I'll ask coaching questions, "what's going well," + +00:01:00.140 --> 00:01:01.419 +"where are you getting stuck," + +00:01:01.420 --> 00:01:05.999 +and "if you change one thing, what would it be?" + +NOTE Make the work visible + +00:01:06.000 --> 00:01:09.839 +So like many people, I shifted to remote work in 2020, + +00:01:09.840 --> 00:01:13.159 +and I've noticed a higher collaboration in remote work, + +00:01:13.160 --> 00:01:15.919 +when folks make their work visible. + +00:01:15.920 --> 00:01:18.199 +So to do that I host office hours, + +00:01:18.200 --> 00:01:20.679 +I try to attend other people's office hours, + +00:01:20.680 --> 00:01:23.439 +and I'll open up a Slack huddle and just code by myself, + +00:01:23.440 --> 00:01:29.319 +but let folks know, please hop in. + +NOTE Hop in and be curious + +00:01:29.320 --> 00:01:32.039 +I like to pay attention to other huddles that start. + +00:01:32.040 --> 00:01:35.239 +If they're going still for, like, 45 minutes or so, + +00:01:35.240 --> 00:01:36.799 +I'll hop in and say hello. + +00:01:36.800 --> 00:01:39.399 +It's even odds that they're moving along just fine + +00:01:39.400 --> 00:01:40.799 +or that they're stuck. + +00:01:40.800 --> 00:01:43.279 +So by hopping into the Slack huddle, + +00:01:43.280 --> 00:01:45.479 +I'm helping with a common problem. + +00:01:45.480 --> 00:01:47.199 +How do you know when you're stuck? + +00:01:47.200 --> 00:01:50.639 +This is something that---as a manager---folks want to know, + +00:01:50.640 --> 00:01:53.439 +how can I get unstuck faster? + +00:01:53.440 --> 00:01:57.119 +As a human, it can be frustrating to be stuck for a long time, + +00:01:57.120 --> 00:01:58.599 +but you also learn stuff + +00:01:58.600 --> 00:02:00.759 +when you're dealing with the hard things. + +00:02:00.760 --> 00:02:03.219 +So you really need to balance that time, + +00:02:03.220 --> 00:02:07.159 +and I find hopping in, just being a gentle presence, + +00:02:07.160 --> 00:02:10.359 +with yes... an agenda, but just to say hi, + +00:02:10.360 --> 00:02:15.879 +is crucial to help the team members move along. + +NOTE Pairing is for sharing + +00:02:15.880 --> 00:02:17.239 +Pairing is for sharing. + +00:02:17.240 --> 00:02:19.919 +When I pair, I like to let others drive. + +00:02:19.920 --> 00:02:22.239 +They're typing and working to resolve the problem. + +00:02:22.240 --> 00:02:24.599 +I'm giving guidance, asking questions, + +00:02:24.600 --> 00:02:27.119 +maybe thinking through a refactor. + +00:02:27.120 --> 00:02:31.159 +I'm also spending time observing how they interact with their editor. + +00:02:31.160 --> 00:02:35.839 +In the moment, I try to limit advice to, like, one concept. + +00:02:35.840 --> 00:02:37.799 +A lot of folks don't know that `Control-a` + +00:02:37.800 --> 00:02:39.719 +will take you to the beginning of line. + +00:02:39.720 --> 00:02:42.679 +Just sharing that is huge sometimes. + +00:02:42.680 --> 00:02:46.919 +Just gently do it and let it float there. + +00:02:46.920 --> 00:02:48.919 +And assuming we have a regular mentoring session, + +00:02:48.920 --> 00:02:50.399 +I'll make sure to ask how they're feeling + +00:02:50.400 --> 00:02:52.679 +about using their tools afterwards. + +00:02:52.680 --> 00:02:55.679 +I would love to get to the point where they ask, + +00:02:55.680 --> 00:02:58.759 +"You saw me using my editor, what is something + +00:02:58.760 --> 00:03:00.959 +I could learn?" + +00:03:00.960 --> 00:03:03.859 +I'm working on getting to that point. + +NOTE Editor functions + +00:03:03.860 --> 00:03:05.199 +While pairing, I like to pay attention + +00:03:05.200 --> 00:03:07.439 +to how folks handle the following. + +00:03:07.440 --> 00:03:08.559 +Where do they want to go? + +00:03:08.560 --> 00:03:10.759 +How do they get there? + +00:03:10.760 --> 00:03:12.079 +Here they are, now what? + +00:03:12.080 --> 00:03:13.599 +How do they summarize? + +00:03:13.600 --> 00:03:15.239 +I know what I can do in Emacs, + +00:03:15.240 --> 00:03:17.399 +and I assume that VS Code can do something similar. + +00:03:17.400 --> 00:03:23.239 +It's a matter of helping the mentees find those packages and plugins. + +NOTE Where do they want to go? + +00:03:23.240 --> 00:03:24.239 +Where to go? + +00:03:24.240 --> 00:03:25.759 +Search within a project. + +00:03:25.760 --> 00:03:27.999 +Everybody knows about this, but one thing + +00:03:28.000 --> 00:03:29.799 +that has been really critical for me + +00:03:29.800 --> 00:03:31.959 +has been the arrival of `Orderless`. + +00:03:31.960 --> 00:03:34.759 +A little quick demonstration. + +00:03:34.760 --> 00:03:40.719 +If I look, and I have this "chicken" and I do "spell", + +00:03:40.720 --> 00:03:42.200 +I have found one, and they don't have + +00:03:42.201 --> 00:03:43.380 +to be in the right order. + +00:03:43.381 --> 00:03:48.039 +In fact, I can go back, and "spell" is there. + +00:03:48.040 --> 00:03:52.759 +Super easy, helpful, so I don't have to think about it, the order. + +00:03:52.760 --> 00:03:54.719 +Search across projects. + +00:03:54.720 --> 00:03:59.519 +Cross-repository searching is super-simple in Emacs, + +00:03:59.520 --> 00:04:02.739 +and I've never seen anyone do it in VS Code. + +00:04:02.740 --> 00:04:05.639 +I'm also trying to introduce folks to command-line tools + +00:04:05.640 --> 00:04:07.959 +such as RipGrep and SilverSearcher, + +00:04:07.960 --> 00:04:10.639 +not just to look in the project, but to go one directory up + +00:04:10.640 --> 00:04:11.999 +and look across projects + +00:04:12.000 --> 00:04:15.059 +because sometimes when you're working on lots of different projects, + +00:04:15.060 --> 00:04:19.959 +there might be solutions or ideas that come from there. + +00:04:19.960 --> 00:04:23.239 +Also notice that a lot of people use directory trees to navigate, + +00:04:23.240 --> 00:04:25.599 +but I favor the fuzzy text. + +00:04:25.600 --> 00:04:27.759 +So I can do something like `Command-t` + +00:04:27.760 --> 00:04:31.279 +and start looking for things in there. + +00:04:31.280 --> 00:04:33.759 +I just type the name of the file. + +00:04:33.760 --> 00:04:35.319 +I use `consult-projectile`, + +00:04:35.320 --> 00:04:39.539 +which has a lot of really cool functionality. + +00:04:39.540 --> 00:04:43.079 +The big one being I can type `r`, recent file. + +00:04:43.080 --> 00:04:47.719 +I can type `p` and jump to a different project, + +00:04:47.720 --> 00:04:53.439 +so it's a quick navigation tool that I've not seen in VS Code. + +NOTE How do they get there? + +00:04:53.440 --> 00:04:56.519 +Next up is how do they get there? + +00:04:56.520 --> 00:04:58.959 +I like to use LSP for the languages, + +00:04:58.960 --> 00:05:02.879 +and I bound `M-.` to this + +00:05:02.880 --> 00:05:05.519 +and jump back and forth to definitions. + +00:05:05.520 --> 00:05:09.439 +I just showed `projectile` or `consult-projectile` + +00:05:09.440 --> 00:05:12.859 +and its super-amazing multifunction finder. + +00:05:12.860 --> 00:05:15.519 +Also another one that I am very avid about + +00:05:15.520 --> 00:05:19.519 +is the jump between definition and test. + +00:05:19.520 --> 00:05:22.839 +I bind that to `Super-.` + +00:05:22.840 --> 00:05:25.839 +and it helps me jump back and forth + +00:05:25.840 --> 00:05:28.519 +between my production code and my test code--- + +00:05:28.520 --> 00:05:32.119 +especially in Ruby, there's an idiom for that. + +00:05:32.120 --> 00:05:36.639 +There is plugins in VS Code that does this correctly. + +NOTE Here they are, now what? + +00:05:36.640 --> 00:05:39.399 +Next up, now I'm here, what do I do? + +00:05:39.400 --> 00:05:44.599 +Word completion, Emacs just knocks everything out of the park: + +00:05:44.600 --> 00:05:48.199 +`dabbrev`, `templates`, `hippie-expand`, `completion-at-point`. + +00:05:48.200 --> 00:05:52.079 +Sometimes it just hurts to watch people type stuff + +00:05:52.080 --> 00:05:54.319 +that they could quickly expand + +00:05:54.320 --> 00:05:56.299 +because there are words within the code. + +00:05:56.300 --> 00:05:57.919 +Another one is auto-formatting. + +00:05:57.920 --> 00:06:00.039 +Tree sitter...its arrival is great. + +00:06:00.040 --> 00:06:01.479 +I assume this is going to get better. + +00:06:01.480 --> 00:06:04.919 +I love highlighting a region, hitting `TAB`, and it's just formatted. + +00:06:04.920 --> 00:06:08.760 +I've seen a lot of VS Coders... that doesn't work for them. + +00:06:08.761 --> 00:06:11.079 +Don't know why, trying to get them to see it. + +00:06:11.080 --> 00:06:12.900 +Multi-cursor [`multiple-cursors`] and `iedit`... + +00:06:12.901 --> 00:06:14.799 +took me a long time to explore `iedit`, + +00:06:14.800 --> 00:06:17.839 +but the practice... but practicing was huge, + +00:06:17.840 --> 00:06:21.479 +and it has transformed my approach to coding and typing. + +00:06:21.480 --> 00:06:24.519 +Folks know about multi-cursor editing and editing-in-region + +00:06:24.520 --> 00:06:27.919 +but make sure that they are aware of it. + +00:06:27.920 --> 00:06:29.719 +It's important. + +00:06:29.720 --> 00:06:32.619 +Next up is inline searching. + +00:06:32.620 --> 00:06:35.199 +My beloved Textmate... it was the first thing. + +00:06:35.200 --> 00:06:38.439 +In fact, it was why I chose not to use Emacs in 2005 + +00:06:38.440 --> 00:06:41.679 +and went with Textmate. + +00:06:41.680 --> 00:06:43.759 +This is something quite simple. + +00:06:43.760 --> 00:06:49.999 +I can do `search` within here, and I can see "introduced", + +00:06:50.000 --> 00:06:52.239 +and it will show me the line. + +00:06:52.240 --> 00:06:54.119 +What I like about that is when I'm in code, + +00:06:54.120 --> 00:06:56.319 +I can see the neighborhood of other things + +00:06:56.320 --> 00:06:58.359 +and get a good idea of what's around. + +00:06:58.360 --> 00:07:01.639 +Yes, there is `occur-mode` that can be super useful, + +00:07:01.640 --> 00:07:03.839 +but I'm used to the Textmate in it. + +00:07:03.840 --> 00:07:06.639 +I just love it. + +NOTE How do they summarize? + +00:07:06.640 --> 00:07:08.679 +Next up is how they summarize. + +00:07:08.680 --> 00:07:11.719 +I've seen a lot of bootcamp graduates write commit messages + +00:07:11.720 --> 00:07:14.379 +by going to the command line. + +00:07:14.380 --> 00:07:17.039 +In my experience, commit messages written in the command line + +00:07:17.040 --> 00:07:18.199 +tend to be terse. + +00:07:18.200 --> 00:07:19.159 +They miss something. + +00:07:19.160 --> 00:07:23.479 +So I try to really quickly shift folks to use their text editor, + +00:07:23.480 --> 00:07:24.399 +encourage them and + +00:07:24.400 --> 00:07:28.039 +teach them about `$GIT_EDITOR` and `$EDITOR` for the environment variables + +00:07:28.040 --> 00:07:30.999 +so they can make their commits from the command line. + +00:07:31.000 --> 00:07:34.199 +And if not there, help them improve how they do VS Code. + +00:07:34.200 --> 00:07:35.919 +My little screed at the top: + +00:07:35.920 --> 00:07:38.959 +the interface for VS Code's commit is trash. + +00:07:38.960 --> 00:07:44.439 +It is why I stepped away from VS Code when I was exploring editors. + +NOTE General strategies + +00:07:44.440 --> 00:07:48.439 +Next up, my goal is to encourage folks to use editors for writing, + +00:07:48.440 --> 00:07:52.059 +to think about owning that tool. + +NOTE Commit to one item of learning each week + +00:07:52.060 --> 00:07:54.679 +I have them try to learn one thing a week. + +00:07:54.680 --> 00:07:55.919 +Maybe they aren't going to learn it, + +00:07:55.920 --> 00:07:57.799 +but just not to overwhelm them + +00:07:57.800 --> 00:07:59.879 +and find those high-value things. + +00:07:59.880 --> 00:08:03.719 +Jump to spec, jump to code... super-valuable + +00:08:03.720 --> 00:08:06.519 +because I see folks doing it a lot during the day, + +00:08:06.520 --> 00:08:10.079 +and it can really speed up the transition time + +00:08:10.080 --> 00:08:12.759 +and keep the focus between the test... + +00:08:12.760 --> 00:08:15.479 +what you're trying to test and what you're trying to define, + +00:08:15.480 --> 00:08:18.959 +which can get lost if you do the tree navigation. + +NOTE Practice within your knowledge domain + +00:08:18.960 --> 00:08:22.879 +Also I encourage people to practice their domain knowledge. + +00:08:22.880 --> 00:08:27.159 +I learned a lot about programming by doing a bunch of things + +00:08:27.160 --> 00:08:30.019 +related to RPGs---role-playing games. + +00:08:30.020 --> 00:08:33.119 +I did this previously in Ruby---dice rollers, note takers, + +00:08:33.120 --> 00:08:35.879 +random table lookups---and now I'm doing it in Emacs. + +00:08:35.880 --> 00:08:40.519 +Knowing the domain helps me set aside the problem space + +00:08:40.520 --> 00:08:41.999 +and then explore how I code + +00:08:42.000 --> 00:08:47.119 +and how I can implement things differently. + +NOTE Note-taking + +00:08:47.120 --> 00:08:51.239 +Note-taking: pay attention to how folks create a fleeting note. + +00:08:51.240 --> 00:08:54.639 +It can be excruciating as they try to figure out + +00:08:54.640 --> 00:08:55.599 +"where am I going to put this?" + +00:08:55.600 --> 00:08:56.159 +"What file?" + +00:08:56.160 --> 00:08:57.659 +"Where does it go?" + +00:08:57.660 --> 00:09:01.759 +Emacs, we have the *scratch* buffer or anything else, + +00:09:01.760 --> 00:09:07.119 +but ask them about their note-taking habits + +NOTE Help them navigate the proprietary software tar pits + +00:09:07.120 --> 00:09:11.639 +and help them navigate the proprietary software tar pits. + +00:09:11.640 --> 00:09:14.359 +We know that anything that is venture-capital funded + +00:09:14.360 --> 00:09:16.039 +will eventually collapse. + +00:09:16.040 --> 00:09:20.919 +We know that things that don't have a sustainable business model + +00:09:20.920 --> 00:09:22.399 +without surveillance capitalism + +00:09:22.400 --> 00:09:25.299 +is going to also have problems. + +00:09:25.300 --> 00:09:28.559 +Encourage folks to think about how they're owning their notes. + +00:09:28.560 --> 00:09:30.639 +Do they place true value on those, + +00:09:30.640 --> 00:09:33.119 +or are they things that are kind of ephemeral? + +00:09:33.120 --> 00:09:38.519 +And then help them find the thing that makes sense for them. + +NOTE Help show the joy of holisting computering + +00:09:38.520 --> 00:09:43.239 +Put another way, I want people to think holistically + +00:09:43.240 --> 00:09:47.739 +about their generalized "computering" environment. + +NOTE Playing is for staying + +00:09:47.740 --> 00:09:50.079 +And I also think about the reason why + +00:09:50.080 --> 00:09:53.679 +I've stayed a software developer for 25-years plus + +00:09:53.680 --> 00:09:57.999 +is because I approach all of this as play and storytelling. + +00:09:58.000 --> 00:10:02.439 +Sometimes happy byproduct is that I ship features and documentation + +00:10:02.440 --> 00:10:05.199 +and help people get stuff done. + +00:10:05.200 --> 00:10:07.959 +Yet I don't tell folks to use Emacs. + +00:10:07.960 --> 00:10:10.719 +Instead, I'm doing my best to show a myriad of reasons + +00:10:10.720 --> 00:10:14.899 +for why folks should consider Emacs. + +NOTE Conclusion + +00:10:14.900 --> 00:10:18.739 +In conclusion, ask questions. + +00:10:18.740 --> 00:10:22.399 +Find a person who is a VS Coder and just say, + +00:10:22.400 --> 00:10:23.879 +"hey, I learned something new." + +00:10:23.880 --> 00:10:26.719 +We play this game all the time, me and my coworker Kirk. + +00:10:26.720 --> 00:10:27.699 +I love it. + +00:10:27.700 --> 00:10:31.479 +Another goal is showing the malleability of Emacs, + +00:10:31.480 --> 00:10:34.399 +how easy it is to extend. + +00:10:34.400 --> 00:10:36.679 +And obviously there's so much more than what I've highlighted, + +00:10:36.680 --> 00:10:38.719 +but then again, that's Emacs. + +00:10:38.720 --> 00:10:44.200 +Thank you, and I look forward to your questions. |