How to Properly Learn Software Development? Part 1

Many people find learning software development challenging. In this series of videos we discuss the approach to learn software development, and what types of attributes do one need to become a successful software development.

Mikhail:
This is another interesting question. And I keep thinking about my own experience of trying to learn software development from scratch and at the moment, or at least by now, I am not successful in doing that because basically I was doing some other projects. And I did learn a lot about software development. I worked with many software developers where I keep learning things every day, but I don’t think I made huge progress in the technical side of it because I am not able to write even a simple program, but I found the couple of interests and importance from my experience, but what are the most difficult parts? What are the most challenging things for a person who wants to learn development from scratch? And they can just share these experiences with you. And plus we can get some ideas from you. So it will be interesting to discuss.

So I found that number one challenge in learning software development from scratch is that, most people when they develop tutorials, they actually guide you through the process, where basically you can do the same thing as we do, so you can just follow them, but they, for example, set up the development environment before they start the tutorial.

So they basically say, “Okay, so go to the website, download the framework and just set it up on your computer.” And I mean it might sound really simplified, but I have no idea at the moment. Except for just go into a website and download them that excel file. For me, everything else is still a black box, because I don’t know how to set up that particular framework. Even if I do install it, now I need to go to command line and I need to type something and I have no idea what should I type?

And I think this is something missing from tutorials and I think it should be there, especially for people who actually never done software development before. So there is some challenge on the learners’ side. That’s one question.

And the second one is I got lost in a number of frameworks that people are learning. For example, let’s talk about JavaScript only. First I did a hackathon project that was based on Angular. So I was not…. Angular 2 actually. Angular 2 because it was just released by Google at that time. So it was a completely new promise. It was very interesting. I mean I was not involved into actual Angular 2 development, but I was just listening to conversations of developers. And at that point of time I was thinking, “Oh yeah, Angular 2 is something very interesting and it’s promising and hopefully it will grow. So maybe I should learn Angular 2.”

Yinso:
Okay.

Mikhail:
And then just a few weeks later, I realized again, from my friends, talking to my friends developers, now we are talking about React, and they’re saying, “Oh, React is much better.”

Yinso:
Okay, all right.

Mikhail:
And then another friend of mine said yet another thing, that he compared Angular 1 and Angular 2. And he realized that Angular 1 is faster and Angular 1 is better than Angular 2. And then the question that came to my mind is that, “Why Angular 1 was actually replaced by Angular 2, if it doesn’t really, bring a new performance improvement.” So I think that every learner of software development will have that kind of problem in their minds, because which frameworks?

If I spend some time on one framework, I will probably learn it, but is it really beneficial if that framework might be gone in just six months and I will have to switch to another one and, spend more time on learning it? And so that’s a serious challenge actually, to be honest.

Yinso:
What would you like me to talk about here? Because I hear what you’re describing, but obviously this has already been your experiences. And my understanding right now is that you’re not focusing on doing that anymore.

Mikhail:
Yeah, at the moment, this is not my focus, even though later, maybe I can share more information with you on what I’m planning to do to actually learn software development. But that experience was very useful, but at the same time, maybe that’s how I shouldn’t be learning software development, because I was thinking that I can learn one framework and then it will give me [crosstalk] .

Yinso:
So the question is how to properly learn software development?

Mikhail:
Yeah, I guess that’s…

Yinso:
I mean, obviously it’s that you find that following tutorial is a challenge, right?

Mikhail:
Mm-hmm (affirmative). Mm-hmm (affirmative).

Yinso:
Let’s just talk about that I guess. There are a lot of tutorials out there today. And these tutorials that are out there, a lot of them has one particular common theme to them. And that common theme to them is this, is that they are free.

Mikhail:
Yeah.

Yinso:
Okay. So, I’m not necessarily going to say the free tutorials are not good, but the free tutorials are usually not designed with how to make money from customer in mind.

Mikhail:
Mm-hmm (affirmative).

