On this episode of Eat Sleep Code, guest Julie Lerman talks about the Software Developer mindset. How do developers operate in an atmosphere of constantly changing technology while still maintaining legacy code, learning, teaching, striving to be an expert and shipping product? Julie shares her experiences with work-life-balance, travel, and mentoring. We discuss tooling and tech including: Mac vs. PC, FoxPro to Aurelia, and much, much, more.
Julie Lerman is the leading independent authority on Microsoft’s ADO.NET Entity Framework and has been using and teaching the technology since its inception in 2006. Julie is the author of the highly acclaimed “Programming Entity Framework” book series from O’Reilly Media with recent editions on Code First and DbContext. She is well known in the .NET community as a Microsoft MVP. Julie is frequent presenter at technical conferences large and small around the world, such as TechEd and DevIntersection. She also writes articles for many well-known technical publications, including the monthly Data Points column in MSDN Magazine. Julie keeps busy creating training videos for MSDN and Pluralsight.com.
Julie lives in Vermont where she has run the Vermont.NET User Group since 2002 and was a founding board member of the Vermont Software Developers Alliance. You can read her blog at www.thedatafarm.com/blog and her tweets at @julielerman.
00:00 Ed Charbeneau: This podcast is part of the Telerik Developer Network. Telerik by Progress.
00:07 Ed Charbeneau: Hi, this is Ed Charbeneau with Eat Sleep Code. And I just want to let you guys know that we are trying to make the show better. So we've set up a survey at developer.telerik.com/survey, and we're collecting feedback from listeners to see what we can do to make the show better for you. So please stop by developer.telerik.com/survey and fill it out. We'd appreciate it. We've also got 10 licenses to Telerik products and T-shirts that we'll be giving away to 10 lucky winners. Thanks for your help.
[music]
00:51 EC: Hello, and welcome to Eat Sleep Code, the official Telerik podcast. I'm your host, Ed Charbeneau, and with me today is Julie Lerman. Hi, Julie.
01:00 Julie Lerman: Hi, Ed.
01:01 EC: And today, we're gonna talk about the mental processes of a software developer. So we've got a little bit of a soft skills talk lined up. But first, let me introduce Julie. Julie is a Pluralsight author, you may know her from the Entity Framework or data part of software development. She's an author of several Microsoft books on that topic. And she is also the author of the Data Points column on MSDN magazine. You will frequently see her at many conferences. I personally had the honor of seeing her do a keynote at CodeStock a couple of years ago, and really enjoyed that. And you can find her website at thedatafarm.com. And she's also newly the Microsoft regional director. So with that said, Julie, did I miss anything? Would you like to add anything to that?
02:00 JL: Oh, the MVP program would probably be happy to have that mentioned. [chuckle]
02:05 EC: Absolutely.
02:06 JL: Yeah. Cause' I've been a MVP, Microsoft MVP for 13 years. Regional director for a couple of months.
02:18 EC: I have to say, you have a well-deserved, laundry list of great credentials there.
02:24 JL: Oh, thanks.
02:26 EC: [chuckle] So today, we were actually discussing this on Twitter before the show. You do a lot of Entity Framework discussions, and it would benefit the podcast listeners if we took the topic elsewhere. So we decided to do kind of like a soft skills topic. There's plenty of resources out there that you've already done on Entity Framework. So we're gonna take this path of... What are some of the mental processes that software developers go through to get our jobs done? Because we are always in and out of many different applications and operating systems. And we're always learning and always continuing to upkeep legacy projects and things like that.
03:19 JL: I'm glad that we'll be talking about this, because I've been programming for so long, that it's nice to be able to share some of this other side of my experience with people.
03:31 EC: Yeah. Absolutely. You have a long history of experience and you've worked on things like FoxPro and Visual Basic 6, and you've continued to keep up with new things, like Entity Framework and Entity Framework core. And you're working with JavaScript as well. So, what is it like to work across that range of technologies?
04:01 JL: I think it's perfect for a developer. [chuckle] Cause' we've all got a little ADD tendencies. Short attention span, so popping around from one thing to another. And I kid with that, 'cause it's also in many ways really frustrating, because along with that tendency, when you're focused, you kinda need to stay there. So it's really hard to be focused on one topic and then have something come up and you just have to pop over to something else. And also, working in some of these older legacy apps that I'm still supporting, it's frustrating 'cause the tools... I'm so spoiled with newer technologies and newer ways of doing things. And when I say tools I also mean languages and how you express things. It's so frustrating because I'm so limited when I have to go back and work in these older applications. And there's a funny balance with those applications.
05:11 JL: I joke that unfortunately I did a really good job writing them, which is why they will not die.
[chuckle]
05:21 JL: And there's power to that. These are applications that are helping businesses do their work and they're good, they still help them manage the company. But business processes change and it's really difficult to keep up with that. Although for the newer things, like in that particular company where I do the VB6 and the FoxPro app, they also have lots of new apps also. So, when there's a big new thing, we don't just stuff it in those old apps. But we just haven't replaced what's in those apps.
06:03 EC: These VB6 and FoxPro apps, are they specifically apps that you wrote? Or do you have to go back and work with other people's code as well?
06:09 JL: Yeah, yeah. Actually, I think that the FoxPro started out in 1994 as somebody else's app, but it was a little piece and I grew it into something much different. And the VB6 yeah, actually I started that in VB4, I think, taking some work that they'd been doing in Excel for many years and we kind of started there and then just grew it from that. And that's actually the app that really has their core business processes built into it.
06:49 EC: Let me ask you a question I think I may already know the answer to. When you go back to these apps that you wrote several years ago, do you notice a difference in your style of code? [chuckle]
07:01 JL: Oh, my God. Come on, you go back to code you wrote a month ago, [chuckle] it's awful. It's really, really, really hard to go back in there and tweak things, because you just wanna change everything. But changing everything really means rewriting the app. And it's really painful and there's so much technical debt there, eventually these apps are going to be replaced. So we have kind of an agreement about this balance between the technical debt and just sticking another band aid in there to get it to do this one other thing. Even though I just wanna go in and just change everything. I do try, if I'm working in a particular area and I see things that are just too painful, whether it's from the perspective of looking at how the code is or if I'm kind of UI testing it and reliving the user's experience. If something bothers me I will just check with the client and change it a little bit, if needed. Because they're so used to the app, they don't complain about things. And I tell them they should. They're just used to the way things work, right, and I'm like, "Oh my God, this would drive me crazy. [chuckle] I gotta change how that works." But we try not to put too much into it.
08:40 EC: So when you're going from new projects to old projects, you say there's all these things you wish you could use, and you haven't or can't. When you go the opposite way, do you find yourself on like newer projects, doing things an older way that you might have something like LINQ, that help you write code faster, and you just get into the old habit of doing foreach instead? Or do you find it just an easy transition the other way?
09:13 JL: I definitely do everything I can to take advantage of those things in the newer languages and tools that bring such value to us. Just as an example, I don't do a lot of work in JavaScript but I revisit it constantly. So I don't have a lot of client work, although I've actually done some for that particular client. I'm not working in it all the time. So I learned things like jQuery, and learnt how to do some things like that and then I revisited and did some modern data binding stuff. And then I started playing with Aurelia. And one of the things I did when I was working with Aurelia, is try to learn how they're doing things, I'm gonna say, the Aurelia way, Right? Using their paradigms and not leaning on, "This is how I've always done it, like when I did it with jQuery, this is what I knew." Instead of just doing it that way, looking to see if there's a more direct way of leveraging the new tool to do it better. It takes time and it's an investment. But there's a reason for something like Aurelia to be there. So it makes sense to leverage what they've built into their API's, rather than just doing things the way I'm used to.
11:00 EC: This is one of the reasons why I was so excited to get you on the show. We probably, with very much safety I can say that we are the first podcast to have mentioned FoxPro and Aurelia within the same five minute window.
11:16 JL: [chuckle] I span the centuries literally, right?
11:20 EC: This is great though. I love this type of conversation because there's a lot of people out there that dig their heels into a single language, and they get really good at it and that's fine. But I feel like you need to have this variety to have perspective on the language that you're proficient at.
11:42 JL: Well, it also gets you out of patterns. So it does enable you to learn new things. I remember when.NET came out. You know VB.Net and C#. A lot of people were saying that it made real sense for VB programmers, people had been using VB for years, to move over to C#, so that they wouldn't just keep using.NET the way they'd always been using VB6 and VB5. That they would see it as a new language, new APIs, new way of doing things. So kinda force them out of that mold. Even though, it also forces you out of your comfort zone. So I'm doing that all the time.
12:36 EC: Yeah, and when you do that as a developer, you see yourself, the style of code that you write change, you see new patterns emerge that you might not have thought of before. I think JavaScript is a good pairing with a language like C#, or maybe even Ruby, going on that side for a little while and just checking that out. And just see how your development style changes after you even just practice another style of code like that.
13:06 JL: Yeah. And you know, it's funny because I'll whine a little bit about some of the troubles I have with JavaScript, and people say, "Why aren't you just using TypeScript? Because it'll be easier." I just feel like I'm learning more by using... It's like the little lower level. Because it's forcing me to understand these different paradigms and ways of doing things. Even though it'd be easier to just use TypeScript, and still kind of think in C#, so to speak, and still get the JavaScript code. Which I understand that. I understand for a lot of reasons. Because also, the way I do things, it takes a lot of time. And a lot of people don't have that extra time. It's like that's kind of built into my work day.
14:02 EC: Yeah, and this may be a little off topic, maybe not. But another thing that's exciting to see, is with C#, there's actually other programming styles and languages that are having influence on that language itself. So if you've been paying attention to the C# language over the last few iterations, you'll have noticed there's a lot of functional programming coming into the language. Have you dealt with any of that?
14:33 JL: No. I mean, beyond LINQ. I've played a little bit with F# because... Oh, gosh. Hang out with people like Rachel Reese, and it's kind of a mind blowing. [chuckle] You always see that when Rachel, the F# people, do presentations at conferences, you always inevitably see tweets, "Mind blown."
15:00 EC: Absolutely.
15:01 JL: Entity Framework never blows anybody's minds, what can I say? But anyway, so I've played with it a little bit and even written... With Rachel's help I even used my data points column as an excuse to jump in and play, just to get some kind of understanding of it. So no, I haven't really taken advantage of those kinds of things in C#. But just as an example, when I was first using Aurelia, which was using ES6, I have to say that carefully, ECMAScript, not Entity Framework. One of the things in there that Aurelia took advantage of was string interpolation. I'd never been exposed to string interpolation before. I was like, "Oh, this is cool." And then I realized C# 6 had it, I just kinda had missed that. Somewhere I saw C# 6 string interpolation. I was like, "Whoa, wait a minute. Hey, I know what that is, 'cause I did that in JavaScript." [chuckle]
16:05 EC: Yeah, that's an excellent point to make as well, because I've noticed... I do a lot of C# in JavaScript, so I notice the things like JavaScript picking up a lot of C# functionality. So string interpolation is identical in ES2016. And then, there's also arrow functions in JavaScript, which are essentially Lambda's in C#. So, those two languages are aligning on a lot of things. But one's dynamic and one's static, so they're still very different. So, it's interesting to see the differences between writing those two.
16:48 JL: Yeah.
16:50 EC: So, crossing all of these language boundaries from VB6 and FoxPro and so on.
16:57 JL: Oh, let's not talk so much about those things! [chuckle]
17:00 EC: Well, we haven't really...
17:01 JL: That's like 1% of what I do.
17:06 EC: Absolutely. But...
17:06 JL: A painful 1%. [chuckle]
17:09 EC: One thing we haven't touched on with all of the variety of different technologies, let's just say, is the tooling that surrounds all those things is also different.
17:20 JL: Yeah, yeah. Well, a funny thing happened, what is it, on the way to the forum? Which is that, because the JavaScript work I was doing, that led me to doing Node. And Node is server side, so you can't debug that in the browser like you can with JavaScript. And that led me to install Visual Studio Code on my Windows machine, because you can debug Node like it's an internal feature of Visual Studio Code. There I was using this cross-platform Visual Studio Code, and they were getting more and more features in it with extensions, including C# and ASP.NET Core, and things like that. I ended up... Not as my core development machine but for other reasons, I ended up getting a MacBook, because it's possible to... With ASP.NET Core and EF Core, they're cross-platform and Visual Studio Code has the support for them, which meant I could then code in C#, ASP.NET Core, EF Core on the Mac, using that same Visual Studio Code, the same one, because it's a cross-platform IDE. So, it's just a funny... I'm on my Windows machine right now, and a lot of my work I do on that. But it was again, just like trying these other things. Like there I was on a Mac having to learn new keyboard commands and everything.
19:10 JL: But I had that funny continuity of that transition to use that. And I've been using it to do Entity Framework Core demos, which it's fun, and it's cool, and for me, it's just a true expression of how cross-platform ASP.NET Core and EF Core are... Not only can you deploy to OS X or Linux, you can even code and debug in these other environments. But I know it's also been freaking people out a little bit, when I did that talk at Techorama in Belgium. Okay, there was also a Xamarin talk in the next room, which basically made a vacuum of all the rest of the sessions in the conference.
[chuckle]
20:02 JL: But there were not a lot of people in that talk. And I realized it's because these are people who use Visual Studio, and they use Windows machines, and my talk was kind of... It's Entity Framework Core on a Mac. So people, I think, are freaking out thinking that I am saying, "Give up all that we have of Visual Studio, and you should use this on the Mac now." Which was not my message, and I realized it was a mistake. I can still get the same features out of EF Core and ASP.NET Core, whether I'm doing it on the Mac or doing it on Windows.
20:42 JL: The tool, of course, is much more... I mean I've got so much more available to me with Visual Studio on my Windows machine. So it's really interesting playing around with these ideas, and figuring out how to express them. What is it? For me, it was like, "Oh, this is fun. Hey, I can use a Mac. I've never used a Mac before." But that wasn't the core message. Because people are like, "Hey, I need to be productive. By moving to the Mac and using Visual Studio Code you just took away 90% of what I'm used to being able to do with C# in Visual Studio." So, Visual Studio Code is really, really incredibly impressive. And it is really cool to be able to do that right on the Mac. But it's really more about, "Hey, this stuff is so cross-platform. I could even code it on a Mac, and still end up with the same application." Anyway, so tool... I have a Mac. [chuckle] But I go back and forth. I've got my Windows laptop and my Windows big CPU developed machine with gobs of gigs of RAM, and four hard-drives, and all of that in it.
22:06 JL: And I've always had a Windows Phone, and my Windows Phone got smashed to smithereens accidentally when I was in Brazil this spring. So, it's like, "Hmm, do I get the new Nokia?" Which I really wanted. I love the Windows Phone IDE. I really... I mean, not the IDE, the UI. I really, really love it.
22:27 EC: Yeah, absolutely.
22:29 JL: But I ended up getting an iPhone. Just because, I don't know. [laughter]
22:36 EC: Well, unfortunately, the writing's been on the wall for a while. And I was one to hold out as well. [chuckle]
22:42 JL: I was so torn. Because I really, really loved my Windows Phone. Really loved it. Loved the UI. I look at the iPhone, I really think it's ugly compared to... I mean, the phone itself, the device, the physical build of it is extraordinary, it's beautiful. But Nokia is... The Lumias are also beautiful, physically beautiful phones. But the UI, I think the UI of the iPhone, is really ugly. [chuckle] It's just like so much stuff happening on the screen. Whereas the UI on Windows Phone, so pretty.
23:22 EC: It's a shame they couldn't get more of a user base behind that thing and more apps. I think that's what really killed it. And I held out as long as I possibly could. Just like you, I accidentally smashed mine.
23:36 JL: I didn't even do it, somebody else did. Really it was just an accident. I don't know. Maybe hopefully, the surface phone business focus whatever... It'll really be a shame to lose all of that. So hopefully that will be a success. That's not my area, I'm not an expert in mobile or anything like that. I don't know. It's just a tool for me, it's my phone.
24:10 EC: Now, you've said you bounce back and forth between Windows and Mac. And I was gonna ask if you found any learning curves that really hit home with those? And I'll share one of mine really quick. I was handed a Mac and asked to do some work on it, not that long ago, and it wasn't the Window situation or the menus or the operating system really that bothered me. As weird as our brains work, I couldn't work the keyboard. [chuckle]
24:44 JL: How long did it take you to figure out how to right-click?
24:52 EC: That and...
24:52 JL: I had to google it, right? [chuckle]
24:55 EC: The backspace and the command buttons situations threw me for a loop.
24:58 JL: Yeah, the back and delete, and the right-clicking, which is two-finger click. So, the weirdest though is, I have this beautiful 27" monitors. I've got my keyboard, and mouse. So, I really wanna be able to leverage them sometimes when I'm working on the Mac. So I found that VNC viewer, so you can basically RDP from a Windows machine into a Mac. So, I'm at my Windows machine, with my Windows keyboard, working on a Mac. So, I'm using the ALT key like the command key, and doing all that. And then I go back to working in Windows. [chuckle] My fingers just do not know what to do anymore. It's not even I'm using the Mac keyboard, I'm using a Windows keyboard to drive a Mac. And then I go back to using the Windows keyboard to drive Windows, [chuckle] it's just like my brain cannot compute. Commute, compute? No, compute.
26:26 EC: Your muscle memory on these... Even the apps and non-physical things as well, it's something you can't really plan for, [chuckle] you just end up having to deal with it.
26:42 JL: So, setting aside the productivity issue that you're going to encounter when doing this kind of stuff, whether I'm like, "Oh, I'm just gonna code in C# on a Mac or Mac keyboard, or this or that." Again, my productivity just goes prrr! Like there's nothing going on, 'cause I'm just in learning curves a lot. There's a huge benefit to keeping yourself nimble enough to be able to learn. Because if you're in this industry and you don't have the ability to learn, you're screwed. Because everything's changing all the time. So, these are kind of unplanned tools, it's like exercising. Exercising my learning muscles, constantly, constantly. So that I'm continuously able to learn and able to keep up... And here I am working in the EF Core, and EF since the beginning of EF. And trying to still be a person who is an expert in it. And it's really hard to keep being an expert in something, [chuckle] that's a lot of work.
28:05 JL: I think all of these things lend to my ability to do that and also not to get bored. There's another thing that drove me to get the MacBook. "Oh, Julie, can you come and do another Entity Framework talk at our conference?" I'm like, "Ah, really?" "Here's a list of all the new things in Entity Framework." You can get that anywhere, you can read that anywhere. It's a little boring. For me, "Oh, I'm just gonna get a Mac, and I'm gonna code Entity Framework on a Mac." I was like, "Okay, it's still fun. Entity Framework is still fun."
28:46 EC: Now, you talk about maintaining that expert level and...
28:53 JL: No, attempting to.
[chuckle]
28:55 EC: Attempting to maintain that expert level on a certain technology. And then, stuff is evolving extremely rapid, specially as off late, it seems like it's just really accelerated, maybe it's just me, I don't know. But you have to do that while maintaining things that you've already built. And you're also going to conferences and speaking, and workshops, and code camps. You're an extremely busy person. How do you maintain that level of expertise while, still learning about all this new things, and at the same time trying to teach others?
29:43 JL: Well, for me, I have to say one of the things that does, and it wasn't an explicit life choice, it's just how my life worked out, that does make it a little easier to do this, is I don't have kids. And again, I didn't say, "Oh, I'm gonna not have kids so that I can do all this stuff." The 'no kids' was not a choice, it's just how life happened. So, that already changes a lot and it enables me to do a lot more things, that otherwise I'd be getting called to Family Services all the time for.
[chuckle]
30:27 JL: That actually has made a big difference, but I still have to make a lot of choices. And speaking at conferences, if it weren't for having to fly and the travel part, it would be even harder to say, no. But I have to pick and choose. I can't speak at every place I'd like to go, every event I would love to participate in. All the places around the world that would be awesome to visit. And I had to do things, like I covered up my vegetable garden with black plastic last spring, and that plastic is still on there now in June this year. So, I just made a little smaller garden closer to the house. So, normally this time of year, I would have hundreds of miles logged on my road bike, and I've got 20. [chuckle]
31:35 JL: So, right now, I don't feel like I'm doing work-life balance very well. But on the other hand, I've made commitments, work commitments, that I can't not fulfill. So, I have to make those choices. And sometimes I'm able to make those choices in a way that I'm on my bike more and I'm having more of a fun Vermont summer. But I can't beat myself up for it, either. These are the choices I made, especially with the commitments. I knowingly made these commitments, and I did so because I wanted to. These are the things I wanted to do, but it's a really hard thing to stop and say, "Alright look, I wanna do all these things, but that's impossible." So, I have to pick and choose which of those things I'm going to be able to do, 'cause otherwise everything is gonna be half-assed.
32:38 EC: Yeah, I think as far as work-life balance goes, I don't think anybody can really say they have like a perfect handle on that situation. And it boils down to, "Are you happy, and are the people around you, like your family, happy?"
32:57 JL: Yeah, and even if, you know, you have these moments of, "Oh my God, what have I done to myself?" Or, wake up in the morning and I see 1,000 tweets coming from NDC Oslo and DDD Exchange. I chose not to submit to NDC Oslo, as much as it's an amazing conference, and Oslo, and this June, and all of that. But I knew I was just coming off of three months of conferences, and it's like I have to put a line, I have to stay home, I wanna enjoy Vermont, I have to get some work done. And if I'm gonna travel, I gotta get in the car and go visit my dad. Yeah, it's just hard making those choices.
33:50 EC: Yeah. And I think it's, "Are you happy with the choices that you made?", that really matters.
33:55 JL: You have to be. You have to be. And at my age, you kinda learn that. I think that's a learned thing, of which choices, which balance, which mix of those choices, is going to work best for you.
34:17 EC: Absolutely.
34:19 JL: Yeah, I do think that's a learned thing.
34:23 EC: Yeah. It's something that takes experience, just like anything else. When you're getting extremely busy early in your career, you may get really frustrated with that type of thing. And of course, you have outside influences, like your spouse, or parents, or brothers and sisters, that want your time and attention, or children.
34:50 JL: Or four kids.
34:52 EC: Like myself with four daughters. Travelling is extremely difficult, because if you think about the math, with four daughters and if you include the wife, there...
35:05 JL: That's a lot of stuff to miss.
35:07 EC: If you include the wife in that, and myself, that's six people, that's a birthday every 2 months, that I have to navigate. [chuckle]
35:19 JL: Well, just a lot of events, a lot of things. I mean, I feel guilty putting poor Samson in the boarding kennel. Yeah, I know he has a good time there. [chuckle] He has a really good time there. At home, he's just lying around all day long going, "Yeah, I know you gotta work."
35:40 EC: I'm assuming Samson is your puppy dog.
35:42 JL: Oh! Samson is a.k.a. Giant Puppy on Twitter. Yeah, I don't have a kid to put in a boarding kennel.
35:50 EC: So, he's on your Twitter account, or he has his own Twitter account?
35:55 JL: Oh! He has his own Twitter account.
35:57 EC: Oh, I did not know this. I must follow.
[chuckle]
36:02 EC: So what type of things does Samson tweet about?
36:09 JL: I don't know. Great walks, food, the fact that he's a little bored and would prefer that I wasn't working so much, and would like to go for a walk.
[chuckle]
36:23 EC: Awesome. So when you're out and you're speaking, some might consider that mentoring, but you also do some mentoring activities for work as well.
36:37 JL: Yeah. Well, I do have to work for a living also, [chuckle] so somewhere in all of these would... Playing with all these new technologies, 'cause when I'm learning JavaScript, I'm not doing that because I've got a JavaScript project for a client, it's because I'm curious about JavaScript and I know that my curiosity will help others. And so I could write about it or do presentations on it. But yeah, I have to support that habit. [chuckle] So part of what I do, when... I did my column, and Pluralsight also is definitely work that I get compensated for, but I also mentor teams. It's more teams than individual developers, 'cause individual developers have different kinds of needs. Sometimes I'll do it over Skype, sometimes I do it on-site, which is really cool, really productive. I'll go in for two or three days, and sit around a table. This is not training. This is not me standing in front of a room giving a lecture, 'cause go to a conference, watch a video, read an article, if you want that.
37:57 JL: So I actually work with teams that are having specific problems or specific needs, and I sit down and spend two or three days being part of the team and helping them through things that they don't happen to have somebody on-site expertise in. Sometimes, I'm bringing my decades of experience to a team, where a lot of people are young and they don't have a lot of experience, so there's some things they're encountering about architecture or something like that. I seem to have a pattern of a lot of the companies I work with, are dealing with legacy software that they are replacing. And I help them with their legacy minds, so to speak...
[chuckle]
38:52 JL: Their legacy perspective, so that they're truly... Like you were saying before, "Do you find yourself doing things the same way?" So I'm helping them understand newer ways of designing applications, or perceiving your domain, or even taking advantage of new Entity Framework ways of doing things. But it's not specifically Entity Framework stuff. A lot of it is domain-driven design, architecture and things like that. So yeah, that's a lot of fun. I really love that.
39:28 EC: Specifically regarding the younger generation of developers that may be coming out of school, is there anything you find when you're doing these mentoring sessions, that school's just not preparing these developers for?
39:48 JL: Well, I think a lot of the focus is on code and syntax, and not... So really thinking things through and understanding business processes and things like that, is such an important part of doing. That depends on the make up of a development team too, because somebody's gotta sit down and write the code too. I remember having an interesting conversation with somebody years ago at a conference, where he was a business owner of a development shop, and his biggest problem that he was having, was the younger programmers were afraid... He was giving them a day out of every week to go learn whatever they wanted to learn, and they were really reluctant to do that, because they were really afraid of putting themselves in a situation outside of what they knew they could do and knew that they could be successful at. And they were afraid of failing. They were afraid of going back to being a beginner at something, and going through a learning curve and not having the confidence that they've just newly-gained. Like "Finally I am good at something and somebody wants to pull the rug out from under me." That's the same thing I was talking about, what I'm doing constantly. I'm constantly pulling the rug out from under myself, because I really think it is the way to be nimble.
41:32 EC: Yeah, I completely agree. I subject myself to code katas and stuff like that.
41:41 JL: Those are fun.
41:42 EC: Yeah. On different languages. One of my favorite ones, which I'll be using it as a conference workshop, is to build a poker hand-scoring algorithm. And I'll just take that and whatever the new language is, like I did it in Ruby, I recently did it with C# and then rewrote it in functional style, using C#.
42:12 JL: That's such a great idea. Good for you.
42:16 EC: Thank you.
42:16 JL: Yeah, that's cool.
42:17 EC: So I'm taking that one to a workshop in August.
42:21 JL: In the workshop, are you going to walk through the different languages? Like, "Okay, let's do it again. [chuckle] Okay, let's do it again, don't look at the old code."
42:34 EC: In the workshop what we'll do is, we'll write some unit tests in C# to create a poker scoring game. And then we will refactor that code, using functional mindsets, to see what the difference is between the object oriented version and the functional version.
42:54 JL: What conference are you doing that at?
42:56 EC: Music City Code.
42:58 JL: Where's... Is that in...
43:00 EC: It's a newer one. It's in Nashville.
43:00 JL: In Nashville. Okay, that makes sense. Oh man, that sounds like fun.
43:05 EC: Yeah, I thought it would be a fun talk. And I'm a visual learner too, so I plan on getting some cheap decks of cards.
43:10 JL: So how long is this session? Is it a half day workshop or something?
43:16 EC: Yeah, it's four hours.
43:17 JL: Oh, shoot. You can't think of a way to cut that down to about an hour, so you can do it at our the Vermont Code Camp in September?
43:27 EC: I will accept that challenge.
[laughter]
43:32 JL: People love doing a hands on. That would be so much fun.
43:37 EC: We'll take that offline and sometime hammer that one out. That would be something I'd like to do.
43:43 JL: Yeah. That's cool.
43:45 EC: Yeah, so it looks like it'll be fun. But that's the kind of things that I'll do. Another one I did is, I took something I wrote in C# as a prototyping tool, and then I was like, "You know what? This would be great if everybody could use it in JavaScript land," and just tried to port that over. And the surprising thing was, is how easy it was to do. And I actually procrastinated on it much longer than it took me to actually execute that.
[chuckle]
44:18 JL: You thought it was gonna be hard, so it was hard to sit down and focus on it, then it turned out to be easy?
44:24 EC: Yeah, it was just kind of worrying myself like, "Oh, this is gonna be terrible, I'm gonna be at this for months. It's not gonna work and I'm gonna have all these... I'm not great at JavaScript." This was before I really knew JavaScript anyway. Like I said, it was an exercise to learn it, so it was one of those things, I use the quote from "The War of the Worlds" book, "I was a battleground of fear and curiosity."
44:51 JL: Oh, God! Yeah, it's perfect.
44:53 EC: I was scared to learn this new thing, but I was curious about it enough to get in there.
44:58 JL: What a great saying for coding. "Coding, a battleground of curiosity and fear." Did I get that right?
45:05 EC: Fear and curiosity, it's HG Wells. "War of the Worlds" has some really good stuff in it. So I'll throw those in my slides, you'll see those now and then. But it's just taking something that challenges you and bringing another language or framework or something into it, and seeing if you can execute on it, I think helps a lot.
45:28 JL: I find I do that when I'm challenged to learn something new. I'm like "No, no, it's too hard. I'm not doing this anymore, it's to hard," but you just can't stop, right? And then you get to that fulcrum of where it works and you get it, and you're like, "Oh, it's so awesome." Knowing that that's there, it kinda helps you get through the hard part. I'm in no shape to do it right now, but there's a climb near where I live. We've got steep roads here in Vermont, so when I say a climb, I'm talking about road cycling. It's like a three mile climb and the first two miles are just this slow uphill, uphill, uphill, and there's this point where it's a little steeper, and it's like, "Oh, I just can't make it anymore." But just beyond the end of that little spot, 'cause it's windy, you can't see it, but if you can just get around that corner and up the next thing, then it flattens out for a few hundred yards. It's just enough to catch up before the 20% grade at the end. I am not exaggerating about that, by the way.
46:50 JL: I realize you've heard this story before, because I talked about it in that keynote at CodeStock. So I kept getting stuck at that spot, I couldn't get past... I was like, "Uh, I'm dead. I can't go any further." And then one day I got a little further and I was like, "Oh, if I could just get myself around there, then I know there's this kind of golden place where it flattens out." So no matter how hard it was, knowing that that spot was there, helped me just push through that last few hundred yards every time, even though they were the hardest. Just knowing that that's there. And that's what it feels like with coding and learning. As long as I know that that's gonna come, I know I will succeed, I will get there. But oh my God, the pain you have to endure on the way. [chuckle] It's worth it, right?
47:50 EC: Absolutely.
47:51 JL: It's worth it. It's crazy, we're crazy. [chuckle]
47:55 EC: I think that's excellent advice to end this on. Are there any sessions that you're giving, places you're speaking, conferences that you'd like to let people know about, before we go?
48:11 JL: No. Coming up, I'm, oh, speaking at DevTeach in Montreal. I'm gonna be talking about JavaScript, and I'm also gonna be doing the Entity Framework Core on my Mac there. I'm gonna be doing that again at.NET Fringe in Portland, later in July. And the only other thing I've scheduled for myself is, so for the rest of the year so far, is DEVintersection in the fall, of course. I'll always be a DEVintersection in the fall. That's out in Las Vegas.
48:49 EC: And then your blog is thedatafarm.com?
48:53 JL: Yeah.
48:53 EC: And we'll post links on the show notes for all of those things, and to your Pluralsight courses as well.
49:01 JL: Great.
49:02 EC: So if people are looking for those resources they can find them.
49:05 JL: Super. Well thanks, it's been fun to talk with you, and I'd love the direction you brought the conversation into.
49:13 EC: Well, thank you very much. I really appreciate your time. I know you're a very busy person, so happy to have you on the show.
49:21 JL: As are you. As are we all.
[chuckle]
49:24 EC: Well, thanks so much, Julie.
49:26 JL: Great. Thanks, Ed.
[music]
49:40 EC: Hi this is Ed Charbeneau with Eat Sleep Code, and I just want to let you guys know that we are trying to make the show better. So we've set up a survey at developer.telerik.com/survey. And we are collecting feedback from listeners to see what we can do to make the show better for you. So please stop by developer.telerik.com/survey and fill it out. We'd appreciate it. We've also got 10 licenses to Telerick products and t-shirts, that we'll be giving away to 10 lucky winners. Thanks for your help.
Ed