Skip to content

Commit

Permalink
added savvyaudiophiles episode 1 transcription as blog post
Browse files Browse the repository at this point in the history
  • Loading branch information
sshurie committed Aug 29, 2017
1 parent f3e5870 commit f6dd342
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 0 deletions.
52 changes: 52 additions & 0 deletions source/blog/2017-08-29-how-do-i-get-started.html.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: SavvyAudiophiles Episode 1 Transcription
date: 2017-08-29 03:30 UTC
author: Samantha Shurie
category: transcriptions
tags: savvyaudiophiles, audio, podcast
---

__[Gary]__ Welcome to the SavvyAudiophiles, presented by SavvySoftWorks: “Building reliable software and expert development teams.” I’m your host, Gary Newsome. SavvyAudiophiles is an audiocast where we discuss topics in learning within the development world. In this episode, Paul talks on the topic of “How do I get started in programming?” And now, without further ado, the SavvyAudiophiles.

__[Paul]__ So recently I’ve been in a self-taught programmer group on Facebook, and it seems to be filled mostly with, I think, maybe high school kids or college-bound students, or students before their sophomore year in college, and they have a lot of questions about “how do you get started?” and I don’t think that’s the group’s purpose but I have to admit, even in my own personal experience this is the question that I’m always asked. It seems like there’s a certain great divide. You either don’t know how to start, and then someone kind of gives you a nudge, and you either take off from there and take over on your own, or you just don’t go anywhere for awhile. And I don’t know why there seems to be such a conflict here in the “getting started” part. I know that with my employees, we talk about this a lot. If you want to do something, you just... start doing it.

Anyways, I think that the biggest piece of interesting information that these people tend to ask for is what kind of laptop to buy, and then the arguments that the experienced guys get into is what IDE to use, and how big of a screen. To be honest, when you drill it down, they’re really pedantic arguments because we’ve had a couple of very good responses where somebody has said “Well, what about a Raspberry Pi and a TV?” You can compile Ruby on that, and guess what? It’s a pretty good computer.

So, I think, though, there is something that we should probably be picking up here. It’s that different communities, the position that these people are in when they’re on those communities, are different. I don’t get a lot of that “how do you start,” stuff when I’m on Twitter. I do get an awful lot on Facebook and in my Meetup groups. That’s almost 100% the types of people that are showing up. I would like to say that I wish I would find more experienced engineers who want to sit and talk to me about their experiences and what they’re learning, and they seem to be busy at work, I guess. Some of them are very interested in helping these new people entering the field, while the others just seem to be somewhat… like they are accepting of the fact that they’re present, but there’s not a lot of care to help them, truly help them.

And that’s even a problem that I fall into, where I do want to help them, but I’m not necessarily able to see things on their level anymore. I know that the solutions that I often provide are - if I was starting over again - I’m 35-year-old Paul, and I’m going to step back now, and if I met 16-year-old Paul again, what would I wish I had told myself? And that’s where these pedantic arguments happen between the other senior level experience that are involved in the conversation. I don’t know if they’re all getting that angle, we’re not really aligning that way, and we don’t even know if it’s “programmer,” “developer,” “software engineer”. We’re having a hard time coming up with, in the philosophy sense, the very basic tools within the language to describe and provide meaning to the things that we want to talk about, let alone being able to give advice to someone who’s new. It’s a big challenge. So, we’re going to talk about that a little bit more.
Let’s start out really easily. I’m not going to pretend that I’m going to have all the answers here, and really what this is, is a mish-mash of the solutions, or answers, that I’ve read of others online and my own kind of opinion on the matter. I openly request that if you have an alternate opinion, that you send it to me. I’d love to hear it. That said, I don’t pretend that the answer I’m going to give may be the one you want to hear, and that’s why I’d love your feedback.

When I think about the term “programmer,” versus “developer,” versus “software engineer,” I personally have a very specific reason why I’d use any one of those terms to describe myself. I know they all have a strictly formal definition which I’m not going to bother to elaborate at this point, but let’s just say for the sake of argument that these three words effectively encompass the same group of people with nearly the same skillset, doing the same job. Why do we call each other different things?

