🎙 Develpreneur Podcast Episode

Audio + transcript

Technical Mastery: Balancing Depth and Breadth

In this episode, Rob and Michael discuss the importance of balancing technical depth and breadth. They share their experiences and insights on how to develop a broad technical skill set and stay current with industry developments.

2024-05-05 •Season 21 • Episode 19 •Balancing technical depth and breadth •Podcast

Summary

In this episode, Rob and Michael discuss the importance of balancing technical depth and breadth. They share their experiences and insights on how to develop a broad technical skill set and stay current with industry developments.

Detailed Notes

In this episode, Rob and Michael delve into the topic of balancing technical depth and breadth. They discuss the importance of having a broad technical skill set, and share their experiences and insights on how to develop one. They also talk about the benefits of being able to learn and adapt to new technologies, and the value of having a technical roadmap and regularly updating it. Additionally, they discuss the importance of staying current with industry developments, and share some practical tips and advice on how to do so.

Highlights

  • The importance of having a broad technical skill set
  • The benefits of being able to learn and adapt to new technologies
  • The concept of the 'Kitchen Sink' app
  • The value of having a technical roadmap and regularly updating it
  • The importance of staying current with industry developments

Key Takeaways

  • The importance of having a broad technical skill set
  • The benefits of being able to learn and adapt to new technologies
  • The value of having a technical roadmap and regularly updating it
  • The importance of staying current with industry developments
  • The concept of the 'Kitchen Sink' app

Practical Lessons

  • Develop a broad technical skill set by regularly updating your knowledge and adapting to new technologies
  • Use a technical roadmap to guide your learning and development
  • Stay current with industry developments by regularly reading industry publications and attending conferences
  • Use the 'Kitchen Sink' app as a learning tool to develop your technical skills

Strong Lines

  • The importance of having a broad technical skill set
  • The benefits of being able to learn and adapt to new technologies
  • The value of having a technical roadmap and regularly updating it
  • The importance of staying current with industry developments
  • The concept of the 'Kitchen Sink' app

Blog Post Angles

  • The importance of balancing technical depth and breadth
  • The benefits of having a broad technical skill set
  • The value of staying current with industry developments
  • The concept of the 'Kitchen Sink' app as a learning tool
  • The importance of regularly updating your knowledge and adapting to new technologies

Keywords

  • technical depth
  • technical breadth
  • broad technical skill set
  • staying current with industry developments
  • technical roadmap
