<p>It is just like learning how to ride a bike: by programming. And by reading good (and also bad!) programs critically.</p>

<p>Pick some (simple!) problem to solve, have a go at it. Look for some open source package that interests you, pick some "for newbies" task (if they advertise some).</p>

<p>Check out textbooks and tutorials for your favourite language. Look around for more advanced data structures and algorithms (there are tons of lecture notes on those subjects available). A bit of combinatorics/discrete math is a must for a well-rounded programmer.</p>

CC BY-SA 4.0
2019-08-08T22:11:31.427Z
2019-08-08T22:11:31.427Z
vonbrand
<p>The only way to learn a lot of things, maybe most things, is practice and feedback. In a standard course (not online), the professor assigns some work to do - homework, projects, .... The professor then gives you feedback on it - grades, but hopefully more. </p>

<p>To learn on your own, you want to try to simulate this as much as you can. So, to learn something, you not only have to see and hear about it, or even read about it, you have to do it. Moreover, you need some way to get feedback on the success of your efforts. </p>

<p>If the videos don't suggest projects then you will have to find them elsewhere, perhaps in a textbook. Do a lot of small and large projects. </p>

<p>But then the feedback part is just as important. One possible way to simulate that is to work with a friend in your learning. Each of you does the same exercise separately and then exchange your work and each comment on and improve the other's work. This isn't perfect, since the other person isn't an expert, but it is better than nothing. </p>

<p>You might even be able to use an online forum to get comments on your attempts. The <a href="https://codereview.stackexchange.com/">Code Review</a> here, might work for you, though I don't know how welcoming they are of novices.  Be sure to see their "help center" for guidance. </p>

