You are a knowledge worker. Your tool is your brain. Keep it sharp. This episode will help you create a plan for getting better at what you are already great at, and push you to learn more skills.

Transcript for episode 64 of the Test & Code Podcast

This transcript starts as an auto generated transcript.
PRs welcome if you want to help fix any errors.

Welcome to Test and Code, a podcast about software development and software testing.

I want you to get the most out of being a software developer or test engineer or whatever your title, to live the most fun, the most value, the more career options, probably more responsibility, maybe even more money. That would be cool. I want you to start or continue studying and practicing your skills, but not just random practice. I’ve got a strategy to help you focus what to study and your job doesn’t count as practice. You may be able to incorporate practice into your work day, but that’s another matter. We’ll cover that at the end. Thank you to Pi Bytescollangers for sponsoring this episode.

Check them out at Destinco Combinetes and listen to their segment later in the show.

By the way, they didn’t prompt me to do this topic. I’ve been wanting to discuss this for quite a while and I’ve reached out to them to sponsor because it’s really good fit. Also, I’m working along with the challenges to keep my Python Skillshare.

If you think of anyone you admire in any field outside of software, practice is probably a huge part of why they’re good. Athletes practice more than they compete. Artists practiced in sketches and partial drawings and subject studies. Musicians? Same. Public speaking? Yes. What else? Dancers, skateboarders, woodworkers jugglers? Actors? Comedians. Oh, yes. Greatness. Requires study and practice. This is probably also true of the software people you admire as well, but we don’t see them practice. If you write software in the job, does that count as practice? Parts of it. If you approach it right. But just doing what’s asked of you that you already know how to do and have already done before doesn’t count. It’s not going to extend your skills to push you further.

Please don’t dismiss the study and practice outside of work. It’s something you don’t have time for. My suggestion will be 20 to 30 minutes a day, three to four times a week, and once a week doing a 1 hour practice session. You have the time. I’ve got my advice for how to study and practice, but before we get to that, I want to share some parts of articles I’ve been reading on the subject. I’ll link to all of these articles in the show notes. Let’s start with practicing programming from Steve YEG. I think it’s YEG. Here are some quotes. Contrary to what you might believe, merely doing your job every day doesn’t qualify as real practice. Going to meetings isn’t practicing your people skills, and replying to mail isn’t practicing your typing.

You have to set aside some time once in a while to do focused practice in order to get better at something. As it happens, we don’t get much better. As it happens, we don’t get much time on the job to improve our skills. For the most part, it’s up to us as engineers to take our own training into our own hands. Yes, there’s some training and there’s some mentoring, and there’s some book club discussions and so on. But in the NFL, people practice daily. That’s what practicing is all about doing things repeatedly, daily habitually to get better as fast as possible. The most important thing you learn in College is how to learn on your own. They teach you how to research and how to apply the scientific method and question your own findings. And they give you the fundamentals of math, language, social Sciences, et cetera, so that when you want to learn something, you know how to figure it out. You’re for yourself. But practice looks different for software. That’s why we don’t see people practicing. Unlike the NFL, programming is a profession for which practicing is usually most effective. If you’re doing it alone or at most with one other person, it requires quiet concentration and deep thinking, and you absolutely must solve the problems yourself rather than just seeing the solution done for you. In a nutshell, if you are a programmer, you need to take matters in your own hands and train yourself. Programming happens to be a discipline in which you can squeeze practice drills into nooks and crannies in your schedule. You don’t need to get into uniform and allocate a three hour session for it. That’s all Steve’s stuff. Steve goes on to list twelve exercises he calls practice drills. The first practice drilling is this. He says, Write your resume. List all the relevant skills, then note the ones that will still be needed in 100 years. Give yourself a one to ten rating on each skill. I’ll let you read the rest of his article on your own. They’re all good ideas, but I like to focus on putting your resume at number one. I like that focus. I think the 100 years thing is to get you to think about people’s skills as well as nitty gritty technical details and technical skills. We’ll get back to the resume in a bit. Let’s hear from someone else. This time it’s Jeff Atwood from Coding Horror. In his article The Ultimate Code Kata, Jeff pulls from the Scientific American article with a quote, what matters is not experience per se, but effortful study, which entails continually tackling challenges that lie just beyond one’s competence. He also references Steve’s article and a couple of other articles, including the awesomely named Teacher Programming Teach Yourself Programming in Ten Years by Peter Norvig.

