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.