Yinso:
So, because they are not designed for that, a lot of time it means that who is the customer is unclear when it comes to the free things. And that’s the part. This is reason why that I personally believe that there are still a lot of rooms for paid content, because free content is great. Free content is great in terms of market reach. But that is for the benefit of the content provider is not for the benefit of the person who wants to consume those contents. For someone who wants to consume contents, if he consumes free content, then they are taking on the responsibility of ensuring the content fit.

Yinso:
My Siri is acting up, but anyway, when it’s trying to ensure that there is a free… So when you are watching the free tutorials, that free tutorials is probably not necessarily meant for you.

Mikhail:
Mm-hmm (affirmative). Mm-hmm (affirmative).

Yinso:
Right?

Mikhail:
Yeah.

Yinso:
They is meant for someone who is already comfortable setting up the type of stuff that then you find that you have no idea how to set up.

Mikhail:
Mm-hmm (affirmative). Mm-hmm (affirmative).

Yinso:
And so therefore you do not have to go find a tutorial on how to set up the software that its asking you to set up, but this is the interesting part. This is actually how most software developers learn.

Mikhail:
Mm-hmm (affirmative).

Yinso:
They learn by asking questions. For example, you’ll watch a tutorial and then the tutorial asks you to set up some applications, but they now walk you through on how to learn to set up those applications. Then that’s an open question to you. Then a person who has a leaning to become developer would then start to ask questions, Google again, say, “How do I set up this particular application?” Then they’re going to find information. The information will hereby be incomplete, and perhaps incomplete is that there’s three tutorials on how to set up this particular application that you need. And then these three tutorials give you different steps.

And so they overlap like this. These three tutorials overlap like this. So you’re like, “Okay, I probably need to do this for sure, because it’s talked about in every single one of them, but do I need this? Do I need this? Do I need this? I don’t know, but I guess I should try it and see what happens.” So the person try the first tutorial and then turns out that everything is bad in that particular tutorial. Following that tutorial doesn’t make any sense. So I can clear with this guy.

Now I try a second tutorial. The second tutorial get halfway that throws some error. And that error makes no sense. So that person who has [inaudible] will then Google again, “What does this error mean?” And there’s another three articles that talks about this error, but two of them seems related, but one of them seems completely unrelated.

So the person tries to solve problem with that error and so on, and continue to lead to the search. And finally, by the time this whole process is finished, this person has now learned how to set up this application and can finally come back to the tutorial, then continue on the tutorial. And this is exactly how software developers learn. As a matter of fact, most software developers learn things this way. And so I won’t be surprised if most of the… If the free tutorials are produced by software developer, they were also producing in a very similar fashion. They will produce something that’s like a piece of puzzle that’s incomplete and where you’re responsible for filling this piece of puzzle, by looking at something else. And then so on, until finally you get to a point where you’re satisfied with the piece of puzzle, then you trace your steps back to this existing piece of the puzzle before you continue.

Mikhail:
Yeah, this is again very interesting because I keep thinking about my educational experience as a teacher, for example. I totally agree with you, that if we just give information to people, they will just listen to it. They won’t learn anything because basically education means you are involved into this process 100%. You are asking questions, the teacher is on the guide and will give you some experience like notes on tips for you. And so basically it’s your responsibility to learn these things.

Now, on the other hand, sometimes, especially I think in software development, you will have questions that don’t have the answer. And even though you can go for like article by article, and basically you get some clues, you get some ideas, but eventually it will become really confusing unless some article really answers that question. So in that case, it’s awesome. So you can just apply that solution. So sometimes it does get difficult, actually, I think just in my experience. [crosstalk] for the result.

Yinso:
And it does, as a matter of fact, it’s the same thing. It happens on just about every single software developers’ job on a daily basis.

Mikhail:
Mm-hmm (affirmative). Mm-hmm (affirmative).

Yinso:
That there’ll be some question that you can solve, and probably 80% of the time there’s a ready to go solution, that they can just apply.

Mikhail:
Yeah.

Leave a Reply