Transcript Text
Welcome to Building Better Developers, the Developer podcast, where we work on getting better step by step professionally and personally. Let's get started. Well, hello and welcome back. We are continuing our season of stuff in Developing Our Podcast. And we are just sort of working through challenges and things that we see during the week. And then also some of it is related to just our normal developer type challenges, but also our business related challenges. This episode, we're going to sort of continue a theme we've had recently. And it's about direction, essentially, we're going to talk about deep versus wide. And we're going to go specifically talking about platforms and from a technology point of view. We're going to talk developer speak. But if you are a specialist, a technical specialist of any kind, which includes testing, it includes even project management tool usage, even if you're into like a specific CRM or something like this, it really is. It has gotten to a point that regardless of what you do, there's probably at least two or three tools out there to get it done. We want to talk a little bit about the differences, the pros and cons of being deep in an area versus wide in an area. And may throw Michael on the hot seat and have him pick one while I'm going to pick the other. I'll pick first, of course. But first, let's introduce him. I am Rob Brodhead and I am one of the founders of Developineur, also founder of RB Consulting. And on the other side of the Zoom call is Michael. Go ahead and introduce yourself. Hey, everyone. My name is Michael Molloch, also co-founder of Developineur and founder of Envision QA. And now he's starting to sweat a little bit because I said I'm going to put him on the hot seat. I want to talk and hopefully he wants to talk the other side. I want to talk about wide. I want to talk about being broad in your technical sense because this is near and dear to my heart and it has served me very well. When I started out, and this is a shameless plug, if you go check out the Developineur book, I talk about early on developing as a developer, becoming a better developer in those first one, two, five years and even probably even to that five to 10 year range. One of the things that worked really well for me that I highly recommend is set yourself up with a technical roadmap. And we've talked about a skills and career roadmap also multiple times on Developineur site so you can see some blogs and podcasts about that, what that is if you're not familiar with it. I'm going to skip that right now and sort of talk about though how we build that out. And one of the things that's very valuable is in your roadmap doing a regular, we'll call it new technology because technology is coming, like every time you turn around, there's something new out there. If you flip back a couple years ago, then you can look just in the last two or three years like chat GPT has become very big. It was around but it's become very big. Swift has continued to become very big and just mobile development and specific mobile development platforms. Also you can look at things like the new versions of Java, the new versions of Python and Django and React and the new libraries that are available. There's a lot of stuff out there to learn. So if you want to be especially early on in your career, like the first half of your career, first five, 10, probably 15 years, it's going to benefit you, I think, to always have an idea of what's out there. And that doesn't mean that you aren't a specialist to some level. You may, especially early on, you're probably going to know or be more comfortable in one language environment or framework than another. For example, maybe you came out of school and you learned a lot of .NET. So you're comfortable in the .NET world. But that doesn't mean you shouldn't have an idea of, let's say, the Python world or the PHP world or the Java world. And it's where it's, I think, very useful to know that your tool, whatever it happens to be, has its strengths and its weaknesses. And if somebody asks you to compare or contrast that to another platform or another solution, you can at least talk to it and not just say, well, that's just crap because my solution is the only one that matters, because that will immediately lose you respect and any value for your opinion. If you can instead say, hey, I've built a lot of projects in, let's say, C Sharp. I've also built a few projects in Java. And here's where I found that the strengths of each. Or just personally, you can share this is why I choose, in this case, C Sharp over Java. And it's because of A, B, and C. The more you have broadened out that skill set, one, the more you're going to see, you're going to be comfortable when new things come into your language because they're constantly stealing from each other and sort of building on things that have been done well in another language or another environment. But also, you're just going to sort of see a little bit of the writing on the wall. So if you're in something that is dying, you can see that there's somewhere to jump off to. And the more that you've spread that out, the easier it's going to be, whatever the new technology is to adopt that. So those are my thoughts. Let's see, do you want to do you want to piggyback on that or do you want to focus a little bit more on the deep and narrow approach? Let me speak a little in addition to that. So one of the things you didn't really touch on, you alluded to with your comparisons there is one of the things with the different technologies is you'll especially because there's degrees out there and things you can do, you know, there's talk about computer science, there's frameworks, what you tend to find with a lot of different things in software, regardless of the language, is there's a lot of commonality between the syntax. So especially when you're just starting out, figuring out how to build a kitchen sink or Hello World app in multiple languages so you can compare the two applications really helps. You can go, oh, okay, here's this in Python. How do I do this in Java? And you literally build what I call kitchen sink app. It's basically a Hello World app with a bunch of little features and utilities that are common across multiple languages that you need for this application. You need for this application, regardless of the language, you kind of need these features and functionalities. The other thing you didn't really touch on because you were kind of keeping this at the technology level is also the platforms. Don't be afraid to learn Linux, Mac, Windows, you know, Unix. If you have the capability, go check it out. You know, thanks to cloud computing, thanks to Docker and containers, there's really no reason for you not to just go download a virtual machine, throw it up in VirtualBox or some other player and just play around in a different operating system. See how the languages work in the different operating systems. You know, just about every single platform out there has a text editor and a compiler. So you should be able to write code anywhere. So those, that's one thing I just kind of want to piggyback on with that. I do want to like step back a little bit and say, if you want to learn Windows, be afraid, be very afraid. But other than that, that is great. I think it is, it really is critical, especially early on, to spend a little time in the three big boys of Linux, Unix type of environment, Mac and Windows, particularly if you're a Windows person is understand the Unix command line. I think that's, although there's GUI tools everywhere, there's always Windows things out there. But I think being able to like, you know, some people are going to freak out, but being able to use VI or Emacs or something, an editor that is a simple editor and also having editors that are cross platform like a, was it Turbo Editor? I forget the, it's a couple of these that are out there that are their cross platform or the IDs now, as you can, you know, Visual Studio Code, something that you can get into where you can work with files, you can make your edits, you can do your changes. I do think that the Hello World is nice, but I think the whole idea of the KitchenSync app is underrated. First came across it with a tool for mobile development several years ago where it was, and it's honestly, they called it that before. If you go to the Java trails that I think are still out there, the Java tutorial stuff, particularly if you want to get into, for example, the UI side of stuff, they've got all the controls. They've got all the controls. They've got events. They've got examples. They've got all of these ways for you to just go do something simple and focused. So it's like, do you want to create a drop down list? That's a multi-select. Here's how you do it. Being able to do things like that and translate them from one language to another is a great way to learn that and to go from exposure like, hey, I've built in a Hello World or I've built a couple of little things in a language to, I can do that. I have built an application, which is what I've always recommended on the career roadmap is get in there and get used to it maybe one year or one six month period or one quarter. And then the next time around, turn around and build an application in that. Usually the best ones to build are utilities that help us out. Whether you want to keep up with your video collection, whether you've got been very valuable to me has been code manipulators over the years, code generators of varying types and sizes and usages because one, I use it. Two, it forces me to get in that language a little bit. And usually while I have enough control, because it's my application, so I can tweak stuff a little bit. And if I'm going to get into an area where I just don't matter about this language right now, I can sometimes punt. But also it forces me to get into something where I get a payoff at the end of it. It's not just that I learned this language, but now I have this cool little app that I can use and show off. If I'm trying to get a project, I may say, hey, here's a project. Here's something I built that looks like that or that proves that I can work in that technology. And I think that just while, yes, if you've got 10 years of experience and all 10 years are very deep in, let's say, .net, then you're probably more likely to get a senior .net job. But you want to watch out for the, do you have 10 years of experience or do you have one year of experience 10 times in making sure that you are even within your chosen language environment, that you are pushing yourself, that you're growing, that you understand from version to version, that maybe you're staying up to date. This goes back to something we talked about not too long ago, actually talk about, Michael, I actually was just venting and whining because somebody had built an application and they hadn't updated it in six or seven years. So it was awesome if you were running on 2015 technology. But when you try to bring it up to 2024, which you have to do if you're going to kick it out and turn it out as a commercial application, suddenly it breaks and it's a struggle to find all the right libraries and do all of the upgrades. So make sure, regardless of which way you're going, that you're also staying current along the way, that you're not just like a teacher that's got tenure that says, hey, I don't have to learn this anymore because guess what? We're always going to have to learn it because our stuff changes all the time. Additions on that? Yeah, I liked how you mentioned that. So the other thing along that, and we've talked about this in the past, is we continue to either go deep or go wide. The idea of the KitchenSync app, or even as you're building or learning, this is where starting out with those source repositories, Bitbucket, GitHub, start building those now. Those are good for your resume. Those are good resources. I can't even tell you how many projects I have now. I think I'm over 75 projects in Bitbucket that I've done over the last 20-some years. I constantly go to it from time to time. It's like, oh, what was this? What did I do here? You go look at, yeah, it's dated, but you have the algorithm or you have the framework idea for what it is and you can reuse it later. So that's one way where you can go wide early on and come back to it later and be like, oh, yeah, I did this back here. Now you can use it somewhere else to go a little bit deeper into a technology or learning it. Now, one thing that me and Rob early on when we first met, a lot of what we were doing, we were constantly having to teach our stuff new stuff. Spring Rue was out at that time. Now Rue's not here anymore. We have Spring Flow. Technologies come and go. Languages come and go. Sometimes they evolve to the point where you need to be diverse. You need to be wide in an understanding of technology in order for you to go deep into some of these areas, especially with mobile development and web development. Thoughts on that, Rob? Yeah, now really, particularly now with the mobile development, web development stuff is when you get into the world of APIs is that there are some languages that, like if you use any of the documentation tools that are out there, Swagger or anything like that, you can see in a lot of cases, and especially if you do like Redocly and some of these, there are code examples to utilize the API. Or if you use like Postman, it'll generate stuff for you. Now, some of these like Postman or even Selenium, you can generate code. So many different languages. If you don't know one of these, then you're probably not a developer. But if you get into more like niche of APIs, you'll find situations where they only have one or two languages that they've got examples in. And so those don't happen to be your language. It's very helpful to know what those languages are. Now, they're typically going to be there's sort of some standards. So you're probably going to see, usually, curl is out there. So you can at least get a curl example. And then between like a Java, JavaScript, Python, PHP, probably one of those is going to have it. I haven't seen as many, but I also live in a different world development-wise, but I haven't seen as many .NET C Sharp. But if it's a bigger solution or if it is a Windows, Microsoft shop, then obviously they're more likely to have those kind of languages. But if you're dealing with an API that's mostly Windows stuff and you only know Java and they've got .NET solutions and it may not translate for you. It should because it's really not going to be that much different. But it's one of those, the more you know that, the more you have had exposure to that language elsewhere, the more likely it will just dive in and go, oh, this is this example. I can convert it over to my language and I'm off and running. And that actually even works just for if you're doing like a chat, GP, AI, Google or anything like that, where you're finding existing solutions. If you see something that's in a different language and you can do that translation, then that's going to help you immensely and really expand your pool of examples that you can work with. Thoughts on that one? Yeah, it kind of made me think of the whole REST versus SOAP framework anthology, because over the years, remember, SOAP was real heavy early on. Now everything's kind of gone REST with APIs. And then even with in that, you have your different languages that are even better at it. It's like, you know, Python's really quick behind the scenes. Java has its complexities, which is good for more complex, more secure systems. It's having an understanding, like a wide understanding of the different technologies. You can walk in and go, oh, you need an API for X. Well, what kind of systems do you have? And then it's like, oh, Python or oh, Java. You don't have to stick with what they necessarily have. Now, if they're a pre-built shop and they've got a legacy system or something, sure, you may have to walk in with a little deeper understanding of that language, but having a wide understanding of like REST and SOAP and knowing where and what situations to use these and what languages are proficient really helps you kind of, I guess, be diverse in finding those particular jobs or contracts out there. Yeah, I think it's just one of those that the more you, it goes back to the old thing is that, you know, if you've, if all you've got is a hammer, then everything is a hammer. And I've seen many applications that were built with that kind of a mentality. And so if you can get a little wider, especially if you can have your little side hustle projects be something that's wide while your day job is taking you deeper, then you get the best of both worlds. So it doesn't have to be, you know, one or the other. It can be both. You can go deep and go wide. It's just take up time. So this is where really, if you're going to become a better developer, one of the things you have to do is you're going to have to invest time is you're going to have to spend some time. If you're working 40 hours a week and that's it or less, you're probably not going to get, it's going to take too long. But now if you're, you know, spending a little extra time and you throw that extra lunch break and you're playing around with a new language, building a new app, the next thing you know, you're going to have a lot of time spent in that technology. And now you're going to be comfortable and be your side hustle. Final thoughts? Yeah, I'd like to add one thing. So one of the things as you're learning, like Rob said, if you're, you have a full-time job and you're, you know, doing a side hustle or just trying to learn new things. One of the things from years ago, when I started out, you know, we basically didn't have too many languages to choose from. We had Cobalt, we had C, C++ and early on with Java. Now we have so many different technologies, so many different languages out there. It can be overwhelming, but the best part is if you are proficient in at least one language, you know enough to get started. You can take another language and basically teach yourself what you know in the current language. And then you continue to grow. You see what else is out there. Don't be discouraged, but take the baby steps. Like if you know Java, pick up C sharp. It's very similar. Try to start writing some basic applications similar to Java and C sharp. If you're doing PHP, Python, same kind of things. So don't limit yourself, but challenge yourself, you know, go a little bit outside of your comfort zone. But if you're scared, start small. And the easiest, and I'll just wrap this one up with a thought on that is if you know a language and you're comfortable with a solution in that language or in that environment, then you can always Google how to X, Y. So I've had a lot of times where it's like, how do I use, is there a log for J, which is a Java thing in Python? Or is there, what is the equivalent to J unit and C sharp? I mean, these are queries that I've done and some of them many, many, many, many years ago. And it allowed me to go see that, oh, there's this thing that is very similar and now you can translate that. And this even goes for stuff. I use it all the time where it's like, how do I do a string replace in MySQL, in Python, in you name it. It's like, I forget how to do it. Or it's even languages I know, because I forget. If I don't have one, it's easier to Google it or chat it. That's the signature for that. Whether you are currently broad or deep, I think it's in both. In any instance, it's going to be useful to look at your career roadmap and say, where can I be more broad? And where do I want to get a little deeper? Find the thing that you really enjoy doing. And probably you're going to have one or two languages that just really fit your style. Now they may go away or they may change over years. For myself, when I first saw I fell in love with it because it was not C++. But also it had a lot of cool stuff. And so I did it for many, many years. And then as we got into other development stuff, I've had periods where I really liked what PHP did for a little bit for what I was doing. I like Python and Django right now for what I'm doing. And you're probably going to see that evolution as well, because there's going to be stuff five years from now that don't even exist now. And you're going to say, wow, I really enjoy doing that. Even if it's like tedious stuff, like I enjoy CSS sometimes and figuring out what you can do with it. It's just tedious to do so. What's not tedious, hopefully, is listening to this podcast. And this episode hopefully has not been. I know that may be a bad segue, but hey, it is what it is. We will be back. If it's not too tedious, we will be back. We will come back with our next episode. We're going to dive right into some more of these topics. As always, shoot us an email at info at developer.com. If you have any questions, suggestions, comments, lack of tedium, jokes, you name it, we'll take it into account and probably throw it out on an episode somewhere. And we're just going to come back. We'll continue cranking through this season and we'll figure out the next one is. But as always, go out there and have yourself a great day, a great week, and we will talk to you next time. Thank you for listening to Building Better Developers, the Develop-a-Nor Podcast. You can subscribe on Apple Podcasts, Stitcher, Amazon, anywhere that you can find podcasts. We are there. And remember, just a little bit of effort every day ends up adding into great momentum and great success.