My answer: I, in a community sense, talking to another developer, will probably never call myself a software engineer, and there’s a reason for that. I’m not an engineer. I neither have the math background, or what I’d consider the formal accreditation that engineers normally have to go through in order to prove without a shadow of a doubt that the skills I have are somewhat universal and applicable. That doesn’t mean that software engineers don’t exist and don’t have those skills. I’m just saying that’s not me. Now, “programmer” versus ”developer,” there seems to be a greater overlap. They really are the same thing. A programmer programs a computer. A developer develops software. If I was going to give anything slightly concrete as a definition, they are steps in a scale, but this is not quantifiable, truly. I would say that a programmer is a junior developer, a person who knows how to program a computer. I would say a developer is someone who actively pursues the accurate process of designing and building software. So, a little bit more refined. Then a software engineer is an individual whose concerns and motivations are about change management, efficiency, performance, and avoidance of risk, in the sense that there are dangers.

I like to try to liken this to “engineers build a bridge.” They’re held somewhat responsible for whether that bridge collapses. We don’t necessarily consider that the guy putting the rivets holding the bridge up, or running the cables, is responsible for the bridge if it fails. He might be, but that doesn’t necessarily mean that that’s the person who’s going to be held accountable. The guy who designed the bridge is more likely to have the focus shine on him. So, a software engineer has to be able to take care of that same aspect, where they have to be able to be interrogated, and be able to prove that they’re not producing something that’s risky, and that takes years of experience. Even if I was just to oversimplify this, a programmer is one to three years, and a developer is three to five, or three to seven years, and an engineer is seven to ten years. If I was going with the concept of learning anything in 10,000 hours, or ten years, that would be your software engineer.

Now, that said, the argument is not really that important because outside of maybe Human Resources hiring and who to put on your team, as a beginner, what you call yourself doesn’t matter. Now, me, as a business owner, I will often introduce myself, like I said, to someone in the engineering community- the software community- I will call myself a developer, because I don’t want to have this overarching, pedantic look that I am somehow impressive or important, because that’s not why I want to talk to them. On the other hand, if I’m meeting with a client, I probably will use the word “software engineering,” because I do have ten years of experience, I do have a lot of the things that I outlined where I worry about risks and change control, but it sounds more impressive to them, and you know, sales is sales. It’s not lying, but it’s definitely trying to give a positive spin and make someone want to purchase from you. So, back to the introductory individual. The reality is, it doesn’t matter. It’s more important if you can get started. Now that we’ve moved out of the way of “What should we call ourselves?,” our next goal is to figure out what we should be doing.

Alright, so we kind of know what we are, or we’ve come to the conclusion that we don’t care what we call ourselves. Now what matters is “How do we start?” What is the correct process for starting? In most communities that I’ve involved myself with, including my own that I’ve produced, I usually tell people that “to start is to just do.” and then I try to think back to what I did as a kid. Now, I’m in a different time period than a lot of the people that I see now that want to start. Not even in the fact of age, I just mean if I was starting now it would be different than when I started. When I started back in the 90s, we didn’t have any internet, I had a book on microcomputer concepts from the 70s that had some basic code in it, and I had an ATT6300.

I’ve introduced myself to junior developers or people who are learners with that story, and they become worried that they lack authenticity in the struggle of development. I always tell them that that’s just my narrative. That’s what I had, and that was the choice I could have. I didn’t grow up in the city, and my school was not interested in it. No one around me knew anything about it, so I had to do the whole thing myself. Given the perfect opportunity, I would have hoped that I had a family member or someone close who would have given me some guidance, but I struggled for significantly longer, and that’s what I always tell new learners. I took probably from age eight to the age fourteen just to figure out some very basic concepts, and to do them extremely poorly. They will start now, with the age of free code camp, and an endless supply of really cheap solutions, and books, and online tools that will almost- and I don’t want to say this in an inflammatory manner- hand-feed them the stuff that I struggled so hard to learn. In reality, they’re not going to be any smarter than me and I’m not any smarter than them, outside of whatever an intelligence test might prove about our own intrinsic abilities. And that, to me, sometimes can be a little bit of a slap to the face. You work really hard at something, but you get to the same level as everybody else… but I digress.

So I try to help them understand that there’s nothing inauthentic about whatever process they choose in order to develop their skills. Then, the second part is to give them what I consider the authentic mentality of what learning how to be a software engineer is, what learning what software is, and what your interaction with the computer is going to feel like. Some people like this answer, and some people don’t. It’s a series of failures, very, very, sometimes painful and obscure failures, counterpointed by instances of great success, which are then completely ignored as you move onto the next series of great failures. If it’s not working, you have work to do. And from a professional standpoint, we really only get to work on things until they’re fixed, until they work, and then there’s no more work to do. I always consider it as, we’re chasing problems. A solution to the problem is an opening for the next problem. I like this way of thinking about it because I don’t want to oversimplify, or tell them it’s going to be easy, because it’s not. It’s a complicated mental process you’re going to have to develop in order to learn how to talk to a computer, and then it’s going to be even more complicated to return that back around and talk about the thing that can talk to a computer to another human. It’s gotten better over the years. Our languages, some of them are easier and some of them have stayed just as complicated, if not worse.