But right now I want to highlight Jeff’s two extra suggestions. His two suggestions are one, write a blog. I started this blog in early 2004 as a form of effortful study. From those humble beginnings, it was turned into the most significant thing I’ve ever done in my professional life. So you should write blogs, too. The people who can write and communicate effectively are all too often the only people who get heard. They get to set the terms of the debate, and number two, actively participate in a notable open source project or three. All of the fancy blah blah blah talk is great, but are you a talker or a doer? This is critically important because you will be judged by your actions, not your words. Try to leave a trail of public, concrete, useful things in your wake that you can point to and say, Help build that. So those are two things I want to leave you with. One more quote from him. He wrote, when you can write brilliant code and brilliant pros explaining the code to the world, well, I figure that’s the ultimate code Kata.

This is great advice. So how do I beat that? I’m not even going to try to beat that, but I do have some suggestions as well, and this seems like a decent cliffhanger to thank. Our sponsor.

Thanks to Ibites Code Challenges for sponsoring this episode. The best way to learn and improve your Python skills is through intentional practice. Reading books and watching videos is great, but nothing beats actually writing code and solving problems. Hi Bytescode Challenges is an in browser Python coding platform that offers a series of bitesized exercises of varying difficulties, each designed to teach and push your Python skills to the next level. All exercises, or bites, as they’re called, can be solved entirely within your browser, meaning no frustrating environments to configure. Even better, you’re not coding alone. Bytes Code Challenges offers an active and supportive global community of Python programmers who are coding right along with you stuck on an exercise, hit up the community for some feedback on your code. The experience is tailored to help you learn and improve by pushing you to code towards pytest tests. If improving your Python code as a priority, you won’t want to miss out on this deal. For Test And Code listeners subscribe to Code Challenges using the link in the show Notes to get off the monthly premium tier or the annual subscription. Sign up now and you’ll be coding in no time.

Okay, so let’s say you believe me and Steve and Peter and Jeff that you need to set aside some time for practice. So let’s make a plan for what you’re going to study and practice.

Let’s start with your resume. I think it’s a good idea to have one up to date. Well, a starter resume, at least. Even if you’re not ever planning to leave your current role. Stuff happens. Update it, put a section in there for skills. Include technical skills, people skills, et cetera. You’ll edit this if you ever need to send it out to anyone anyway, but that’s a topic for another episode. Now we’re going to build a shortish list of skills to work on. Take out another piece of paper or document and start with a blank list. Questions.

Are you proud of your resume? If not, why not? Are there skills you wish you could list but really can’t right now? Put those on your to work on list. Also, what programming language or programming languages do you use or want to learn? I’m assuming Python with this podcast, but for me it’s both Python and C, and I’m already kind of drowning at other stuff. So I’m not planning on learning any other languages right now. But at least one language on your to work on list, put the one that you are good at already. If you want to learn another, then put two. But as you’ll see from the rest of my suggestions, you should be increasing your current grade at as well as building other skills. Now for the rest of the skills on your resume. Technical skills. Pick two. One you were already good at and one that you’d rather not get asked about in an interview. Put them on the list. People skills. Same thing when you are already good at when you know you need to be better at. If you don’t have any people skills on your resume. Skill list yet, let’s come up with a few. Here are some options. Writing, ad copy, technical writing. Oh, wait.

As you see, I’m kind of a true nerd. I lumped those two in with people skills.

Presentation skills. Leadership, conflict resolution, public speaking, negotiating. That something people should put on a resume. Not sure. Probably for some jobs, you get it from there. Pick two. Even with those limitations I’ve given you, you’ve probably got quite a list. Oh, yeah, we’re not done. Your current job matters. We’re trying to get you also to rocket this gig. Go dig out your last performance review.

