Today I’m going to be talking about why codingis not the same as programming.
There’s a lot of questions around this. The terminology itself is a little bit confusing. What is coding? What is programming? What is software development? What is software engineering? Are we engineers? Are we programmers? Are we coders? What the heck do we do? Stay tuned and we’re going to get to thatin a second here.
John Sonmez here from SimpleProgrammer.com. If you’re just joining me for the first time,you have found the place on the web to learn soft skills for software developers. Click that subscribe button if you haven’talready, click that little bell, so that you can get all the videos that come out everyweek talking about how to improve your career as a software developer, how to improve yourlife. Today I’m going to be breaking down a fairlycomplex topic, a topic of debate, which is why coding is not the same as programming. For me, my career, I spent 15 years as a softwaredeveloper.
I programmed in all different kinds of languages. I have done everything from the self-taughtroad to actually going to school, to teaching other developers. I know a lot about this industry and abouthow people learn, both from the teaching and the learning perspective. Really where this comes about is that thereare some arguments by some of the angry veterans of the software development industry thatsay, “Coding is not the same as programming. Just because you can code doesn’t mean youcan program.” Coding is defined as knowing the syntax ofthe language.
Okay, so I heard some describe it as beingable to understand the syntax of Mandarin Chinese, the vocabulary. But programming is solving problems, and theywould say that that is [anagalous 00:01:49]. Anagalous, anagalous, analagolus. That the analogy in this case would be toactually understand the language itself in the sentence structure and verbs and to actuallybe able to make a sentence in it. To express an idea within the language.
That makes a lot of sense. If you want to define things like that, youcould say that coding is understanding the syntax and perhaps you could say the structureof the sentences, whereas programming is the ability to translate a thought or an ideainto that language. If you say that though, here’s the thing.
It is really pretty difficult to learn howto code without learning how to program. If you think about this, and this is my mainargument here, is how many people really know how to code, but can’t program? Now, when you’re first starting out learninghow to program, you get to a weird kind of phase where you understand a little bit aboutthe syntax as a language, but if you’re given a problem, you can’t really translate it. If you’re told, “What does this do?”, youcould look at the lines and you could write out lines that specifically do things in thatprogramming language.
But you couldn’t solve a problem with it,because you don’t understand how to translate the problem. It’s a skill in itself. Really, the valuable skill that you have asa software developer, and that’s a term that I like to use, is that you can take a complexproblem and you can make it simple. In fact, that’s the theme of simple programmer10 years ago when I started this whole company was making the complex simple. That’s still kind of the tagline here.
That’s the value of the software developer,is that you take the complex, you break it down. And really what is programming at the veryend of the day, what it is is it’s taking a problem and it is breaking it down to thelowest level, and then translating that into an automated step that a machine can execute.
You have a problem, you’re breaking it downinto the little pieces and that’s really a skill that you’re developing. A lot of this argument comes with a wholeboot camps. Because a lot of people say, “Well, you can’tgo to a boot camp and learn to be a software developer in three months. Sure, you can learn how to code, but you haven’tlearned how to program.” And that’s really entirely untrue, and I’lltell you why. There’s a couple of reasons why this is true.
It is not only possible to become a good software developer in three months time or two months time even, but it is likely if you go to aboot camp and you study, and you’re studying six, eight, 10 hours a day with a focusedeffort. That is really the best way to learn anything. In fact, I actually wanted to learn Italianand [foreign language 00:04:43].
I’m learning Italian, but I’m not very good. Now, I took Pimsleur courses, some audio courses,and I did every day for six months, and I got okay to the point where I could communicatea little bit, but not anywhere near fluent. After doing this, I realized that what I shouldhave done was I should have gone and I should have went to Italy and stayed with some familyin Italy, and went to an immersion school there where I only spoke Italian, where theyonly spoke Italian and did that for a month, six weeks, and I would be way better off thansix months of spending an hour and a half or so every day trying to learn.
The total time that I would have spent tryingto learn would have been less, but I would have learned more and a lot more in more depth. It’s the same thing with anything that youreally study if you go in depth with it. That’s why a lot of times, again, I’ve gotit in my… If you can check out The Complete SoftwareDeveloper’s Career Guide, the first few chapters are about how should you learn, what shouldyou do? Should you go to school, should you try tobe a self-taught, should you go to a boot camp? I really tend to push the boot camp side ofit, because I feel like that makes the most sense.
You gotta throw out these traditional notionsof what education is and you gotta say, “What is the point?” What we’re trying to do is we’re trying tolearn how to do something.
I always say, “If you want to learn something,you have to say, “I want to learn X so I can do Y”.” Well what is the Y that you’re trying to do? If you’re trying to learn how to build a websiteand to be able to… There’s a couple of things involved with that. One of them is to understand the technologyand framework involved in creating the website itself.
Let’s say web applications are applicationsthat are on the web and how that all works together to create the UI components and allof that. That’s not really problem solving though,it’s just how to construct it, the recipe that you need to do that. And then the second piece is to how to solveproblems algorithmically. Those two things are necessary in order tocreate, let’s say, a web application that has logic. Underlying that, you’re going to have to knowa lot of technologies that are involved in that.
If that’s your goal though, then there’s noreason why you have to go to a formal degree program, why… You need to learn specifically the skillsthat are required to do that. I think there’s an impression that a lot ofpeople are learning “coding”, and so what they’re learning is just the templatized versionof the syntax of the language and not how to solve problems. That is an issue and that does happen fromtime to time, but that happens a lot with college graduates.
I have interviewed many, many people overmy career and I can tell you that there have been some very high level college graduatesgraduating from places like Carnegie Mellon and I have had them at an interview and askedthem to solve a simple problem, to write in algorithm, even the pseudocode in algorithm,and they were just stumped.
They could not do it. They might be able to fix a few bugs, theymight be able to read the syntax and understand the syntax of the language and tell me whatpolymorphism is and interfaces and all of the stuff and abstraction, but they don’treally get that. In and of itself going to a boot camp, learningon your own, going to college, those are meaningless things.
Ultimately, what you’re trying to do as asoftware developer is you’re trying to learn how to be able to utilize the language toexpress an idea, to solve a problem in that language and those problems are domain specific. Meaning that it depends on what kind of problemyou’re solving and where it is. The world is too large, the technology spaceis too large for us to have a [inaudible 00:08:41] this. We knew we need to be more specialist, morespecific to the problem that we’re trying to solve.
Coding versus programming, it doesn’t reallymatter. You can’t really realistically be “a coder”without learning programming, and it is your responsibility as a software developer tolearn more than the basic syntax of the language. Anyway, I thought to make this video, wantto kinda put some of those ideas to rest, and I know it’s confusing for a lot of younew guys to hear all this terminology and things I used to quote the term software developer,because I feel like that’s what we’re actually really doing, is we’re developing software.
Go check out Simple Programmer and check itout. We’ve got some awesome stuff on there andlike I said, this is the place to learn soft skills for software developers. I’ve written a couple of books on the subject,you can check that out, you’ll find the links in the description. I’ll talk to you guys next time, take care.