By John Sonmez March 5, 2019

Don’t Learn To Code In 2019… (LEARN TO PROBLEM SOLVE)

Don't learn to code in 2019. Learn to problem solve instead. Does it sound like something that most people don't talk about? I bet it does. But this is definitely the reality.

I often see this with newbie and experienced developers. They try to learn all the possible outcomes of coding, learn to program in a hundred different languages… Only to start feeling overwhelmed.

And that's when they still find coding to be absolutely difficult. But why that happens?

Because they absolutely have no idea how to solve problems. And this is why, building an entire application might be a long distance dream for most software developers.

I've been there too.

When most programmers are given a programming problem in an interview, they make several key mistakes. The most severe of those is the improper allocation of time. You have heard the saying “measure twice and cut once,” then you are probably familiar with the idea of spending upfront time to make sure something is done right, rather than diving right in.

It is astounding how many developers can write and maintain large enterprise systems dealing with all kinds of complex logic, database access, etc and cannot for the life of them solve a moderately difficult programming problem given in an interview in less than 30 minutes.

It is also astounding how many developers who can not write even a single line of code, can also fail at same problem, in exactly the same way.

Based on those two statements, your first assumption might be that asking someone to solve a programming problem as part of an interview would be a bad idea, because it isn’t really telling you if they are good and just crumble when asked to do something like this on the spot, or if they can’t program at all.

So get to it! Start learning how to solve programming problems. Reverse strings, sort linked lists, help grandma pick the highest yielding grandsons and a granddaughters to send Christmas cards to!

Interview Cake:
https://simpleprogrammer.com/interviewcake

John Sonmez Pluralsight Courses:
https://simpleprogrammer.com/pluralsightjohn

Cracking The Coding Interview Book:
https://simpleprogrammer.com/cracking

Transcript Of The Video

John Sonmez: Don't learn to code. Today, I'm going to tell you about a really important concept that I think is going to help you in your career, which is the idea of learning to solve problems. So many developers, they're focused on the syntax, they're focused on the language, they're focused on learning to “code” or to program, but not on solving problems. I can tell you why that's so important in a second here.

If you're just joining me for the first time, I'm John from simpleprogramer.com, and you are in the place on the web to find soft skills training for software developers. There no one that does it better and more than we do here at Simple Programmer. Click that little subscribe button down there and click the bell so you don't miss any of the videos that come out on this channel.

A lot of new developers, even a lot of senior developers don't understand, which is that what you need to do as a software developer is learn to solve problems, not just to code. I think there is a real emphasis, especially for people that are starting to learn programming who want to get into this field, there's a real emphasis to learn about the structure of the programming language and all the syntax of it, and to focus on that as being the important thing to learn. That's really not the critical skill because as a software developer, as a programmer, you are not going to, I mean, it is important to know the language that you're using, but the more important skill that you're going to be required to utilize and that is more difficult to learn is the actual ability to solve problems, to break them down, and then to translate to code, right?

You have to know both, but if you could only develop one skill as a software developer, I would actually teach you to not even know any syntax of any programming language, just pseudo-code, and just teach you how to take problems and to break them down into the smallest components and pieces. Ultimately, this is what determines whether or not you're a good software developer or not, right? As a software developer becomes good at their craft and is able to really excel, what their ability really is, it's not knowing programming languages, it's not knowing frameworks, and all those things.

Those are all useful, but it's not that ability. It's the ability to essentially take what is a problem to break it down into small pieces that can be understood, and organized well, and to break those pieces down into smaller subsystems and components until that problem is broken down to the point of a single line of code, or actually even within that, the actually operations that make up that line of code. That's what a really skilled software developer, that's what they're able to do. They're able to see this big problem and they're able to break it down logically, and you keep on refining, refining, refining until you get to a single line of code.

When you have that ability, it becomes really easy to write code. Why? Because at the point that you've broken it down that far it's just a simple translation. It's just a simple translation from, I want this thing, this code that I know how to do, and you don't even need to know programming language to do that, right? You could literally have the ability to break problems down and break them down to smallest atomic detail, and then you could literally go and look up the syntax and figure out in that programming language how to write that line of code that will do that thing. In fact, I've done that many times. I have written code in programming language that I knew nothing about, and the way that I was able to do that was that I refined the skill of learning to breakdown problems.

I have a couple of resources that I'm going to point to. I've got one which is a company called Interview Cake. We'll put a link in the card up here. They're friends of mine. They give you coding interview type of algorithm problems, which is good if you understand how to do those. I've got a course on Pluralsite that also teaches you that and shows you that step-by-step how to do that. You can check those up. Go sign up for Pluralsite, if you haven't. And then, there's, of course, a book called Cracking the Coding Interview. I do feel like the other two resources will be a little bit better because they're a little bit more interactive, but those are the kind of things that I'd recommend.

The point of this video is just to make you aware of the idea that, especially as you're starting out as a beginner, or even if you're somewhat of an advanced programmer, but you're struggling, like you don't feel competent, you don't feel like you can always solve problems and write code, you feel like you could fix some bugs, you feel like you kind of get, but you don't understand how these guys are able to like, how would I build an entire app by myself? These are questions I used to ask myself. How would I, it doesn't make sense to me how I would create an entire web application, or I could work on a piece of this, but I couldn't design and create the whole thing. The biggest thing is everything is a problem, right? If you can learn that skill of breaking down problems and translating them, and if you can focus on that, you're going to get a lot further in your career, where so many people are focused on the language.

Things have changed a lot over the years. I've believe, probably, 20 years ago or so, even when I was first starting out and learning programming, understanding the language and the syntax of it was way more important than it is now because you didn't have as much resources, and you didn't have as many libraries, it was a lot of, what you were doing was solving problems within the language, and knowing the ins and outs of the language was critical. Now, as a developer, it's all a mash-up, it's all these different technologies. Everything is changing out from underneath you, so you have to really focus on actually learning how to breakdown problems, and then translating that ability to whatever language, whatever domain it is. You're going to find that it's all the same. It's all the same once you have that skillset.

That's the reason why, also, you can know one programming language, and if you've got the skill to breakdown problems, you could go, literally, to a company that programs in a totally different language, and I've done this before, I've gotten jobs like this, and you could within a matter of weeks be able to program in that language at pretty close to just as high a level as someone who's been doing for a longtime because the critical skill is that ability to breakdown problems.

All right, guys. That's all I have for you today. If you have a question or a comment, leave it below. Make sure you click that subscribe button, if you haven't already. You don't want to miss the new videos that we're going to be putting out on this channel, and I will talk to you next time. Take care.

About the author

John Sonmez

John Sonmez is the founder of Simple Programmer and a life coach for software developers. He is the best selling author of the book "Soft Skills: The Software Developer's Life Manual."