Do the things mentioned in it that you were good at. Match the things on your list. At least something. If your boss says you’re good at something, believe them. Is there something you’ve been told you should work on but you haven’t yet? Put it on the list. Okay, this is a big list. What do we do now? First, we follow the cover of The Hitchhiker’s Guide to the Galaxy. And don’t panic. You’re not going to work on all of this at once. It’s just a reality check that you’re not perfect and you can always get better. But if you’ve gotten this far, you’ve gotten farther than most of your peers. So Yay.

So this might be a decent sized list. Seriously, don’t panic. About half of it you’re already good at. You’re just trying to rock at it better. Now it’s your choice. How many things do you want to work on? Two things. Three things. What do you want to improve on in the next month and the next three months? Don’t plan further than that. I don’t think so. Just what are you going to want to work on right now? Just pick a couple of things. Really? For right now, just pick two or three off the list. At least one should be one that you’re already good. At least one should be something you’re not so great at. Now we’re going to plan time in your calendar 20 to 30 minutes a day for three to four days out of the week and 1 hour once a week. I don’t know what your week looks like, but get those times down for the 1 hour slot you’re going to work on. The thing that you’re not so great at. The other slots can be something you’re already good at and trying to improve. Or maybe a mix.

Okay, now that we have the what are we going to work on? And the win? Hold the question of can’t I do this at work? I’ll talk about that in a bit. We need to discuss the how. I personally believe the best way to increase skills is a combination of study, practice, doing, helping, and teaching. Let’s get let’s get into that. Study can be reading books, blogs, etc. I’ve got a pipe test book I can recommend. If testing is on your list, study can also be taking an online course, taking an inperson class, reading other people’s code, talking with people, asking questions. What about practice? Practice can be drills, code challenges, interview style questions, for example, Pi, bytes, code challenges is awesome. With this. There’s also a big list of these kinds of things and show notes, mock interviews with colleagues and friends. If interviewing is part of on your list, presenting in front of small groups before presenting in large groups. I don’t know what’s on your list, but basically small versions of the big things so that you can do it many times and not be afraid of failure. Doing for code doing is building stuff. I recommend the doing be making open source projects, or at least one doesn’t have to be in a new awesome idea. It can be as simple as a to do list or another markdown converter. I’ve done both of those. The act of actually doing an open source project, learning all the bits and pieces to make it work, learning about how to hook up CI tools, putting up documentation, all of that. It’s a great learning experience. Even if no one ever contributes it or stars it or uses it, you will learn from it and it will help you appreciate all the work that goes into the projects you rely on every day. Build other stuff, not just open source. Play with Raspberry, Pi or something. Build a wet scraper, make stuff. Learn how packaging works.

Learn how pragmatic you have to be when you’re the only designer, implementer, test or documentary maintenance engineer. Helping other people or contributing. Help your coworkers put together cheat sheet guides for tools you know that others are learning. Help with those open source projects you rely on and believe in. Now, helping with other people’s open source projects is not just code, but if you can contribute there, awesome. You can also help by triaging issues, add Tags, answer questions, add the documentation, help with the project’s website if they have one. Hang out on the Project Slack channel if there is one. Answering questions. Answer questions on stack overflow related to the project. And the final thing is teaching. What are the things you’re already great at? Write about that. Write a blog or write a medium on Medium or guest post on someone else’s blog. If you know about testing, send me posts for Python

Be a guest on a podcast. Teaching what you know. Testing code, anyone? Seriously, this segment isn’t just about plugging my help with my stuff, but write about it. Speak about it. Hold a Brown bag at work.

Speak at local meetups. Start your own meetup. If there isn’t one in your area, you only have to meet once a month. Maybe do videos, YouTube courses, courses, et cetera. Whatever. Just teach people what you already know. Teach your kids. A lot of these take time. A lot of them take a chunk of focus time. That’s where your 1 hour slot fits. But that’s only four to 5 hours a month. But it’s also four to 5 hours a month. You can get some serious stuff done in that time if you focus. And it’s not a sprint, it’s a marathon. Now make a plan. What are you going to work on? How are you going to work on it? And when?

