Why Coding Is Not The Same As Programming
Have you ever heard that coding and programming are not the same thing? But, how can that be possible?
Well, in this video I came across a very interesting text, which I've decided to share with you. in this text, the author stated that programming/software development is not the same as coding.
And well, if you know me, whenever I find something interesting, I create a video to share with you guys… And this is exactly what I did in this video.
For a lot of software developers, coding and programming is the fucking same thing. if you do a simple search on the internet, you'll find the below definition for both terms:
a set of symbols that can be interpreted by a computer or piece of software: binary code; Java code;
the symbolic arrangement of statements or instructions in a computer program, or the set of instructions in such a program:”
“the act or job of creating computer programs”
However, they are not the same thing.
So, do you wanna know more about why coding is not the same as programming? Watch this video and find out!
Transcript Of The Video
John Sonmez: Today I'm going to be talking about why coding is 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 that in 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't already, click that little bell, so that you can get all the videos that come out every week talking about how to improve your career as a software developer, how to improve your life.
Today I'm going to be breaking down a fairly complex 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 software developer. I programmed in all different kinds of languages. I have done everything from the self-taught road to actually going to school, to teaching other developers. I know a lot about this industry and about how people learn, both from the teaching and the learning perspective.
Really where this comes about is that there are some arguments by some of the angry veterans of the software development industry that say, “Coding is not the same as programming. Just because you can code doesn't mean you can program.” Coding is defined as knowing the syntax of the language. Okay, so I heard some describe it as being able to understand the syntax of Mandarin Chinese, the vocabulary. But programming is solving problems, and they would say that that is [anagalous 00:01:49]. Anagalous, anagalous, analagolus. That the analogy in this case would be to actually understand the language itself in the sentence structure and verbs and to actually be 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, you could say that coding is understanding the syntax and perhaps you could say the structure of the sentences, whereas programming is the ability to translate a thought or an idea into that language.
If you say that though, here's the thing. It is really pretty difficult to learn how to code without learning how to program. If you think about this, and this is my main argument here, is how many people really know how to code, but can't program? Now, when you're first starting out learning how to program, you get to a weird kind of phase where you understand a little bit about the 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?”, you could look at the lines and you could write out lines that specifically do things in that programming 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 as a software developer, and that's a term that I like to use, is that you can take a complex problem and you can make it simple. In fact, that's the theme of simple programmer 10 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 very end of the day, what it is is it's taking a problem and it is breaking it down to the lowest level, and then translating that into an automated step that a machine can execute. You have a problem, you're breaking it down into the little pieces and that's really a skill that you're developing.
A lot of this argument comes with a whole boot camps. Because a lot of people say, “Well, you can't go to a boot camp and learn to be a software developer in three months. Sure, you can learn how to code, but you haven't learned how to program.” And that's really entirely untrue, and I'll tell 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 a boot camp and you study, and you're studying six, eight, 10 hours a day with a focused effort. That is really the best way to learn anything. In fact, I actually wanted to learn Italian and [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 communicate a little bit, but not anywhere near fluent. After doing this, I realized that what I should have done was I should have gone and I should have went to Italy and stayed with some family in Italy, and went to an immersion school there where I only spoke Italian, where they only spoke Italian and did that for a month, six weeks, and I would be way better off than six months of spending an hour and a half or so every day trying to learn. The total time that I would have spent trying to 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 you really study if you go in depth with it.
That's why a lot of times, again, I've got it in my… If you can check out The Complete Software Developer's Career Guide, the first few chapters are about how should you learn, what should you do? Should you go to school, should you try to be a self-taught, should you go to a boot camp? I really tend to push the boot camp side of it, because I feel like that makes the most sense. You gotta throw out these traditional notions of what education is and you gotta say, “What is the point?” What we're trying to do is we're trying to learn 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 website and to be able to… There's a couple of things involved with that. One of them is to understand the technology and framework involved in creating the website itself. Let's say web applications are applications that are on the web and how that all works together to create the UI components and all of 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 solve problems algorithmically. Those two things are necessary in order to create, let's say, a web application that has logic. Underlying that, you're going to have to know a lot of technologies that are involved in that.
If that's your goal though, then there's no reason why you have to go to a formal degree program, why… You need to learn specifically the skills that are required to do that. I think there's an impression that a lot of people are learning “coding”, and so what they're learning is just the templatized version of the syntax of the language and not how to solve problems. That is an issue and that does happen from time to time, but that happens a lot with college graduates. I have interviewed many, many people over my career and I can tell you that there have been some very high level college graduates graduating from places like Carnegie Mellon and I have had them at an interview and asked them 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, they might be able to read the syntax and understand the syntax of the language and tell me what polymorphism is and interfaces and all of the stuff and abstraction, but they don't really get that.
In and of itself going to a boot camp, learning on your own, going to college, those are meaningless things. Ultimately, what you're trying to do as a software developer is you're trying to learn how to be able to utilize the language to express an idea, to solve a problem in that language and those problems are domain specific. Meaning that it depends on what kind of problem you're solving and where it is. The world is too large, the technology space is too large for us to have a [inaudible 00:08:41] this. We knew we need to be more specialist, more specific to the problem that we're trying to solve.
Coding versus programming, it doesn't really matter. You can't really realistically be “a coder” without learning programming, and it is your responsibility as a software developer to learn more than the basic syntax of the language. Anyway, I thought to make this video, want to kinda put some of those ideas to rest, and I know it's confusing for a lot of you new 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 it out. We've got some awesome stuff on there and like 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.