CC BY-SA 4.0
2019-04-08T14:56:58.147Z
CR is very welcoming of novices, so long as you ask a well-formed [on-topic](https://codereview.stackexchange.com/help/how-to-ask) question ;)
VisualMelon
CC BY-SA 4.0
2019-04-08T22:41:41.057Z
The spirit of CR is different than most other sites. On CR it is expected that what is posted is a completely operational example, rather than a broken one that needs repair. The answers are not how to "fix" the code, but how to make it better. They critique the code, under what ever guidelines each person chooses. A better way to do the same thing, or a more standard's compliant variation, or any number of other points have been addressed. The catch is that before posting the code, as written, _works_. Help with making it work is still best done on Stack Overflow.
Gypsy Spellweaver
CC BY-SA 4.0
2019-04-08T14:54:44.993Z
2019-04-08T14:57:51.147Z
2019-04-08T14:57:51.147Z
Buffy
<p>You can follow below points according to your stage of learning. </p>

<ul>
<li><p>If you done with basic syntax of any programming language then try to solve logical problems from various platform like hackerrank, codechef and many more. </p></li>
<li><p>Find out other  techniques or methods to solve same problem in different ways. </p></li>
<li><p>If you done with logical question then try for Object Oriented Programming in that particular language.</p></li>
<li><p>After that you can go with Data Structures and Algorithms. Try to implement Tree, Hash tables, etc. After learning it's theory and syntax. </p></li>
</ul>

<p>If you already a developer then you can try following suggestion. </p>

<ul>
<li><p>Learn and try some new frameworks in you field. </p></li>
<li><p>Search and learn how to make you project scalable. </p></li>
<li><p>Search for adding security in projects and programs. </p></li>
<li><p>Participate in online hackathon and work with team. </p></li>
<li><p>Learn how to integrate like you are back end developer and one of your friend either IOT or app or something else then try to integrity with your platform or do project something like that. </p></li>
<li><p>Try reverse engineer code of someone else from online source and learn new techniques and methods.</p></li>
</ul>

CC BY-SA 4.0
2019-04-19T02:38:09.010Z
2019-04-19T02:38:09.010Z
Nikhil Jain
<p>One good way to improve is to try new projects. Think of a problem and try to create a solution for it. That forces you to look at new tools and techniques. Another thing I do is revisit old code about once a year. I go back to it to see if I can improve it with new things I've learned or to catch old miatakes. When I can improve the code with things I've learned, it's encouraging because I can see my progress. </p>

<p>Also, there is a lot of info out there. When I first started programming and wanted to improve, my biggest problem was that I didn't know where to start. So, I looked at the Software Development Lifecyle because it cuts the process of developing software into different chunks > Planning, Analysis, Design, Implementation, Test &amp; Integration, and Maintenance.</p>

<p>Then, I focused on learning about skills and tools for each of those chunks. For example, when I wanted to learn about testing, I looked up "testing tools" and "testing methods" for software and tried out new tools and techniques whenever I started a new project.</p>

<p>Even if you're not specifically interested in software development, the skills you'll learn by looking further into each piece of that life cycle will help you. For instance, let's say you write a lot scripts and you look at the maintenance piece of the software development lifecycle. By looking into maintenance techniques, you may find better ways to write code to make it more efficient and easier to maintain. Essentially, looking at pieces of the life cycle helps narrow down the areas you're looking at a bit so you don't get overwhelmed.</p>

<p>Last thing: keep in mind programming skills don't always have to deal with just writing code. Improving programming skills can also include how you package your code, how structure/design it, or becoming familiar with how code is compiled.</p>

CC BY-SA 4.0
2019-04-17T15:42:52.587Z
2019-04-17T15:42:52.587Z
JustBlossom
<p>I often take help from online videos to improve my programming skills, but I am not successful. Videos help me in debugging my code, but I am not improving my programming. Is there any other way through which I can improve my programming?</p>

CC BY-SA 4.0
2019-04-17T07:34:49.897Z
Look at Test Driven Development, and Code katas See Robert. C. Martin, Kent Beck. And then practice
ctrl-alt-delor
CC BY-SA 4.0
2019-04-17T09:37:27.810Z
Go to Carnegie-Hall.
Michel Billaud
CC BY-SA 4.0
2019-04-17T11:02:29.647Z
@MichelBillaud When I was in college, the mainframes were actually in a campus building historically called Machinery Hall. I guess it used to be for teaching Engineering (with actual engines).
Scott Rowe
CC BY-SA 4.0
2019-04-19T00:50:24.747Z
Ubung macht dem Meister. (sorry no umlaut)
ncmathsadist
CC BY-SA 4.0
2019-04-22T02:00:07.950Z
How do you judge the quality of your programming? Why do you think it isn't getting better? Is someone complaining? Are you comparing your code to someone else's?
Aksakal almost surely binary
<self-learning><programming><struggling-students>
How can programming skills be improved?
# How can programming skills be improved?

(Asked by: username_0 on 2019-04-08)

I often take help from online videos to improve my programming skills, but I am not successful. Videos help me in debugging my code, but I am not improving my programming. Is there any other way through which I can improve my programming?

**Tags:** self-learning, programming, struggling-students

> **Comments:**
> **username_1**: Look at Test Driven Development, and Code katas See Robert. C. Martin, Kent Beck. And then practice  
> **username_2**: Go to Carnegie-Hall.  
> **username_3**: @MichelBillaud When I was in college, the mainframes were actually in a campus building historically called Machinery Hall. I guess it used to be for teaching Engineering (with actual engines).  
> **username_4**: Ubung macht dem Meister. (sorry no umlaut)  
> **username_5**: How do you judge the quality of your programming? Why do you think it isn't getting better? Is someone complaining? Are you comparing your code to someone else's?  

---

## 4 answers

### Answer by username_7 on 2019-04-08. Score: 9

The only way to learn a lot of things, maybe most things, is practice and feedback. In a standard course (not online), the professor assigns some work to do - homework, projects, .... The professor then gives you feedback on it - grades, but hopefully more.

To learn on your own, you want to try to simulate this as much as you can. So, to learn something, you not only have to see and hear about it, or even read about it, you have to do it. Moreover, you need some way to get feedback on the success of your efforts.

If the videos don't suggest projects then you will have to find them elsewhere, perhaps in a textbook. Do a lot of small and large projects.

But then the feedback part is just as important. One possible way to simulate that is to work with a friend in your learning. Each of you does the same exercise separately and then exchange your work and each comment on and improve the other's work. This isn't perfect, since the other person isn't an expert, but it is better than nothing.

You might even be able to use an online forum to get comments on your attempts. The [Code Review](https://codereview.stackexchange.com/) here, might work for you, though I don't know how welcoming they are of novices. Be sure to see their "help center" for guidance.

> **Comments:**
> **username_8**: CR is very welcoming of novices, so long as you ask a well-formed [on-topic](https://codereview.stackexchange.com/help/how-to-ask) question ;)  
> **username_9**: The spirit of CR is different than most other sites. On CR it is expected that what is posted is a completely operational example, rather than a broken one that needs repair. The answers are not how to "fix" the code, but how to make it better. They critique the code, under what ever guidelines each person chooses. A better way to do the same thing, or a more standard's compliant variation, or any number of other points have been addressed. The catch is that before posting the code, as written, _works_. Help with making it work is still best done on Stack Overflow.  

---

### Answer by username_10 on 2019-04-19. Score: 4

You can follow below points according to your stage of learning.

* If you done with basic syntax of any programming language then try to solve logical problems from various platform like hackerrank, codechef and many more.
* Find out other techniques or methods to solve same problem in different ways.
* If you done with logical question then try for Object Oriented Programming in that particular language.
* After that you can go with Data Structures and Algorithms. Try to implement Tree, Hash tables, etc. After learning it's theory and syntax.

If you already a developer then you can try following suggestion.

* Learn and try some new frameworks in you field.
* Search and learn how to make you project scalable.
* Search for adding security in projects and programs.
* Participate in online hackathon and work with team.
* Learn how to integrate like you are back end developer and one of your friend either IOT or app or something else then try to integrity with your platform or do project something like that.
* Try reverse engineer code of someone else from online source and learn new techniques and methods.


---

### Answer by username_11 on 2019-04-17. Score: 3

One good way to improve is to try new projects. Think of a problem and try to create a solution for it. That forces you to look at new tools and techniques. Another thing I do is revisit old code about once a year. I go back to it to see if I can improve it with new things I've learned or to catch old miatakes. When I can improve the code with things I've learned, it's encouraging because I can see my progress.

Also, there is a lot of info out there. When I first started programming and wanted to improve, my biggest problem was that I didn't know where to start. So, I looked at the Software Development Lifecyle because it cuts the process of developing software into different chunks > Planning, Analysis, Design, Implementation, Test & Integration, and Maintenance.

Then, I focused on learning about skills and tools for each of those chunks. For example, when I wanted to learn about testing, I looked up "testing tools" and "testing methods" for software and tried out new tools and techniques whenever I started a new project.

Even if you're not specifically interested in software development, the skills you'll learn by looking further into each piece of that life cycle will help you. For instance, let's say you write a lot scripts and you look at the maintenance piece of the software development lifecycle. By looking into maintenance techniques, you may find better ways to write code to make it more efficient and easier to maintain. Essentially, looking at pieces of the life cycle helps narrow down the areas you're looking at a bit so you don't get overwhelmed.

Last thing: keep in mind programming skills don't always have to deal with just writing code. Improving programming skills can also include how you package your code, how structure/design it, or becoming familiar with how code is compiled.


---

### Answer by username_6 on 2019-08-08. Score: 1

It is just like learning how to ride a bike: by programming. And by reading good (and also bad!) programs critically.

Pick some (simple!) problem to solve, have a go at it. Look for some open source package that interests you, pick some "for newbies" task (if they advertise some).

Check out textbooks and tutorials for your favourite language. Look around for more advanced data structures and algorithms (there are tons of lecture notes on those subjects available). A bit of combinatorics/discrete math is a must for a well-rounded programmer.


---