How do we start? Well, I think that the definite solution here is mentorship. And, when someone will ask me the question “is software development a profession or a trade?,” and there is some uniformity in those two terms, but, if I were to slice them off and say that a “profession” is like a doctor, and maybe a “trade” is like a carpenter. In no way am I saying is one more important than the other, but trade is acquired over time and experience doing, whereas I believe that a doctor really can’t afford that. A doctor has to enter the field highly experienced. I think that’s the difference. Now, some of this is depending on where you go to school, your own background, how much time you put into it, but we get better over time on the job. Most people I know are like that. They don’t start out experts, and so I call it a trade. Like any trade, especially think carpenters, and welders, and plumbers, there’s a Union most of the time, and they have an apprenticeship where they learn from an expert who has those ten years of experience. And they gleam from them what they can during the time as they develop themselves. So, I think if we’re ever going to fix the problem of, when a new person walks in the room and says “How do I start?,” we can’t respond to them with “Just do it.”

We have to respond with “Let me help you do it,”

“Ask me what you want, and then we’re going to work together on it,” or, more importantly,

“Come intern for me. I am going to do cool stuff. You are going to sit next to me while I do cool stuff, and in a short period of time, you will also do cool stuff.”

That’s a challenge though, because in some cases you have to be able to afford to pay them to really get their engagement. An unpaid employee is an employee that doesn’t care, and I don’t want to have an argument about that, but the reality is that we are monetarily motivated people, humans are, and that’s probably the rule and not the exception in most cases. So, it’s important to respect a person’s efforts, especially if you’re going to make them sit there next to you, and then you’re going to take their work and then make some money off of it. There should be some remuneration.

So how do we help a person start? We have to mentor, and when someone asks us “how do we start?,” we tell them, “go get a mentor.” It means that companies like Google which already do this kind of stuff pretty well, we need to push this forward to most companies. So if you own a small company, you should be involved in your local high school, or more appropriately, your local community college, to help them develop their program to help pick up one or two of their students every semester. But here’s the challenge. The process has to be communicated in a manner where you’re not teaching them. They are present, they can listen, and they can interact, but you can’t take time away from you producing something and making money, because that’s the business part.

To help them level up if they’re just going to move on to the next semester of college, that requires a lot of preparation from the college-level. In my experience dealing with community colleges, once they kind of make the agreement, hand off the student to you, they have no interest in being involved any longer, and that’s unfortunate. Some part of me thinks that a teacher somewhere, someone in the administration should have helped them set the guidelines and then produce a set of expectations for the internship company. Just in the sense that it would be important to know how close that person was able to develop in whatever the expectations were, based on the kind of work that that company does. This is the problem of trying to get administrators to work with teachers to work with the community, to care about their education when there’s no real monetary drive involved in that.

I don’t want to say that everyone is greedy, but it’s a motivation issue. If a college needs to keep its doors open, it’s definitely not going to be trying to pay its teachers to sit with community members and administrators. That means that they have to care about doing it on their own, and that’s a challenge. Getting people who are passionate after 30 years of doing anything can be a challenge. And so I love working with those administrators and educators that really care about the students, almost so much that it’s their life. Their reason to exist is to make this work for them, and that’s where they get their personal value from. “Hey it pays the bills,” I aligned that, because that’s how I work. I love to develop software. People also happen to pay me for that. Which means I hit the “big win” chart, and that’s why I will always try to help someone else out if they have the same passion as me.

So I hope that if you ever meet someone who’s trying to start anything, and you have the ability to mentor them- or not- you at least push them in the direction to, instead of struggling, help them find a mentor. Help them figure out the direction that they can start so they can be successful, and I bet you they’re going to come back and they’re going to thank you later. I know it’s worked that way for me.

__[Gary]__ Thank you for listening to this episode of the SavvyAudiophiles. You can find us at @SavvySoftworks on Twitter. Paul is @PaulSCoder, and I am @GaryANewsome. Let us know what you think, or let us know if there are any topics you’d like to hear us talk on. Until next time, thank you from the SavvyAudiophiles.
Loading

0 comments on commit f6dd342

Please sign in to comment.