What are you going to improve? What are you going to learn? What are you going to teach? Don’t start grand, start small, but have a plan. I know this still might be too vague, so I want to give it specific.

Make it specific. Here’s my plan, and this is just for what I’m going to start with. I don’t know where it’s going to go from here, but here’s five things I’m going to expand my Python knowledge by doing. One, Pi Bytes code challenge four days a week. Two, read one online article on testing per week. Three, follow along with an ebook on Django. This is part of my 1 hour exercise. Four, I want to contribute back by trying to answer one to two stack overflow questions about Pi test per month. I look up questions at least once a week, but I’m only holding myself to trying to answer one to two. Write more. This is number five. I know that’s totally vague and lame, but Python is kind of stagnant, and that’s not good. I’d like it to not be stagnant. I’m also trying to keep up with 52 episodes this year of Test And Code and make sure I research enough Python articles, info, Libs, tools, et cetera. For 52 episodes of Python Bites. By the way, we’d love to have people help us on Host Python Bites. Let me know if you’re interested, but that podcasting stuff is my own crazy, not yours. My first five things really don’t take long, and they’re fun.

It’s not an overwhelming list, and next month I’m going to reevaluate it and make a new plan. You don’t got to finish an ebook or a course. Just keep learning and getting better.

What is this all for? It seems like even though it’s just a little bit of time out of your day, why should you do this? Well, it’s to help you be proud of what you do. It’s about so much, and it works. I’m not trying to get you to become an entrepreneur or build a company or change the world. I’m trying to get better about what you already do, what you’re already good at. I want you to love your job. If you don’t love it already, expand your role until you do. If you can’t expand your role until you love your job, then find another job. Learning more skills will help you. It will help your company look at your current role, your current team. Really everything. Can you add value in places that you don’t even seem like they’re part of your problem? Add value. Do it. Make it your problem. I can’t tell you the number of times stuff I learned with my own free time because I wanted to turn just because I wanted to turned out to be useful at work. And I never really know the real benefits of how they’re going to affect me. My desire to be better at public speaking led me to podcasting. Podcasting led me to interviewing people, which led me to improve my listing skills. These listing skills have helped me be a better manager, a better father, a better husband. I never thought that that was going to happen. Okay, now work time.

I know all these studies takes time, and some people don’t have a lot of free time. Can you do this time at work?

First, put together your plan for how you’re going to spend your 30 minutes four times a week and 1 hour once a week. What are you going to work on? Will it improve your work? If so, take it to your boss. Ask them if you can spend that time at work. But here’s the catch. If they say yes, then double down. Double those times. Half on their clock, half on your clock, half on your free time. That seems fair, doesn’t it? If your work is willing to let you improve yourself on the clock, then I think you can take a few hours out of your social media and TV budget to improve. Also just saying in the show notes, you’ll find links to articles I mentioned at the beginning. You’ll also find the links to Pie Bites code challenges. Actually two. One to check it out. One to save some cash if you decide to do the paid thing. You’ll also find a few other code challenge type tools. Also, different things work for different people. Try a few out. See what you like. One more thing. This is important to improve yourself. You are a knowledge worker. Your tool is your brain keep it sharp.

Thanks again to Pie Bitesco challenges for sponsoring the show. Try out the ten free challenges with the first link in at PieBites when you realize you love it and want to get more, use the other link at Test And Code. Compites all these are in the show notes to get 20% off the premium membership. Also those links are in the show notes at 64 there’s also lots of other links in the show notes. The articles I discussed some of the other practice sites I need to also say thanks to Patreon supporters. You’re awesome and special thanks to new five dollar level supporters. Johnny Cochrane, Chris Fraser and Michael Hart. Thank you so much and thank you the listener thank you for helping to grow the show by spreading the word to friends and colleagues and on social media. That’s all for now. Go out and make your plans. How you’re going to keep getting better what you’re already great at and maybe also write some tests.