 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.
author | bitcalm |
---|---|
permlink | how-to-get-better-at-programming |
category | programming |
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/"]} |
created | 2016-09-04 03:56:18 |
last_update | 2016-09-04 03:56:18 |
depth | 0 |
children | 6 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 136.371 HBD |
curator_payout_value | 42.863 HBD |
pending_payout_value | 0.000 HBD |
promoted | 10.000 HBD |
body_length | 4,375 |
author_reputation | 24,919,530,803,138 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,118,924 |
net_rshares | 39,409,840,244,044 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
berniesanders | 0 | 11,263,328,194,433 | 40% | ||
riverhead | 0 | 6,440,263,212,214 | 100% | ||
nextgenwitness | 0 | 159,913,890,296 | 100% | ||
justin | 0 | 289,359,451,028 | 50% | ||
silver | 0 | 1,809,752,286,750 | 100% | ||
silversteem | 0 | 4,267,313,459,011 | 100% | ||
nextgencrypto | 0 | 2,046,792,627,679 | 40% | ||
jabbasteem | 0 | 1,933,070,680,043 | 100% | ||
boy | 0 | 3,721,933,023 | 100% | ||
bue-witness | 0 | 4,518,662,692 | 100% | ||
bunny | 0 | 828,818,302 | 100% | ||
complexring | 0 | 6,633,521,487,993 | 100% | ||
bue | 0 | 65,278,387,679 | 100% | ||
danknugs | 0 | 29,743,766,634 | 100% | ||
steemservices | 0 | 358,100,058,901 | 100% | ||
steemservices1 | 0 | 24,186,204,058 | 100% | ||
mini | 0 | 1,994,537,846 | 100% | ||
moon | 0 | 256,479,487 | 100% | ||
aizensou | 0 | 61,042,865,784 | 100% | ||
bentley | 0 | 11,623,765,487 | 100% | ||
healthcare | 0 | 747,692,506 | 100% | ||
daniel.pan | 0 | 1,161,369,416 | 100% | ||
jchch | 0 | 89,911,903,256 | 100% | ||
helen.tan | 0 | 345,909,907 | 100% | ||
noisy | 0 | 52,304,789,931 | 100% | ||
easteagle13 | 0 | 1,579,031,616 | 1% | ||
gavvet | 0 | 1,089,191,070,350 | 100% | ||
fkn | 0 | 16,172,033,014 | 76% | ||
elishagh1 | 0 | 21,932,336,390 | 76% | ||
richman | 0 | 17,627,810,344 | 100% | ||
pal | 0 | 274,442,196,638 | 100% | ||
coar | 0 | 667,303,690 | 100% | ||
murh | 0 | 1,424,830,577 | 33.01% | ||
kodi | 0 | 602,051,327 | 100% | ||
blakemiles84 | 0 | 402,654,177,098 | 100% | ||
applecrisp | 0 | 401,484,546 | 100% | ||
the-alien | 0 | 193,426,434,152 | 40% | ||
juanmiguelsalas | 0 | 29,049,044,622 | 55% | ||
infovore | 0 | 511,390,035,411 | 100% | ||
geoffrey | 0 | 113,520,339,134 | 100% | ||
fuck.off | 0 | 3,916,479,817 | 100% | ||
razvanelulmarin | 0 | 75,549,259,813 | 100% | ||
iloveporn | 0 | 5,196,804,781 | 100% | ||
the.bot | 0 | 3,230,192,519 | 100% | ||
johnbradshaw | 0 | 6,320,767,699 | 100% | ||
primus | 0 | 12,556,960,546 | 100% | ||
the.whale | 0 | 4,404,928,628 | 100% | ||
ladyclair | 0 | 272,228,330 | 100% | ||
dasha | 0 | 7,511,029,467 | 100% | ||
booja | 0 | 54,549,371,262 | 100% | ||
unicornfarts | 0 | 4,284,935,681 | 100% | ||
vote | 0 | 4,403,426,143 | 100% | ||
kissmybutt | 0 | 4,640,659,595 | 100% | ||
rxhector | 0 | 526,754,152 | 100% | ||
furion | 0 | 47,912,847,233 | 76% | ||
barbara2 | 0 | 389,366,862 | 76% | ||
ch0c0latechip | 0 | 436,816,943 | 76% | ||
doge4lyf | 0 | 400,419,642 | 76% | ||
ardina | 0 | 238,489,219 | 100% | ||
gord0b | 0 | 28,081,062,330 | 100% | ||
dicov | 0 | 1,206,447,174 | 100% | ||
senseiteekay | 0 | 13,168,101,374 | 100% | ||
igster | 0 | 23,951,015,785 | 100% | ||
deviedev | 0 | 8,499,559,441 | 100% | ||
nabilov | 0 | 195,893,274,020 | 100% | ||
meesterboom | 0 | 10,533,947,025 | 100% | ||
juvyjabian | 0 | 4,590,021,029 | 100% | ||
allmonitors | 0 | 9,760,227,248 | 100% | ||
thinkngrow | 0 | 794,440,906 | 100% | ||
inertia | 0 | 70,536,080,064 | 100% | ||
the-future | 0 | 1,961,849,145 | 100% | ||
royaltiffany | 0 | 32,174,230,514 | 100% | ||
positive | 0 | 13,507,426,957 | 76% | ||
valenttina | 0 | 327,001,182 | 100% | ||
webdeals | 0 | 9,606,849,911 | 100% | ||
fnait | 0 | 441,783,014 | 76% | ||
keepcalmand | 0 | 415,321,571 | 76% | ||
steemster1 | 0 | 129,103,709 | 100% | ||
michiel | 0 | 9,871,260,122 | 100% | ||
sharon | 0 | 55,181,675 | 100% | ||
lillianjones | 0 | 54,844,677 | 100% | ||
sunshine | 0 | 15,109,242,182 | 100% | ||
timsaid | 0 | 46,117,823,229 | 100% | ||
germansailor | 0 | 468,830,658 | 100% | ||
ullikume | 0 | 4,520,718,346 | 100% | ||
sirwinchester | 0 | 17,146,311,588 | 9% | ||
kurtrohlandt | 0 | 2,058,409,213 | 100% | ||
zionuziriel | 0 | 65,486,104 | 100% | ||
msjennifer | 0 | 55,265,906 | 100% | ||
ciao | 0 | 53,370,316 | 100% | ||
thebotkiller | 0 | 8,395,907,283 | 100% | ||
cristi | 0 | 5,670,044,253 | 46% | ||
alejoshy | 0 | 61,631,911 | 100% | ||
theconnoisseur | 0 | 4,722,032,606 | 50% | ||
steemo | 0 | 52,985,539 | 100% | ||
steema | 0 | 52,848,854 | 100% | ||
confucius | 0 | 61,515,128 | 100% | ||
mione | 0 | 12,055,536,523 | 100% | ||
bitcalm | 0 | 37,335,893,668 | 100% | ||
jarvis | 0 | 53,648,513 | 100% | ||
razberrijam | 0 | 75,676,352 | 100% | ||
fortuner | 0 | 53,106,127 | 100% | ||
thecurator | 0 | 37,025,188,374 | 100% | ||
serejandmyself | 0 | 67,624,695,856 | 100% | ||
jimmytwoshoes | 0 | 220,870,649 | 100% | ||
johnbyrd | 0 | 53,042,068 | 100% | ||
thomasaustin | 0 | 53,039,566 | 100% | ||
thermor | 0 | 53,037,689 | 100% | ||
ficholl | 0 | 53,034,852 | 100% | ||
widell | 0 | 53,030,738 | 100% | ||
revelbrooks | 0 | 52,651,308 | 100% | ||
craigwilliamz | 0 | 9,863,845,700 | 100% | ||
naquoya | 0 | 2,870,757,781 | 100% | ||
curpose | 0 | 52,708,083 | 100% | ||
iosif | 0 | 64,112,233 | 100% | ||
etcmike | 0 | 8,842,908,231 | 100% | ||
jlufer | 0 | 76,529,265 | 100% | ||
sammie | 0 | 56,716,182 | 100% | ||
shenanigator | 0 | 93,141,722,242 | 100% | ||
troich | 0 | 52,836,995 | 100% | ||
crion | 0 | 51,718,188 | 100% | ||
hitherise | 0 | 51,388,276 | 100% | ||
wiss | 0 | 52,496,656 | 100% | ||
biomike | 0 | 56,886,670 | 100% | ||
ghasemkiani | 0 | 1,445,754,042 | 100% | ||
sebastianbauer | 0 | 56,782,516 | 100% | ||
sponge-bob | 0 | 34,343,378,292 | 100% | ||
l0k1 | 0 | 3,222,024,851 | 100% | ||
leavemealone | 0 | 5,434,390,533 | 100% | ||
lanimal | 0 | 4,890,694,497 | 100% | ||
stroully | 0 | 52,143,228 | 100% | ||
doitvoluntarily | 0 | 2,630,070,172 | 100% | ||
thadm | 0 | 51,814,474 | 100% | ||
prof | 0 | 51,812,703 | 100% | ||
thecyclist | 0 | 61,432,440,353 | 100% | ||
keverw | 0 | 653,376,936 | 100% | ||
yorsens | 0 | 51,451,058 | 100% | ||
bane | 0 | 51,154,263 | 100% | ||
vive | 0 | 51,148,009 | 100% | ||
coad | 0 | 51,142,585 | 100% | ||
sofa | 0 | 51,906,983 | 100% | ||
brains | 0 | 24,340,240,737 | 100% | ||
ailo | 0 | 51,979,174 | 100% | ||
projecthor | 0 | 69,669,982 | 100% | ||
zombo | 0 | 53,365,057 | 100% | ||
vsmith08162016 | 0 | 53,146,733 | 100% | ||
eavy | 0 | 50,441,122 | 100% | ||
roto | 0 | 50,439,559 | 100% | ||
haved | 0 | 50,938,725 | 100% | ||
ardly | 0 | 50,708,837 | 100% | ||
yotoh | 0 | 50,704,078 | 100% | ||
morse | 0 | 50,433,760 | 100% | ||
carre | 0 | 50,372,583 | 100% | ||
igtes | 0 | 72,784,915 | 100% | ||
buffett | 0 | 157,612,601 | 100% | ||
comeup | 0 | 93,038,315 | 100% |
i'd love to be good at programming.. https://media.giphy.com/media/A06UFEx8jxEwU/giphy.gif
author | doitvoluntarily |
---|---|
permlink | re-bitcalm-how-to-get-better-at-programming-20160904t041305602z |
category | programming |
json_metadata | {"tags":["programming"],"image":["https://media.giphy.com/media/A06UFEx8jxEwU/giphy.gif"]} |
created | 2016-09-04 04:13:06 |
last_update | 2016-09-04 04:13:06 |
depth | 1 |
children | 0 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 91 |
author_reputation | 1,413,017,592,339,131 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,119,034 |
net_rshares | 62,855,131 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
iosif | 0 | 62,855,131 | 100% |
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
author | jlufer |
---|---|
permlink | re-bitcalm-how-to-get-better-at-programming-20160904t041345989z |
category | programming |
json_metadata | {"tags":["programming"]} |
created | 2016-09-04 04:13:51 |
last_update | 2016-09-04 04:13:51 |
depth | 1 |
children | 0 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 152 |
author_reputation | 1,412,524,863,816,630 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,119,042 |
net_rshares | 0 |
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.
author | l0k1 |
---|---|
permlink | re-bitcalm-how-to-get-better-at-programming-20160904t044739263z |
category | programming |
json_metadata | {"tags":["programming"],"links":["https://github.com/l0k1-smirenski/steemportal"]} |
created | 2016-09-04 04:47:39 |
last_update | 2016-09-04 04:47:39 |
depth | 1 |
children | 3 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.022 HBD |
curator_payout_value | 0.004 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 2,386 |
author_reputation | 94,800,257,230,993 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,119,262 |
net_rshares | 62,033,627,326 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
igster | 0 | 23,951,015,785 | 100% | ||
bitcalm | 0 | 38,082,611,541 | 100% |
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.
author | bitcalm |
---|---|
permlink | re-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t082722794z |
category | programming |
json_metadata | {"tags":["programming"]} |
created | 2016-09-04 08:27:24 |
last_update | 2016-09-04 08:27:24 |
depth | 2 |
children | 1 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 236 |
author_reputation | 24,919,530,803,138 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,120,417 |
net_rshares | 3,346,583,990 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
l0k1 | 0 | 3,346,583,990 | 100% |
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.
author | l0k1 |
---|---|
permlink | re-bitcalm-re-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t093738892z |
category | programming |
json_metadata | {"tags":["programming"]} |
created | 2016-09-04 09:37:39 |
last_update | 2016-09-04 09:37:39 |
depth | 3 |
children | 0 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 694 |
author_reputation | 94,800,257,230,993 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,120,722 |
net_rshares | 0 |
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.
author | cristi |
---|---|
permlink | re-l0k1-re-bitcalm-how-to-get-better-at-programming-20160904t110755842z |
category | programming |
json_metadata | {"tags":["programming"]} |
created | 2016-09-04 11:07:57 |
last_update | 2016-09-04 11:07:57 |
depth | 2 |
children | 0 |
last_payout | 2016-10-05 10:06:15 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 140 |
author_reputation | 128,305,218,872,904 |
root_title | "How to get better at programming" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 1,121,274 |
net_rshares | 3,416,304,490 |
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
l0k1 | 0 | 3,416,304,490 | 100% |