Connell, a UK-based .NET developer and senior software engineer at Stack Overflow, tells the home team about his path to software development via text-based RPGs, his work on Stack Overflow’s Community Enablement team, why Agile gets so much hate, and what he’s learned giving conference talks to developers.
ICYMI, listen to our episode with Agile pioneer Jim Highsmith: The meeting that changed how we build software (Ep. 579).
Explore Connell’s website or his talks.
Connell will be speaking at DDD East Midlands again this year: October 7, 2023 (with apologies to our British listeners for the date format).
He’s also on GitHub, Twitter, and Stack Overflow (naturally).
Thanks to Connell for answering his own question: Why does this SelectMany perform several SQL queries instead of a single join?.
[intro music plays]
Ben Popper Hello, everybody. Welcome back to the Stack Overflow Podcast, Thursday afternoon goof edition. This is a place to talk all things software and technology. I am Ben Popper, Director of Content here, joined by my teammates on the content team, our very talented writer, Eira May, and our blog editor, Ryan Donovan. Hey, y'all.
Ryan Donovan Hey!
Eira May Hello!
BP So people may not know this, but one of the things we do with new software engineers that we hire is we haze them. We bring them on the podcast and we just ruthlessly haze them. I'm just joking. Today we are lucky enough to be joined by Connell, who recently joined Stack Overflow on the software engineering side, and is also himself a creator, making some very cool YouTube videos, writing pieces, generally trying to get his thoughts out there. We thought we'd have him on to discuss a little bit of how he's participated with this site, how he ended up in this position, and what he thinks about the current state of software development. So Connell, welcome to the program.
Connell Sharp Hey, hey. Thank you very much for having me.
BP Give people the quick flyover. How'd you get into the world of coding? What kind of education or sort of career has brought you to where you are today?
CS Oh, it's not a very quick story. It doesn't involve any education really, either. I got into it playing games when I was a kid, sort of fell into it.
BP What were your favorite games?
BP Right into working at 14. That's very cool.
CS Well it was after school, so I was still in school doing normal subjects.
BP Oh, I thought maybe the labor laws over there were a little laxer. That makes sense.
RD So we saw a lot of your online work as Ben had mentioned. Can you talk about how you started doing the little YouTube videos? A lot of them are sort of architecture-based.
CS Yeah. They came from a couple of years ago when I did a talk at a conference, a local conference, which was well received. And there was a couple of bits that I thought could have been better refined, so I made a little animation, a little part of the presentation really. I'm sort of into watching that educational content where there's somebody talking over it and animations going around, so I thought I'd try my hand and did that and then left that for about nine months, I think, and now I do about one a month.
BP Did you have to teach yourself animation, or what are you using for that?
CS It's a total cheat. I'm using Keynote. I make the presentation, export it and then use iMovie to stretch and crop, or stretch and skew. If you call it a presentation, that's all within licensing, right?
RD That's right.
BP This is for educational purposes only.
RD You also wrote something about giving conference talks, and I've tried to help people with conference talks at previous roles and was recently internally asked to maybe do something. Tell me about the whole conference talk deal. How do you prepare for that? Is it terrifying?
CS Yeah, it is very terrifying, especially the very one that I was writing about there that you're referencing, which is DDD East Midlands. That was my first conference talk other than little internal talks, but first out in the wider world. And I was sort of pushed into it by a colleague who said, “It's all anonymous submissions and people vote without knowing who you are, so just put your idea out there and see if people vote for it.” And they did and I then had to do that. I couldn't back away from it at that point. They did offer a lot of prep for us, which was pretty good. They had a little workshop where they would give you little pointers. But I just went over it a lot, practiced in front of–I want to say the mirror, but it wasn't. It was a screen.
RD We'd often run through it with somebody and just go over it and make sure they're comfortable with it.
CS There were three colleagues that were doing talks at that same conference. We did sort of not the full hour to each other. We went through the slides like, “This is what we're going to talk about.” That gave a bit of confidence that at least the slides made sense.
BP I mean, someday when you start your own company and you end up having to be on stage in front of a lot of reporters at a developer conference, these skills are going to come in handy, that kind of showmanship.
CS Are you speaking from experience there?
BP I haven't invented any bestselling devices. They didn't ask me to speak about the key, but we did sell out. So I know you mentioned that you are a fan of Agile and talking about iterating and learning. Tell us a little bit about what you're working on here at Stack Overflow and how you try to maybe apply some of those principles within the team.
CS Cool, yeah. Our team is called Community Enablement, so we are mainly dealing with moderator tooling, looking through the sort of audience on the public platform that not a lot of people see. I've used Stack Overflow pretty much since it existed, I think, and there's a lot of stuff there that I had no idea existed because I've never been a moderator and it's very underlooked. I've only been here for a few months, but I understand there's been a sort of Agile transformation. The company's been around for a very long time and we're trying to move towards this more iterative style of work, which I've grown to love over the last few years.
RD We had one of the original Agile signatories on a few weeks back– Jim Highsmith. And anytime we talk about Agile here, somebody's like, “Ugh, Agile,” and then other people are like, “You're actually doing it wrong.” What do you like about Agile and why do you think there's such hate about it?
CS Maybe talking about Scrum or a specific kind of Agile? I don't know. You get a lot of people that say, “Ah, I don't like Agile because we're forced to do sprints or whatever,” which isn't what you have to do. Manifesto never said anything about doing two-week iterations or anything like that. There's a lot of that I think, or you get it from maybe people on the product side that think an iteration means I can't get change done in, so it's not Agile. Like, “Two weeks. Wow, that's not Agile. We have to wait two weeks before we can get any change through.” It doesn't have to be like that at all, I don't think. What other sort of examples are there like the feedback that people are saying there?
RD It always feels like people are like, “This is just a project manager getting out of control and controlling people,” and almost feels like they're mad at the management of it and not the sort of work distribution, or that people are just picking off issues with low story points just to kind of make sprint numbers.
CS Yeah, artificially gaming your velocity. I guess there's a little bit of gamification there. You don't even have to use story points. That doesn't have to be Agile either.
BP I mean, whatever you start to measure can become a perverse incentive pretty quickly. That's just how things go and it's hard to get around that. You linked us to your original SO profile. There's some really good stuff in here. Somebody had an issue with SignalR, “The SignalR request throwing off hub could not be resolved.” And you said, “I had the same error because the class was internal and I made it public.” Then it was fixed and the person said, “That was it! Thank you!!”
CS That was a very old one. I'd answered that a year after it was asked or something, is that right? I do remember that. A couple of jobs ago, working with SignalR quite heavily.
EM I was just going to jump in and ask, I know you've been a contributor for a long time, you said since basically as long as Stack Overflow has been a thing. I wanted to ask about the path from doing that to now working here.
CS Yeah, well that's one of the main reasons I wanted to work here, wasn't it? I know I spoke very briefly about education and falling into a job, but because of that self-taught nature, Stack Overflow was where I learned most of my stuff, usually through finding somebody else's question, but asking and even answering. I went through a year or two, you'd probably be able to see it, probably about 10 years ago now, where I would just answer questions to grow my own knowledge. I would just go and seek out what other people want to know, and then I'd go and Google it or play with the tooling myself and try and find out an answer, and that helped me get better. So it's great to, 10 years after that, be able to give back on the other side, so to speak.
BP Yeah. I see you also did the classic trick of asking a question and answering it yourself. That is the best way to get reputation on Stack Overflow.
CS Oh, yeah. Prove your own answer.
RD You didn't use a sock puppet to answer it wrong and then fish out a better answer?
CS No, I just get ChatGPT to answer it wrong and then get somebody else to answer it right.
BP This is classic. Someone says, “Why can't you just do this instead?” and then someone comes to your defense, “Well, he's exploring C language concepts.” “I'm just interested in why,” you say. “Well, this looks like a simplification for beginner programmers only. Any seasoned programmer really shouldn't be using this for real projects.” But hey, you got some upvotes. Commenters can comment.
CS What question was that? And how long ago was that?
BP “Why can't I define top level extension methods in C9?” This one was from two years ago. You went through the whole life cycle. Denial, grief, acceptance, it's all in there.
CS Yeah, I remember that. So somebody raised a GitHub issue about that one, I think, and I went to the language design team to try and find out. I think that's right.
RD Oh, somebody actually went to change the language?
CS I think somebody else. At least one other person thought it wasn't a stupid question. No, not to change the language. They were basically asking the same question, but as a GitHub issue.
BP So you were mentioning that you ask and answer questions to learn and that you like building educational content. These days, people have access to so many different varieties to onboard themselves into the tech industry. Do you peruse TikTok for coding tips? Do you go on Twitch and watch people livestream their code? What are some of the other ways you're interested in how people can learn this stuff?
CS Neither of those two examples there. Twitch is great, but I've never used it for coding. YouTube videos I like watching, usually later at night as I'm half falling asleep, putting YouTube on my TV and watching something, usually some kind of educational video. So that could be coding or just physics or whatever.
BP And then as you're dreaming, your mind is sort of processing that and when you wake up in the morning, you've learned a new language.
CS Oh, yeah. I fall asleep to it. It's subliminal.
RD Godzilla is teaching you about physics.
CS It's when it goes on to the next video and goes to something random and you wake up to it like, “What?”
BP So one of the things that everybody's talking about in the world of software development, obviously, is the impact of AI/ML assistants that are right in the IDE which are fairly common now. What's been your experience with this stuff? Do you use any of it professionally or play around with it and have thoughts on it?
CS I use GitHub Copilot. And I've asked ChatGPT a couple of questions. Still it's such a habit of going into Google with an error message or something. Maybe the world is going to change for that. Copilot, I find very handy though.
RD Yeah. I mean, a friend of mine, I talked to him this weekend and he said he's 10 times faster with ChatGPT just doing the sort of boring typing stuff, the stuff that's boilerplate that you have to do for everything.
CS I did use it in my first couple of weeks at Stack Overflow. I realized that I'm sort of trying to solve these programming problems and I've got Stack Overflow tabs open and then my local environment, which was a hard thing to switch between. So I made a little user script that added a little colored dot depending on if you were in production or a local environment or anything like that. And I basically asked ChatGPT how to do that– how do I grab the favicon, add a little colored square to it, and then print it back to the page? But it gave me the wrong answer first. It gave me an answer that had a cause issue. You can't write back, you can't use an edited canvas and then put it back as the favicon. I tried asking ChatGPT, “This is the error I'm getting. Can you help with that?” And it gave me a very confident answer that was totally wrong. I ended up having to solve it in my own way.
RD Well, it's just like a lot of software engineers.
CS Very true, very true. Maybe my answer was wrong. But no, it told me to do one thing and said, “That would avoid your error,” and it didn't. I just got the exact same error back.
BP Right. What about Stack Overflow for Teams? Have you used that for onboarding at all? Has it been useful?
CS Here, yes, definitely. I also proposed it at a previous job as well, but it didn't land unfortunately.
BP Tell us a little bit about how you would use it at a place like Stack Overflow for setting up your developer environment. How do you get up to speed using that?
CS Oh, it's great. We find that you can't get those sorts of answers on Google or ChatGPT or anything. So a lot of stuff, especially asynchronously with the time zones, my US colleagues aren't awake when I start in the morning so usually I search through an SO internal that we've got, and somebody's probably asked the question before or something similar, just as you would through the public Stack Overflow. It's the same thing, but you've got internal knowledge in there.
RD So go back to the beginning about all the architecture diagrams. What interests you to talk about the software architecture side of things as opposed to the line level code?
CS Well, I think they're kind of one in the same. And I try and get the same slide into any talk I do, which is that software is about drawing boxes and I think we've always gone from not putting everything in program main or your main script bar. We make functions, we try and draw little boxes around things, we say these variables belong internal to this little block, and then we put methods in classes and then we put classes in class libraries, and it's all just layers upon layers of the same sort of thing. It's just encapsulating things, making some things private and putting them in their own little area. And then moving into microservices architectures it was the same. Well, it felt like the same sort of things. I know there's very different reasons to put a service boundary instead of a functional boundary and it's much harder to change, but I've always felt it's the same sort of thing. You're building out this structure from small to big.
BP This reminds me of 7 Billion Humans, that programming game, which is literally just about moving boxes around. Excellent if you haven't tried it yet.
RD And that's your YouTube name– Drawing Boxes, right?
CS Yeah, it's become a sort of internal joke, a bit of a meme just in my own head, but it's just all about drawing boxes.
EM I'd just be interested if we could kind of loop back to what we talked about about your conference speaking and how that has progressed. Is that something that you've repeated a bunch since then since you first did it? What does that look like for you now in your role here?
CS It's only been a couple of years and I've not done too many. I hadn't realized that lots of people just repeat the same sort of talks or modify them a little bit. So you got one thing and you really prepare for, “I'm going to do well at this. One hour is all I've got.” But I didn't realize that one hour wasn't all I had because I've now done that four other times. And it's the same sort of slide. You add them, you correct your mistakes when people comment on YouTube and say that it's wrong, and then you can slightly adapt them.
RD Interesting. It's almost like a standup comedian. Work this hour, they get that good and some of them will dine on that hour forever and others will just throw it out every year.
BP You start ad libbing the same material, you know the jokes that landed it, and then you're mixing it up. Stand up for software developers, I like that.
EM I worked briefly as a lecture agent representing people for giving professional talks like this and giving talks at sort of arts and literary festivals, and some people had a sort of tight 45 minutes with a 15 minute Q&A that never varied and they just had it down pat, and then other folks would just kind of show up and chat. So a different experience depending on who you saw.
BP It's important to heckle at least one person in the crowd.
EM Oh yeah, definitely a priority.
BP All right, everybody. It is that time of the show. Normally what we do is we go on and we thank somebody who's received a Lifeboat Badge and spread a little knowledge around Stack Overflow, but today I think we probably should thank Connell. “Why does this select many perform several SQL queries instead of a single join?” Asked and answered by yours truly, and you've helped almost 300 people, so thanks so much for spreading your knowledge.
CS Is that the one where the solution had a class called evil hacky context utilities?
BP Oh, yeah. Evil Hacky Queryable Collection, it's got a bunch of evil hacks in here. All middleman methods wrapping up in the base query. See, it's all about wrapping it up in a box.
CS We used Evil Hacky professionally for several years. It was very evil. I'm very happy.
RD Evil Hacky, that's my band name.
BP All right, everybody. I am Ben Popper. I am the Director of Content here. Find me on Twitter @BenPopper. Email us with some questions or suggestions for the show, firstname.lastname@example.org. And if you like the show, leave us a rating and review. It really helps. Or go answer a question on Stack Overflow, it really helps.
RD I'm Ryan Donovan. I edit the blog here at Stack Overflow. You can find it at stackoverflow.blog, and you can find me on Twitter @RThorDonovan.
EM And my name is Eira, and I also work on the editorial team here at Stack Overflow. I write for the blog and I occasionally am on Twitter @EiraMaybe.
CS I'm Connell. My site is connell.dev, nice and easy. My handles are currently @ConnellSharp. I think that's it. I currently work at Stack Overflow.
BP And you've got a YouTube about boxes.
CS Ah, yeah. Watch my YouTube, Drawing Boxes. I never know the link to them.
BP Ah, we'll throw it in the show notes. All right, everybody. Thanks for listening and we'll talk to you soon.
[outro music plays]