create account

How to get better at programming by bitcalm

View this thread on: hive.blogpeakd.comecency.com
· @bitcalm ·
$179.23
How to get better at programming
![](http://steemit.bitcalm.mm.st/posts/better_programming/banner.jpg)

In my previous article I gave advice for those [getting started with programming](https://steemit.com/programming/@bitcalm/how-to-get-started-with-programming), the conclusion being: **you learn by doing.** In this post I want to focus on three ways on how to get better.

# 1. Work to failure

When I'm not a geeking it out behind a computer, I'm training in the gym: I love weight training almost as much as I love programming. There's a term used in weight training to describe how a workout should be performed to maximise its benefits: **work to failure**.

In everyday life the idea of failing at something has a negative connotation: it implies that you're not good enough, that you've let yourself down. That you're a failure.

In weight training and many other sports, however, it's seen as a vital platform for growth. If you don't allow your body to reach failure there's no incentive for change. In order to grow, to become bigger and stronger, you have to push your body past its limits.

**And programming is the same.**

Everyone has areas of programming they struggle with. For some it's object oriented design, for others it's functional programming; for many it's pointers. When you struggle to understand a concept you feel awful and naturally try to avoid the cause, but by doing this, you're missing out on a great opportunity to learn. **It's just going to take a while.**

For example, I used to find it difficult to complete large projects. Small libraries and tools were easy, but large, complex projects were always a struggle, and would often end in me giving up. I reached failure, but didn't work past it. Through focusing large on complex projects, working through the failure, I'm now able to work effectively on large projects with confidence. I've grown.

Learn to recognise areas of programming that you find difficult and naturally want to avoid, and dedicate time to learning. Let yourself fail. Then through blood, sweat, and tears, work past the failure until the solution comes naturally to you.

# 2. Help others on StackOverflow

[StackOverflow](http://stackoverflow.com) is a revolution. It is the go-to website for help with any programming problem.

It can also be used to get better at programming. Pick an [unanswered question](https://stackoverflow.com/unanswered) and try to solve it. You can filter the list to show only unanswered questions in the languages you're interested in.

Keep in mind that the focus is on learning through helping, not scoring points. **Don't rush to an answer because you want to win at the StackOverflow game**. Even if someone else has answered the question before you, take your time. You can even compare answers. Perhaps your solution isn't the best, but you can be sure that you will learn from the experience.

Helping on StackOverflow is a win-win. You learn a new aspect of programming and how to communicate an idea effectively, and someone else has a problem solved.

# 3. Contribute to an open source project

If you've spent most of your time writing your own projects, perhaps contributing to an open source project will help improve your skills.

Learning to read code written by another programmer is an important skill. Every programmer has their own style. Where one programmer uses a ternary conditional expression, another might use a standard if/else. The more you expose yourself to other people's code and style, the more you will be able to instinctively see the intention behind it.

Contributing to an open source project also exposes you to working with other developers. Collaboration is a great way to learn from other, perhaps more talented, programmers. It's also a great opportunity to improve vital communication skills.

Finding a project to contribute to is really simple. You can [search GitHub issues with the Help Wanted label](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22help+wanted%22+&type=Issues&ref=searchresults). At the time of writing **there are 69,513 issues that require help**. The list can also be filtered further based on your preferred language.

---

Banner image by [W_Minshull](https://www.flickr.com/photos/23950335@N07/5513197198/) used under the [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) license. Changes were made to the original.
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 92 others
properties (23)
authorbitcalm
permlinkhow-to-get-better-at-programming
categoryprogramming
json_metadata{"tags":["programming","howto","learn","coding"],"image":["http://steemit.bitcalm.mm.st/posts/better_programming/banner.jpg"],"links":["https://steemit.com/programming/@bitcalm/how-to-get-started-with-programming","http://stackoverflow.com","https://stackoverflow.com/unanswered","https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+label%3A%22help+wanted%22+&type=Issues&ref=searchresults","https://www.flickr.com/photos/23950335@N07/5513197198/","https://creativecommons.org/licenses/by/2.0/"]}
created2016-09-04 03:56:18
last_update2016-09-04 03:56:18
depth0
children6
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value136.371 HBD
curator_payout_value42.863 HBD
pending_payout_value0.000 HBD
promoted10.000 HBD
body_length4,375
author_reputation24,919,530,803,138
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,118,924
net_rshares39,409,840,244,044
author_curate_reward""
vote details (156)
@doitvoluntarily ·
i'd love to be good at programming.. 
https://media.giphy.com/media/A06UFEx8jxEwU/giphy.gif
👍  
properties (23)
authordoitvoluntarily
permlinkre-bitcalm-how-to-get-better-at-programming-20160904t041305602z
categoryprogramming
json_metadata{"tags":["programming"],"image":["https://media.giphy.com/media/A06UFEx8jxEwU/giphy.gif"]}
created2016-09-04 04:13:06
last_update2016-09-04 04:13:06
depth1
children0
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length91
author_reputation1,413,017,592,339,131
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,119,034
net_rshares62,855,131
author_curate_reward""
vote details (1)
@jlufer ·
I am not worthy visiting my blog, but yours vote would be enough to help. Thank you for sharing this material, I like what you posted. Thank you so much
properties (22)
authorjlufer
permlinkre-bitcalm-how-to-get-better-at-programming-20160904t041345989z
categoryprogramming
json_metadata{"tags":["programming"]}
created2016-09-04 04:13:51
last_update2016-09-04 04:13:51
depth1
children0
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length152
author_reputation1,412,524,863,816,630
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,119,042
net_rshares0
@l0k1 ·
$0.03
A big issue I have is the lack of strong focus of attention on it. I have ideas, and I am little by little adding to my codebase of my new project ( https://github.com/l0k1-smirenski/steemportal ) - but I have a lot of trouble really digging into it. My mind is filled with architecture ideas for software systems, and I spend so much of my time writing about these instead, because they get my heart pumping, so to speak. I am working on ways to try and improve my motivation towards the programming, but the fact is that posting high value posts here is a competing desire. My programming project does not give me so much positive feedback, as yet, though much of the posts I make that get me rewards, are about programming design subjects, especially Steem integrations.

I guess the issue is that I have not fully exhausted the immediate webs of ideas that spring from the ones that are right in front of my attention right now. But on the other hand, i need to find ways to keep the money flowing in, I have a side project that is in its early stages, and so far isn't making even as much as my Steem writing, but it is slowly improving. So I guess, I might say that for now, getting voted up for publishing good ideas, is my main business. Writing code on my project is secondary, because I really need to score quite a bit more of a reward to push this need to a lower priority.

In some ways it reminds me a bit of my time living homeless in Sofia, in the first half of this year, studying the different ways that street people got money to buy their beers and occasional something edible, or some new, critical piece of clothing or health care materials. Finding a niche that gives you enough rewards back that you can launch into something else is a difficult, in-between business, that can be very frustrating. But I am sure that sooner or later I'm gonna score a several hundreds of dollars post, my next month's rent will be paid, and I will have ample to pay for my ongoing expenses, and I'll be all out of ideas to write about, and can then focus on coding.

I am living now almost entirely off savings and the little bit of money I can get from writing here. I am not far off being able to stop holding my breath and start to stretch out and really dig into what I'm good at. I am sure I am a good coder, I just have to have nothing more pressing on my mind at the time.
👍  ,
properties (23)
authorl0k1
permlinkre-bitcalm-how-to-get-better-at-programming-20160904t044739263z
categoryprogramming
json_metadata{"tags":["programming"],"links":["https://github.com/l0k1-smirenski/steemportal"]}
created2016-09-04 04:47:39
last_update2016-09-04 04:47:39
depth1
children3
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.022 HBD
curator_payout_value0.004 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,386
author_reputation94,800,257,230,993
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,119,262
net_rshares62,033,627,326
author_curate_reward""
vote details (2)
@bitcalm ·
Thanks for taking the time to write such a long comment.

One of the hardest things is finding the time to code. This is especially true if it's not your main source of income. Hopefully you'll be able to fit it in and learn new things.
👍  
properties (23)
authorbitcalm
permlinkre-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t082722794z
categoryprogramming
json_metadata{"tags":["programming"]}
created2016-09-04 08:27:24
last_update2016-09-04 08:27:24
depth2
children1
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length236
author_reputation24,919,530,803,138
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,120,417
net_rshares3,346,583,990
author_curate_reward""
vote details (1)
@l0k1 ·
Yeah, I basically applied your suggestions from this article this morning and I finally broke through and got something to work that was bamboozling me for about 2 hours. 

I have another project on the side but writing articles for Steem is my main income now. The other project is still in that early phase and simply needs time to get noticed. Here, however, it's a matter of being active, commenting, following, voting... The software project and associated ideas give me something to write about and to varying degrees this is getting attention and votes. I will have the actual interface beginning to be created in my project soon, then I'll be able to post screenies and talk about that.
properties (22)
authorl0k1
permlinkre-bitcalm-re-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t093738892z
categoryprogramming
json_metadata{"tags":["programming"]}
created2016-09-04 09:37:39
last_update2016-09-04 09:37:39
depth3
children0
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length694
author_reputation94,800,257,230,993
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,120,722
net_rshares0
@cristi ·
this type of inward analysis is undoubtedly do you only good. I am confident you'll find a way to satisfy both: coding and writing about it.
👍  
properties (23)
authorcristi
permlinkre-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t110755842z
categoryprogramming
json_metadata{"tags":["programming"]}
created2016-09-04 11:07:57
last_update2016-09-04 11:07:57
depth2
children0
last_payout2016-10-05 10:06:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length140
author_reputation128,305,218,872,904
root_title"How to get better at programming"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id1,121,274
net_rshares3,416,304,490
author_curate_reward""
vote details (1)