These are dark times. Drastic measures must be taken. In this episode, we talk about–coding. *Queue scary music* Last year I bumped into Sean McCown and found out he had coded himself a GUI for his MinionWare product. This left me both impressed and stumped. We talk with Sean, Eugene, and Kevin about why they decided to learn a coding language and I give some of my hesitations for not picking up a coding book.
“I kept getting these problems from the devs, it’s SQL this, it’s SQL that, it’s SQL that, and so I started learning coding to be able to speak their language.”
“Any knowledge you have of another language, of coding in general, will help. I don’t know any Java whatsoever, but I know enough about coding that I can talk to a Java guy. If you just know the basics of it, you’ll be far better off than if you know nothing.”
“There are nice ways that you can extend your knowledge and become quite useful at solving problems using languages other than just T-SQL. But I go back to again, T-SQL is a programming language.”
“I’m learning coding by a project that appeals to me, so if there’s something that I can use for a personal project, I’m more motivated.”
Listen to Learn
00:38 Intro to the team
01:23 Compañero Shout-Outs
02:18 SQL Server in the News
03:41 Intro to the guest and topic
06:44 The biggest benefits to knowing how to code
11:07 It’s good to be able to know enough to call people on their BS
13:13 Do you have to code the app to get benefit from the knowledge?
15:06 Everybody’s personal coding experience
20:06 If you had to pick up a new language right now, which would it be and why?
24:08 Look at language classifications and choose one or two from each sort
27:42 How Carlos chooses which language to NOT learn and the pay-yourself-first theory
32:11 What if you learn something you don’t want to do in your job?
33:25 You could build yourself a tool to solve your specific problems
35:15 What has been solved in 2019 because they know how to code
37:15 If you want to put something on your resume, you can set expectations
37:59 The language you would chose to solve this specific problem
40:09 SQL Family Questions
42:33 Closing Thoughts
About Sean McCown
Sean McCown is a Certified Master in SQL Server 2008 and a SQL Server MVP with 20 years of experience in databases. He is also founder and co-owner of the MidnightDBA.com website, where he records free SQL Server training videos and co-hosts the popular web show [email protected]
Music for SQL Server in the News by Mansardian
Carlos: Compañeros, welcome to another edition of the SQL Data Partners Podcast. This is Episode 169 we have Sean McCown here for this episode.
Carlos: And I am joined today by Eugene Meidinger.
Carlos: And Kevin The Feasel. I mean, no, no, The Kevin Feasel.
Eugene: Haha, I got you messed up, earlier, haha.
Sean: Is that your mafia name? Kevin The Feasel Feasel, I guess? I don’t know.
Kevin: Yes, it is. It’s a really weird nickname but go with it.
Eugene: You can call me Two-Hands Eugene because I got two hands.
Kevin: It’s better than being Face. You know, if you’re going to have a nickname after a body part, it should be something you can hit people with.
Carlos: Well, there you go.
Sean: I’m staying out of this one.
Carlos: We have already gotten into– I veered us very to the left, immediately. Hopefully we can recover, here, compañeros.
Sean: Hopefully we can’t.
Carlos: Okay, so before we get into our topic. So obviously you’ve seen the title before you clicked onto the podcast today. But before we get into our topic, we have a couple of shout-outs. A shout-out to Mathieu Bilal, who connected with me in Raleigh at the SQLSaturday I recently attended, and to Mark Hudson. It’s always good to see Mark Hudson. We chatted a little bit. And so Kevin helped put on the SQLSaturday Raleigh and survived to tell the tale. We were just chatting about this afterwards, so he’s a little bit sore still this morning, but all is well. Okay, no comment, there.
Sean: I was told to shut up while you all did housekeeping.
Kevin: I didn’t really have anything to say, but yes, it was a good event. We enjoyed it. Glad to have people coming out and looking forward to next year. Specifically, I’ll be looking forward to it several months from now when I’m willing to think about it, again.
Carlos: That’s right, that’s right. Okay, and for a little SQL Server in the News. So SQL Server Management Studio, the long awaited Version 18 has now been available and I’ve been hearing some things on social media about it. And admittedly, I’ve been keeping it at arm’s length a little bit, still and so I was curious, have any of you downloaded it, yet?
Sean: I have.
Carlos: Okay, and? First thoughts?
Sean: I looked at the feature list, and it’s mostly nothing I really use, but I like to keep current, so I did it anyway.
Carlos: Okay, I know one of the things we talked about was I guess there were some bugs or there were some issues, there and so any lagginess or any gotchas to this point? I mean, you haven’t– it hasn’t exploded?
Sean: Yeah, as a matter of fact, I have noticed it being a little freezy every now and then.
Sean: So yeah, I have problems with it updating a screen, like when I switch from one tab to another, sometimes I have to like drag the mouse down and highlight the entire code window to get it to refresh from the other window.
Carlos: Oh, interesting.
Sean: So I don’t know if that’s just my computer. I’m going to put it on my desktop as well, and I’ll be able to say better then, if it happens on two computers.
Carlos: There you go, yeah, yeah, get a–
Sean: But I never saw that with the last version.
Carlos: Yeah, with the last version, yeah, yeah, so it’s interesting. So we’ll see how that goes and obviously there are some new things happening there, so it’ll be interesting to see, compañeros, what your thoughts are there with the new version. Okay, so this episode ultimately started, was a thought process when you were here in Richmond. It actually goes back further than that, at Summit. Of course, Sean is one of the co-owners of the MinionWare products, and they were sponsoring, there at Summit last year. And I walked over and they have been– the interfaces have all of a sudden taken off. Not that there wasn’t an interface before, but it was a little bit more behind the scenes.
Sean: The GUI has taken off.
Carlos: Yeah, the GUI has taken off, there we go. And so I was sitting there chatting with Jen, and I said, “well, gosh, that looks really nifty. Who did you get to do that?” And she thumbs over to her right at Sean and says, “Sean did it.” And I’m like, “what?” He locked himself in a room for two months and then afterwards, he came out and had this really slick GUI looking thing.
Kevin: And a long beard.
Sean: Well, you notice how long my hair is getting, right? That’s because I’ve just been coding.
Carlos: There you go. And so, that then planted an idea in my mind and I didn’t realize Sean was a coder, one. And then, when you were here in Richmond, again, we had the conversation and talked about this a little bit more. And so ultimately, one of the thoughts that I had for today’s episode was to talk about should we be coding, and should we be learning to code? And so, ultimately, we have our own takes or our own experiences, there, and unfortunately, I think we’re going to hear a little bit about F# today.
Kevin: I actually do have that written down, yes.
Eugene: It’s named after The Feasel. That’s where the F comes from.
Carlos: That’s right. So I guess to start off here, and I should say, this is also interesting. From a coding perspective, I am the least capable on this podcast today when it comes to coding. So T-SQL, I mean, some PowerShell I can poke a stick at it, and then much beyond that, I’m kind of worthless.
Sean: So what do you do?
Kevin: What is it that you would say you would do, here?
Carlos: So I’m the one who organizes the podcast, right?
Eugene: He’s more of a manager.
Sean: For a living?
Eugene: Wait, we could get paid for this?
Sean: No, seriously, what do you do? Are you BI or what?
Carlos: Yeah, no, so ultimately, I’m still squarely on the DBA side, so performance, architecture, disaster recovery. I get into the BI side. Obviously, the podcast helps, and Azure has helped as well, from an infrastructure perspective and migrations and things. So I think I know enough to be dangerous there. I feel like I have some thoughts around it, but I am not going to code your BI project.
Sean: I honestly didn’t think there were any strict admins left.
Carlos: Yeah, well, I mean it helps that I own a company now.
Eugene: He’s more management. He’s moved on from the technical side of things.
Carlos: To a certain extent, yeah.
Sean: I still have a consulting arm, too, so if you all need any help, let me know. I still contract out pretty well.
Carlos: There you go, okay. So yeah, I mean in my mind, PowerShell has been like the next best language to pick up. But ultimately, another reason to have this conversation. So I guess I’ll ask you, Sean, so other than having this problem to solve, what made you decide, “hey, you know what? I’m going to dust off the old, I don’t know, C# or whatever– what language did you code that in?
Sean: The GUI, it’s in C#.
Carlos: C#. So, “I’m going to dust off the old C# book, pick it up and plow into this again”?
Sean: Well, mainly it was driven by my users. The tool was written for DBAs. That was our tagline for a long time was “By DBAs, For DBAs”. But as it turns out, there are a lot of people in the org that want to be able to see that Minion data and work with the Minion data that aren’t DBAs and they don’t know that much about queries and they don’t know how to work anything but a GUI. So we’ve gotten more than a handful of requests for something like that, so I decided to go ahead and start fulfilling it.
Carlos: Right, so a problem to solve is always a good way to start picking up things.
Sean: Yeah, absolutely.
Carlos: So Kevin and Eugene, you guys, we’ve talked about coding before. Values of knowing how to code? What’s been the biggest benefit that you’ve seen?
Kevin: It helps you solve problems. Everybody ought to be able to do some level of a development skill and T-SQL is a development language. You can do development in there, but it is not a great development language for many problems. T-SQL is a domain-specific language, meaning within its domain, it’s excellent. Outside its domain, it’s weird. So, I’ve seen people do weird things like, “hey, let me solve a genetic algorithm problem using T-SQL.” Gail Shaw did that.
Eugene: Oh, that’s disgusting.
Kevin: It was really cool, but I do not recommend you use SQL for genetic algorithms.
Eugene: To be clear, that does sound really cool. It also, when I say disgusting, that sounds like a giant pain to implement.
Sean: Yeah, I wouldn’t even want to try to tackle that.
Kevin: It kind of was. There’s a couple blog posts about it. It was impressive, but the type of thing that you’ll find at a company and say, “why did this person do this?” Because that was the hammer they had.
Eugene: Yeah, I can think of a couple of benefits that I’ve gotten from knowing how to code. Actually my background, I originally wanted to be a software engineer, and so my first long-term job a year after college was .net/SQL developer and it turned out to be a total lie, because it was maybe 10-15% .net and then like 80-90% SQL. And because I could spell SQL, I was now the DBA and the BI department. But I did write some ASP.NET stuff and I did do some code support, like I supported their order site and all of these sorts of things. But a couple benefits that I’ve been, one is I mean, my personal opinion is it’s easier to learn how to do good troubleshooting and debugging if you’re coming from a coding background, because it’s a lot more granular. Like you can put in breakpoints, you can step through, you can just break it down into incremental steps because it’s so imperative. It’s do this, do this, do this, do this. Trying to learn how to debug in SQL is like Alice in Wonderland, because it’s set-based, it depends on what’s going on with the system. It’s such a harder leap to learn how to do it. You can become really good at debugging in SQL, but it’s so much squishier. It’s so much vaguer.
Sean: It’s the data aspect.
Eugene: Yeah. Another aspect that’s been really helpful is having a coding background has allowed me to understand trends that are going on much better and then integrate them into the data space. So recently I wrote a blog post about how I’m finally getting this whole devops thing and why, as a data person, I actually care, because devops is so much about standardization, it’s about that Six Sigma kind of process of reducing defects. And business intelligence, everything we make is like this bespoke necklace on Etsy kind of thing that’s different for every customer. But after reading the Phoenix Project and hearing about DataOps and all of this stuff, I’m appreciating, like, “oh, this is what devops means,” and “oh, this is why it’s relevant to me.” And I think if I had never written a program before, the Phoenix Project would have been less impactful because I wouldn’t have been able to relate to what the devs were dealing with in that story. So those are two big use cases, in my mind.
Sean: I’ll tell you why I started coding to begin with. Back in the mid-90’s, late-90’s, something like that, was because I was just an admin DBA. That’s all I really wanted to do, like you. And I kept getting these problems from the devs, you know, it’s SQL this, it’s SQL that, it’s SQL that. And so I started learning coding to be able to speak their language and to be able to basically call them on their BS and it’s helped me so many times now. I mean solving problems, yeah, it’s helped me a lot solving problems, but even as an admin, I can speak their language when they say, “well, we’re having a hard time, the data’s coming back really slow from the database and we need to add an index.” And I can ask them, “well, are you gathering the data this way or are you gathering it this way? Are you putting it into this kind of structure or that kind of structure?” And since I know this stuff, then I can guide them better and say, “well, you really should be doing this, because it’s much faster and it doesn’t use up as much memory” sort of thing.
Carlos: Yeah, now that’s a conversation I’d like to be in, the data person saying, “well, you know, Mr. Developer.”
Sean: That’s right!
Carlos: “Or Mrs. Developer, you should really be using this other construct.”
Sean: And the number of times I’ve been on a conference call where I say, “well, what we need to do is we need to make sure the app does this” and the dev on the call will say, “oh well, that’s impossible, we can’t do that. That would take 6 weeks of regression testing” and all of that, and I can easily sit there and go, “no it doesn’t. You’re BSing, dude, because you don’t want to do it. I know exactly how that’s done and don’t sit here and lie to us.” And I can call them out on their BS and get some real changes made in a company, because devs don’t want to make those types of changes, right? So they’ll make up excuses.
Eugene: Yeah, I think that’s a problem with technical people in general in our field is that it’s so easy, oftentimes, to BS or use technical terms to try and obfuscate the truth so that when you’re dealing with those sorts of people, even if it’s just a manager or project manager or whatever, you need at least enough, like just a baseline 101 intro to be able to call people out on their stuff, because it’s so easy to BS in our field, unfortunately.
Carlos: Well, so then for those of us who are, again, on the outside looking in, wondering, “gosh, do I need to pick it up,” do I actually have to code the app before I can get any benefit from it?
Sean: I will say no, but it helps. I mean, any knowledge you have of another language, of coding in general, will help. I mean, I speak T-SQL, PowerShell, C#, VB, C++ and Python and HTML and CSS, and I don’t know any Java whatsoever, but I know enough about coding that I can talk to a Java guy. But if you just know the basics of it, you’ll be far better off than if you know nothing. But it’s difficult. Once you start learning the basics, it’s hard not to write your own tools and to build an app because now you’re like, “hey, I can do this,” and then?
Carlos: I can do that.
Sean: I hope nobody here is a vendor. Then, you’re going to start to look at these other applications that they want to charge you $1500 a server for and go, “I could write this in a week. There’s nothing to this. I mean, it won’t have all the bells and whistles, but for like most of that stuff, I could write this in a week, maybe two and save myself, you know, 150 grand.”
Eugene: Sean, aren’t you a vendor? Aren’t you worried?
Sean: I am. Nope. And I realize that it’s a little hypocritical for me to say that, but it’s really not. I still always applaud anybody who writes their own tools. To this day, I still only use perfmon for performance.
Carlos: Sure, I mean it’s still the idea of well, what is it that you want to focus on? There will still be people who have more money than time, I guess we’re kind of going back into a business perspective, and then what they want to do with that time. So yeah, that’s interesting. Okay, so now having said all of that, so from a comparison perspective. Not comparison with each other, that’s not what I’m saying.
Sean: Mine’s bigger.
Carlos: From the listener listening to where we are, maybe it would be worth going through a brief background from our coding. So Sean, do you want to kick us off? We talked about dusting off the book, so I guess maybe tell us how you got started, first?
Sean: Just with coding, right?
Carlos: Yeah, just with coding, yeah.
Sean: Okay, so yeah, I started like in the mid-90’s with HTML and classic ASP. A couple things seeded that, but the big thing that seeded it was I think a lot of you guys know that I’m really big into Kenpo and so I started up a Kenpo site with a bunch of videos and articles and all of that, and so I coded my own site as sort of a project to learn ASP. So within that ASP and HTML umbrella, I got a lot of really good stuff there, and then I started with some C++, which I didn’t go very far, honestly, because back then, nobody was teaching anything worth a damn. You know, you could go sign up for a class, but they still talked to you like you’ve got a master’s degree in programming. They’d say stuff like, “oh, well this is a pointer and you can see the thing and the thing and the thing” and you’re like, “uh, what was that second word, because I think you made up most of those. I thought this was beginning course,” and so then they would just say it slower and louder. And so I put that down and VB.net kind of struck me a little bit. I was like, “oh, ok”. Oh yeah, before that it was some VB script, which I really didn’t understand very well, especially because you had to change it back and forth, whether you were on your computer or running it from a website, the same code didn’t work. You had to call the objects different ways. But somehow, I managed to get really good at doing it in DTS, so I could code the hell out of DTS. I could turn workflows on and off and switch different things around and all of that stuff all in code, so I had some pretty sophisticated packages where you open them up and it’s just a couple VB scripts. It’s like, “er!” And then I started with .net when it came out and honestly, .net Version 1 was so bad, I put it down for a long time and then picked it up again, say, in the neighborhood of like ’05 for about a year or two, concentrating on C# and then put it down again because I just got busy in SQL stuff. And then picked it up again last year and yeah, like you said, just started dusting it off and parts of it came back very quickly and parts of it didn’t at all. There are a lot of new concepts since I picked it up last, but yeah, that’s–
Carlos: Sure, sure. Okay, so I mean Eugene, you mentioned you started, you went to school for that, right?
Eugene: It’s funny, I can pin down when I started learning programming. It was back around ’95 as a kid, my very first introduction to programming wasn’t even programming, it was custom levels in StarCraft. Literally, they had kind of a scripting language and it was really simple if/then logic, but that was my first introduction to it at all. And then eventually I went to Information Sciences in Penn State, and learned how to program and actually got an IST degree, but a lot of it started way earlier for me.
Kevin: Excepting the fake stuff that I did back in the 90’s, like playing around on websites and whatever, first real programming was going to be college. I went to school, computer science degree, lot of C++ in there. After that, I went off on my getting German taxpayers to fund my extravagant journeys throughout Europe. Eventually came back from that and decided, “oh, I guess I’ve got to get a real job because I don’t want to go back to school again.” So did .net development, actually I was a .net web developer. Also, did other things for money that I won’t talk about on my resume. Cold Fusion, please don’t call me about it.
Sean: I was going to say call back to the beginning of the episode but anyway.
Kevin: The mob, yeah, that happened. Then got into database administration, liked it and I just keep getting pulled out again, because there’s other stuff. There are nice ways that you can extend your knowledge and become quite useful at solving problems using languages other than just T-SQL. But I go back to again, T-SQL is a programming language. If you tell me, “I can’t program” and you’re a database administrator, you’re either not confident enough, or you’re not very good.
Sean: Oh, somebody’s been called out.
Carlos: I can program in T-SQL, right?
Kevin: Exactly and T-SQL’s a programming language. It has its constructs. It has the logic and flow. There are algorithms you can implement in T-SQL. These concepts start applying to other languages as well. You learned one language, it’s not like you can’t learn another.
Carlos: Okay, now again, and I think it’s going to vary for everyone, but through the prism of time, if you had to pick up a new language right now, how would you go about choosing? Maybe what would it be and how would you choose it? Or how did you make that choice, I guess is a better question.
Carlos: Okay, you’re doing some more web stuff?
Sean: Yeah, and where I think SQL might be going. And even that’s not necessarily a given. Like I haven’t touched R, because–
Carlos: Sure, sure.
Sean: But you know, in general, if there’s something big going to happen in SQL and I think that it may be something that I might need as an admin or to understand at a base level as a dev so I can talk to people who are writing it, then yeah, I’ll pick it up, but otherwise–
Carlos: So does that make Python more appealing?
Sean: I’m doing Python because, yes, because it’s extremely popular. It’s not going anywhere, and with SQL now on Linux, I feel like I should know how to code some Python and of course Python is in SQL as well, but not as an admin kind of thing.
Carlos: No, no, that’s right. I would imagine the overlap would be kind of a two-for-one type deal, in a sense.
Sean: Yeah, you’ve got to speak the language, right? But yeah, there’s a lot of things you can do with Python and with it being more ubiquitous, especially now that we’re in Linux, I think it’s a good idea to at least dabble. I don’t think I’ll ever be a Python expert, but to at least be able to dabble and know what I’m doing will help me take on some projects. And I’ve had a couple small projects in Python on my consulting side.
Carlos: Sure, okay, interesting. Eugene?
Eugene: Yeah, so a couple things in terms of “okay, what am I going to learn?” One thing that I consider sometimes is, “is this going to help me do some sort of personal project?” Right now, I’ve realized multiple times, but again I’m reminded that whenever you work from home all of your habits just go out the window. And so I’m programming Xamarin and C# on a digital smartwatch I have so that, you know, this sounds dumb, but in the morning I put on my smartwatch and I say, “okay what am I doing?” and it tells me to go brush my teeth and it tells me to go make breakfast and all of this dumb little stuff. But I’m finding that that’s really helpful because otherwise I just kind of slouch on the computer and browse Twitter for an hour and go, “oh wait, I should start working” and there’s just none of that coherence to the day. And so, I’m learning coding by a project that appeals to me, so if there’s something that I can use for a personal project, I’m more motivated. Otherwise I generally look at trends. So where do I want my career to be? I’d like over the next 3-5 years to pivot more into data science, and so we just talked about that. If I want to learn data science, I either need to learn Python, R or both, and so that’s on my radar from a career perspective. And then I think the third thing is every once in a while, you want to learn something that’s just so darn goofy that it’s going to shape the way that you think about programming, so this is where F# comes in. any functional programming language or anything that’s just like totally different. Like I know Ruby’s kind of dead these days, but Ruby was interesting for a long time because people compared it to writing poetry or haiku. It’s just the way the syntax was. So yeah, I think my three criteria are either it needs to be practical for something I want to do, it needs to be where my career’s going, or it needs to be just like taking a hit of acid in terms of programming languages, so it just opens my horizons. Those are the three criteria that I look for one of those.
Kevin: As for me, I’m not going to condone drug use on this podcast.
Eugene: It was an analogy, gosh darn it. Do you condone Haskell use? Cause that’s pretty trippy as far as languages go.
Kevin: Yeah, actually I was thinking about Haskell.
Eugene: You can’t do anything with it, but you’ll learn a lot.
Kevin: Well, you can do some stuff with it, but you’re right, it’s harder to do work until you really rock the functional mindset. So, when I’m thinking about learning languages, I do like to classify languages by the type, by the domain, by the way in which you’ll structure your code and pick and choose a couple from those different sorts. So, the benefits behind an object-oriented language are that everybody, every company uses object-oriented languages except for relatively few, so you’ll be able to communicate with developers. Developers come out of schools knowing some object-oriented language, including Python and you’re going to have an easier time talking with them. Personally, I will defend the honor of functional programming languages from the likes of Eugene. Especially for a data platform person, functional programming makes more intuitive sense, because it’s functions that operate on data, and those are your two key constructs. Forget about objects, it’s functions that work off of data, and the rest is commentary and monads. But we won’t get into the commentary on monads.
Eugene: Please don’t.
Kevin: So by learning about a functional language, you pick up some really good programming techniques around short, terse code that solves a very small problem that is composable. You can chain together functions to solve problems in a bottom-up scenario, allowing you to get a solution without having to architect it from the beginning and imagine that you have all of the criteria correct.
Sean: And it’s easier for beginners to understand.
Kevin: I could see that, yes, because you can jump in quicker. You don’t have to talk about, “well, here’s a book on design patterns” like the Gang of Four book on design patterns. Functional program is like, “well, yeah, I don’t need these design patterns because I just write the good code.”
Sean: Yeah, it’s just a function. You don’t have to worry about inheritance and delegation and generics and all of that crap. You can just code some functions because it’s easy to wrap your mind around.
Kevin: Yes, then the taking the next step from there can get a little more difficult. There’s a steeper curve, but absolutely, at the very beginning, it’s “hey, here’s functions, I’m at a console, I’m at a REPL. I just write this code.” And that’s where also the systems administrators with PowerShell can benefit, where, “hey, I’m just creating a function.” Yeah, PowerShell’s still an object-oriented language of sorts, it’s living in the .net world, but it’s an interesting blend of a few different paradigms. So, picking up a couple of these different paradigms will help you make connections. I don’t need to know every functional programming language. You pick a couple that are useful. For me, it’s F# and Scala. And R, R is a functional programming language, too. But data science, you don’t need to know R, Python, Julia and everything else. Pick one, maybe both, because R and Python are extremely popular. Or object-oriented, or you don’t need to know Java and C# and C++ and Smalltalk and every other object-oriented language. You know one, maybe two, you’re able to converse with people, and you’re able to understand the algorithms, you’re able to understand the key constructs and you can start applying these. Where hey, C# is not a pure object-oriented language, so when you learn some functional, you’ll come back to C# and say, “oh, yeah, these LINQ statements, these lambdas, well, that’s just functional. Oh, well these concepts, oh, well that’s functional. Oh, well these concepts are object-oriented that are brought over here into Scala.”
Sean: So I’ve got a question. We’re going to turn this around a little bit to Carlos and say, “so how do you decide which language you’re going to not learn this time?”
Eugene: That’s great.
Carlos: Yeah, so, I’ll admit, we’ve gone over, “hey, what would you learn first?” and we’ve already named, I don’t know, I feel like we’ve gotten at least 15 different languages and I’m like, “okay, it’s almost one of those things like there’s so much out there that you’re like, I’m not even going to start because it’s too complicated.”
Sean: It’s too big.
Carlos: Too big, right? In college, I mean I took VB. I took Java. I actually took C+ as well. And yeah, I’m just like, “oh gosh, do I really want to sit down and to try to learn this?” And I guess by ‘learn this’, it’s always the like what’s the measuring stick, as well, to how much time do I need to devote?
Sean: Not much.
Carlos: I guess that’s why I asked about like building the app. So okay, what does that mean? Like what kind of app do I need to make? Is that just like running some GitHub demos and compiling it? You know, those kinds of things.
Sean: I always follow the pay-yourself-first principle and that’s what I teach, too. So especially when you’re in a company, but of course, if you own your own business, then the principle still follows that like the first half hour of a day, before anything else gets started, you should pick something to learn and if that’s coding, then that’s coding. And slow progress is better than no progress.
Carlos: Sure, okay.
Eugene: Well, I think another way of approaching it is a lot of times I think in terms of orders of magnitude when it comes into how much time to put into a thing. So in my mind, you need one hour to have a decent understanding of ‘this thing exists’ and what it’s for, so you can go watch a YouTube video or Pluralsight video, you can do a Hello World in an hour. And that’s enough that like, when someone says, “hey blahblahblah Hadoop,” like someone here, I don’t go, “what’s Hadoop?”
Kevin: Don’t know who that person would be.
Eugene: Sean, cut it out. So one hour’s enough to not look like a total idiot when someone says a thing and you’re like, “what?” And I think 10 hours is enough to play around and feel a sense of comfort and maybe even give like a really super intro presentation, like a lunch and learn with your co-workers. Like, “hey, I spent a Saturday working on F# and here’s what it seems to be about and here’s what I was able to do,” and that kind of stuff. And then I think you need 100 hours to really start to feel comfortable and feel like, “okay, this is a thing that I could put at the very bottom of my resume.” A thousand hours to say, “alright, I’m actually going to put this higher on the top of my resume.” And then that whole 10,000 hours to be an expert. So I like to think of it that way, in terms of do you want to know it exists? Do you want to be able to kind of talk about it? Do you want to be able to put it at the very end of your resume or the very front? Or do you want to rate yourself a 9 out of 10, because you never say 10 out of 10 when people ask you how good you are at something.
Sean: No, even I don’t. I don’t even say I’m 10 out of 10 with my own products.
Eugene: Like I’m really bad at MinionWare.
Kevin: But if you look at what Eugene said, that 100 hours, 100 hours to feel comfortable enough that you could put it, potentially, on a resume or include it in your mental utility belt. A hundred hours, that’s half an hour a day, 200 days so it’s about a year if you’re following Sean’s do it half an hour every day.
Eugene: Yeah, that’s a good call.
Kevin: It’s not that long.
Carlos: There you go.
Eugene: That’s a good point.
Sean: Because you know, when you start your day, the second– and I did this the whole time I was an FTE, the second you start taking requests, your day’s over, especially as an admin. I don’t have to tell anybody here that, but if you go in either early or at the same time and that first half an hour, make up an excuse. You don’t have to tell them you’re doing that, but say, “hey, come back in half an hour, I’ve got this issue,” then, they just get used to it. Or say, “I don’t take any requests before 9:30 because I’ve got stuff to do. I’ve got stuff that’s on my list first off.” And just block out that time and don’t let anybody take that. There are exceptions, level one outages and whatnot, but in general, don’t let anybody steal that time from you. You can’t even do it over lunch because you quite often end up working through lunch. So the second your day starts your time is gone. That’s why I say, “pay yourself first.” And slow progress is better than no progress. You can look at it and say, “well, 30 minutes a day, at the end of the week, I’ve only gotten 2.5 hours.” How much did you get last week?
Carlos: Right, right. So then, from a jumping off point, from an IT perspective, we want to be versatile and I think Eugene kind of put some benchmarks in there. Is there the fear that you’re ever going to get called to task there and be like, okay, just to take well, .net because it’s a Microsoft product. You put in your 1000 hours of .net, that you’re actually going to get called to do something work-related with that?
Sean: I hope so.
Eugene: Why is that a fear? I mean, maybe if you’re at the 100 hour mark and you put it on your resume and you’re like, “oh, I might have made a mistake.” I think certainly maybe a different way to think about that is there are things that I have that 100 hour mark on that I do not put on my resume. I am a journeyman when it comes to Microsoft Access programming. I’m literally doing it for a former customer right now.
Sean: Who gives a crap?
Eugene: I’m at 100 mark for classic ASP, for MySQL, a couple other things. I’ve touched Cold Fusion, that was mentioned. I think you want to be careful not to invest those hours into something you wouldn’t want to do, and there’s some people that they might accidentally career pivot into being a developer and might be unhappy, but I feel like that’s rare that there’s that many people that are like, “oh man, I totally want to stick to data, but I accidentally learned C# and now that’s my job” kind of scenario.
Carlos: Sure, sure.
Kevin: Yeah, and I want to turn it around on you, Carlos, because let’s say you have those hours and now a work project comes up and you say, “oh, the fact that I learned a little bit about Kotlin or that I learned about Kafka Streams or something. This project came up and now I can solve it with that skill that I may not have been able to solve as effectively using other tooling.” So it’s the opposite of, “oops, I accidentally landed myself in a place where I don’t want to be because I learned something.” And worst case scenario, if you find out that it’s completely useless, like Cold Fusion, you just pretend you never knew it.
Sean: Well, and you can do like I did, and I’m talking to you, specifically, Carlos. You know, hey, I’m an admin and I’m getting sick of doing all of this crap by hand, so I’m going to build myself a tool to help me manage this thousand servers, because I was the only DBA in a shop of 1000 servers. I’m going to build this tool to help me do it and look, I’ve built a company out of it. I don’t expect everybody to do that, but I would expect everybody to get sick of doing everything by hand and writing themselves a tool, even if it’s a T-SQL tool. It’s still better than you had last week. You’re still not doing stuff by hand every single day across every single server.
Kevin: Yeah, ultimately, these programming languages are all about solving problems and they solve different problems at different levels of quality. You look at the types of problems you have, that will help you decide what languages you really want to learn at this point and you take those, you solve small problems, you learn more about them, you’re able to solve bigger problems and all of a sudden, you’re solving problems you never thought you had.
Sean: Yeah, and problems become solvable at that point. Things that you’ve just put up with forever, now you can say, “oh, I bet I could code that,” and you didn’t even realize it was a problem, before.
Carlos: Okay, so having said that, to put everybody on the spot here, and I’m going to take MinionWare off the table here, for you, Sean.
Carlos: So, can you give me an example of a problem, and I’m going to say in 2019, we’re here the last day of April recording this episode, in the year 2019, that you’ve been able to solve by knowing how to code?
Sean: Taking MinionWare off the table? That’s tough, because that’s practically all I do, anymore.
Carlos: Okay, that’s fair, that’s fair.
Sean: I’ve done a couple small projects for a couple customers, a couple C# projects, but that really wasn’t a problem, I just gave them an interface for– well, as a matter of fact, okay, this is a problem I solved for somebody. They had an Azure thing. They had an Azure service that they weren’t going to pay for anymore, and I don’t remember what the name of the service was, but they got to keep their data, but the GUI was going away, so they wanted me to write them a small C# app with three or four screens just to help them view the legacy data they had.
Carlos: Oh, okay, interesting.
Sean: And it was hella simple, but that’s the kind of thing I wouldn’t have been able to do, otherwise. If I didn’t know how to code they would have had to go somewhere else and somebody else would have gotten that consulting fee, right?
Carlos: Right, right, okay. There you go.
Sean: And I do have personal projects, as well, that I do. We have a lot of stuff internally, as well.
Carlos: That’s fair. So that’s a great example. Particularly as the role of a consultant, you were able to accept work that otherwise you wouldn’t have been able to accept, something not straightforward.
Carlos: Sure, okay.
Sean: And to answer your question before about, are we ever afraid about putting something on a resume and then being called to task? Not really, because not only do you look forward to the opportunity to actually do something that’s not contrived by you, but you can also measure your level of knowledge and when they ask you can say, “well, yeah, I’m functional in C#, but I’m not a C# guy. But I’m functional, I can write simple stuff” and set their expectations. So say, “I can do this and I can do that and I can do that, but if you want some big world-wide cloud app sort of thing, you better go to a professional. But I know enough to code my own tools and to code simple stuff for y’all,” until you’re a little more comfortable.
Carlos: Okay, that’s good, that’s good. So let me ask a different question. We have these little niches. SQL Data Partners, we have niches, we talked about healthcare being one of them. And so one of the things that I have needed, and admittedly, I’ve actually contracted out, is the ability for like these little interfaces, kind of like what you were talking about, Sean, to either connect to the database, run some scripts, get out a simple report, kind of a thing. Now, normally it’s the kind of thing that maybe we could do very easily, but we’re trying to get us out of the equation. Right? Automate. So it has to run on the desktop, so I have to compile a desktop and talk about the installer I guess later, but from this podcast today, if there was a language that you needed to be able to compile something that somebody could run on a desktop, what language would you choose?
Sean: It still depends, because I write mainly in– most of my coding is in T-SQL, C# and PowerShell and you can compile PowerShell into exe’s and even give them Windows forms. So just because you need a GUI doesn’t exclude you from using PowerShell, so I could do it in C# or in PowerShell and do it just fine.
Sean: I’m sorry?
Eugene: Oh, interesting.
Sean: It’s powerful.
Kevin: Yes, and it’s also cross-platform. I can run that Electron app on a Windows PC or on a Linux Box or on a Mac.
Sean: Hey, C# is cross-platform now, too.
Carlos: Right, okay.
Sean: People ask me how I got started in SQL instead of Oracle and I say, “well, cause the guys that taught me were SQL guys.”
Carlos: Interesting. Okay, well, so you almost convinced me to come–
Kevin: We’ve nearly railroaded Carlos.
Carlos: Nearly done it. But instead, I’m going to pivot. Let’s do SQL Family. So Sean, you’ve been on the program before.
Sean: I have.
Carlos: But we have a couple of new questions here for you.
Sean: Ooo, yummy.
Carlos: All-time favorite movie?
Sean: I’m going to have to go with the Godfather series, man.
Carlos: There we go, okay.
Kevin: The Godfather two movies?
Sean: There are three.
Kevin: No, there was no third movie. It was Godfather, Godfather II and then the series just ended. There certainly wasn’t a third movie.
Sean: No, I keep hearing that. I mean, seriously, that’s like an Episode One kind of debate, but I liked the third movie, and I loved, especially, his crying scene outside the opera house. It was very powerful and very real and I loved it.
Carlos: So if we never invite you back on this podcast again– no, I’m just kidding. Okay, so city or place you most want to visit?
Sean: We’ve had China on our radar for a long time, but I’m going to go ahead and say China, Japan and Thailand. I’d like to make that whole circuit.
Carlos: Asia Pacific, yeah.
Carlos: A food that reminds you of your childhood?
Sean: Chicken and dumplings.
Kevin: I could go for some of those.
Sean: Even though I’m vegan now, but it still reminds me of my childhood.
Carlos: Yeah, there you go, okay. Good deal. So these other ones we’ve asked you before, but we’ll ask you our last question for you today, Sean, if you could have one superhero power, what would it be and why do you want it?
Sean: Oh man, so 13th Bullet-proof is out, right? I don’t remember what I said last time, but I’m still torn between flying and reading minds. Because flying, duh, flying.
Carlos: Yeah, that’s right.
Sean: And reading minds, I think it would always be best to know what people are thinking you’re talking to them so that you can tell if you’re making an ass out of yourself or not and just know when to shut up.
Carlos: Awesome. Well, thanks for the conversation today, Sean, I appreciate it. It’s good stuff and so I’ll be interested to know how all that continues to go. Obviously, we’d love to check back in with you on all your programming pursuits.
Sean: Absolutely, and we’ll check in with you on yours.
Carlos: Yeah, there we go. I just have to figure out the language, first.
Sean: Yeah, and well, be sure to throw some of those little application projects my way, right?
Carlos: Yeah, there we go.
Sean: Now that you know I’m on the hook.
Carlos: That’s right, that’s right, there you go. Okay, so compañeros, that’s going to do it for today’s episode. As always, we’re interested in what you have to say and what you’re thinking about. And you can reach out to us on social media. Sean, how would folks reach out to you on social media?
Sean: They can find me in a couple different ways. I’m @heyminionware and I’m also @kenpodba and the message will get to me if you go to @midnightdba as well.
Carlos: There you go. Through the chain, there.
Sean: Yeah, through the chain.
Eugene: You can find me @sqlgene on Twitter, sqlgene.com, and I just put out a Power Query course on Pluralsight, so Power BI Data Preparation Playbook.
Kevin: You can find me on Twitter at the @coldfusion official account.
Carlos: Yikes. Okay compañeros, you can reach out to me on LinkedIn. I am @CarlosLChacon. Thanks again for tuning in today’s episode, and we’ll see you on the SQL Trail.