Sie sind auf Seite 1von 2

4/9/2016

8WaystoBecomeaBetterCoderDZoneAgile

8WaystoBecomeaBetterCoder
(/users/209965/estherschindler.html)byEstherSchindler(/users/209965/estherschindler.html)Feb.28,16AgileZone(/agile
methodologytrainingtoolsnews)

Like(114)

Comment(8)

Save

Tweet

38.00kViews

TheAgileZoneisbroughttoyouinpartnershipwithJetBrains(/go?
i=87826&u=http%3A%2F%2Fjetbrains.com%2Fupsource%2F%3Futm_source%3Ddzoneagile%26utm_medium%3Dpromo
link%26utm_content%3Ddoingcodereviewlink%26utm_campaign%3Dupsource).Discoverhowtoincreasechangeawareness,
codequality,andmaintainabilitythroughstraightforwardcodereviews,(/go?
i=87826&u=http%3A%2F%2Fjetbrains.com%2Fupsource%2F%3Futm_source%3Ddzoneagile%26utm_medium%3Dpromo
link%26utm_content%3Ddoingcodereviewlink%26utm_campaign%3Dupsource)withasimple,lightweightworkflow.

Itstimetogetseriousaboutimprovingyourprogrammingskills.Letsdoit!
Thatsaneasycareerimprovementgoaltogiveoneself,butbecomeakick$!!programmerisnotasimplegoal.Foronething,
saying,Iwanttogetbetterassumesthatyourecognizewhatbetterlookslike.Plus,toomanypeopleaimforimprovement
withoutanysenseofhowtogetthere.
Soletmeshareeightactionableguidelinesthatcanactasaflowcharttoimprovingyourprogrammingskills.Thesetidbitsof
wisdomaregatheredfrom35yearsinthecomputerindustry,manyofwhichwerespentasalowlygrasshopperatthefeetof
someofthepeoplewhodefinedanddocumentedit.

1.RemindYourselfHowMuchYouHavetoLearn
Thefirststepinlearningsomethingisrecognizingthatyoudontknowit.Thatsoundsobvious,but
experiencedprogrammersrememberhowlongittooktoovercomethispersonalassumption.Too
manycomputersciencestudentsgraduatewithanarrogantIknowbestbravado
(http://www.javaworld.com/article/2072856/softwaredevelopmentandthepinkpony
backpack.html),arobustcertaintythattheyknoweverythingandtheintenseneedtoproveittoevery
(/) newworkcolleague.Inotherwords:YourIknowwhatImdoing!attitudecangetinthewayof
learninganythingnew.
ThanksforvisitingDZonetoday,(/users/1114339/ssmsam12345.html)(/users/1114339/ssmsam12345.html)

/AgileZone(/agilemethodologytrainingtoolsnews)

2.StopTryingtoProveYourselfRight

Sampat(/users/1114339/ssmsam12345.html)

Tobecomegreatnotjustgoodyouhavetolearnfromexperience.Butbecareful,experiencecanteachustorepeatpoor
REFCARDZ(/REFCARDZ) GUIDES(/GUIDES) ZONES(/PORTALS) | AGILE(/AGILEMETHODOLOGYTRAININGTOOLSNEWS)
behaviorandtocreatebadhabits.Weveallencounteredprogrammerswitheightyearsofexperiencethesameyearof
BIGDATA(/BIGDATAANALYTICSTUTORIALSTOOLSNEWS) CLOUD(/CLOUDCOMPUTINGTUTORIALSTOOLSNEWS)
experience,repeatedeighttimes.Toavoidthatsyndrome,lookateverythingyoudoandaskyourself,HowcanImakethis
better?
Novicesoftwaredevelopers(andtoomanyexperiencedones)lookattheircodetoadmireitswonderfulness.Theywriteteststo
provethattheircodeworks(http://blog.stevensanderson.com/2009/08/24/writinggreatunittestsbestandworst
practises/)insteadoftryingtomakeitfail.Trulygreatprogrammersactivelylookforwheretheyrewrong
(http://www.cio.com/article/2373826/careersstaffing/careersstaffingfightingthesuperstitionsofsoftwaredevelopment
questioningtheassumptions.html)becausetheyknowthateventuallyuserswillfindthedefectstheymissed.

3.TheCodeWorksIsntWhereYouStopItsWhereYouStart
Yes,yourfirststepisalwaystowritequalitysoftwarethatfulfillsthespec.Averageprogrammersquitatthatpointandmoveon
tothenextthing.
Buttostoponceitsdoneisliketakingasnapshotandexpectingittobeaworkofart.Greatprogrammersknowthatthefirst
iterationisjustthefirstiteration.Itworkscongratulations!butyouarentdone.Now,makeitbetter.
Partofthatprocessisdefiningwhatbettermeans.Isitvaluabletomakeitfaster?Easiertodocument?Morereusable?More
reliable?Theanswervarieswitheachapplication,buttheprocessdoesnt.

4.WriteitThreeTimes
Goodprogrammerswritesoftwarethatworks.Greatoneswritesoftwarethatworksexceedinglywell.Thatrarelyhappenson
thefirsttry.Thebestsoftwareusuallyiswrittenthreetimes(http://www.javaworld.com/article/2072651/becomingagreat

programmeruseyourtrashcan.html):
1.First,youwritethesoftwaretoprovetoyourself(oraclient)thatthesolutionispossible.Othersmaynotrecognizethat
thisisjustaproofofconcept,butyoudo.
2.Thesecondtime,youmakeitwork.
3.Thethirdtime,youmakeitworkright.
Thislevelofworkmaynotbeobviouswhenyoulookattheworkofthebestdevelopers.Everythingtheydoseemssobrilliant,
butwhatyoudontseeisthatevenrockstardevelopersprobablythrewoutthefirstandsecondversionsbeforeshowingtheir
softwaretoanyoneelse.Throwingawaycode(http://www.daedtech.com/throwoutyourcode/)andstartingovercanbea
powerfulwaytoincludemakeitbetterintoyourpersonalworkflow.
Ifnothingelse,Writeitthreetimesteachesyouhowmanywaystherearetoapproachaproblem.Anditpreventsyoufrom
gettingstuckinarut.

5.ReadCode.ReadLotsofCode
Youprobablyexpectedmetoleadwiththisadvice,andindeeditsboththemostcommonandthe
mostvaluablesuggestionforimprovingprogrammingskills.Whatislessevidentarethereasonsthat
readingotherscodeissoimportant.
Whenyoureadotherscode,youseehowsomeoneelsesolvedaprogrammingproblem.Butdont

https://dzone.com/articles/8waystobecomeabettercoder?edition=157264&utm_source=March%20Roundup&utm_medium=email&utm_campaign=rdup%2 1/2

4/9/2016

8WaystoBecomeaBetterCoderDZoneAgile

Whenyoureadotherscode,youseehowsomeoneelsesolvedaprogrammingproblem.Butdont
treatitasliteraturethinkofitasalessonandachallenge.Togetbetter,askyourself:

HowwouldIhavewrittenthatblockofcode?Whatwouldyoudodifferently,nowthatyouveseen
anothersolution?
WhatdidIlearn?HowcanIapplythattechniquetocodeIwroteinthepast?(Idneverhavethoughttouserecursive
descentthere).

HowwouldIimprovethiscode?Andifitsanopensourceprojectwhereyouareconfidentyouhaveabettersolution,do
it!
Writecodeintheauthorsstyle.Practicingthishelpsyougetintotheheadofthepersonwhowrotethesoftware,which
canimproveyourempathy(http://gamedevwithoutacause.com/?p=1329).
Dontjustidlythinkaboutthesesteps.Writeoutyouranswers,whetherinapersonaljournal,ablog,inacodereviewprocess
(http://www.cio.com/article/2431556/developer/5reasonsforsoftwaredeveloperstodocodereviewsevenifyouthink
theyreawasteof.html),oracommunityforumwithotherdevelopers.Justasexplainingaproblemtoafriendcanhelpyou
sortoutthesolution,writingdownandsharingyouranalysiscanhelpyouunderstandwhyyoureacttoanotherpersonscode
inagivenway.ItsallpartofthatintrospectionImentionedearlier,helpingyoutodispassionatelyjudgeyourownstrengths
andweaknesses.
Warning:Itseasytoreadalotofcodewithoutbecomingagreatprogrammer,justasawannabewritercanreadgreatliterature
withoutimprovingherownprose.Plentyofdeveloperslookatopensourceorothersoftwaretofindananswerand,most
likely,tocopyandpastecodethatappearstosolveasimilarproblem.Doingthatcanactuallymakeyouaworseprogrammer,
sinceyouareblindlyacceptingotherswisdomwithoutexaminingit.(Plus,itmaybebuggierthanasummerpicnic,butbecause
youdidnttakethetimetounderstandit,youllneverrecognizethatyoujustimportedabugfactory.)

6.WriteCode,andNotJustasAssignments
Workingonpersonalprogrammingprojectshasmanyadvantages.Forone,itgivesyouawaytolearntoolsandtechnologies
thatarentavailableatyourcurrentjob,butwhichmakeyoumoremarketableforthenextone.Whetheryoucontributetoan
opensourceprojectortakeonprobonoworkforalocalcommunityorganization,youllgaintechskillsandselfconfidence.
(Plus,yourpersonalprojectsdemonstratetowouldbeemployersthatyoureaselfstarterwhoneverstopslearning.)
Anotheradvantageofwritingcodeforfunisthatitforcesyoutofigurethingsoutonyourown.Youcantleavethehardstuffto
someoneelse,soitkeepsyoufromaskingforhelptoosoon.
Protip:Dontchooseonlypersonalprojectswhereyouneverfail.Youneedtofail!Butyoudoprobablydontwanttofailat
workorwhenyouhaveadeadline.

7.WorkOneononeWithOtherDevelopersAnyWayYouCan
Ithelpstolistentootherpeople.Thatmightmeanpairprogramming,orgoingtoahackathon
(http://www.hackathon.io/events),orjoiningaprogrammingusergroup(suchastheVermont
CodersConnection(http://www.meetup.com/vtcode/)).Whenyoucontributetoanopensource
project,payattentiontothefeedbackyougetfromusersandfromotherdevelopers.What
commonalitiesdoyouseeintheircriticism?
Youmightbeluckyenoughtofindapersonalmentorwhomyoucantrusttoguideyouineverythingfromcodingtechniquesto
careerdecisions.Dontwastetheseopportunities.

8.LearnTechniques,NotTools
Programminglanguages,tools,andmethodologiescomeandgo.Thatswhyitpaystogetasmuchexperienceasyoucanwithas
manylanguagesandframeworksaspossible.Focusontheprogrammingfundamentals,becausethebasicsneverchangepay
moreattentiontoarchitecturethantoprogramming.Ifyoufeelcertainthattheresonlyonerightwaytodosomething,its
probablytimeforarealitycheck.Dogmacanhamperyourabilitytolearnnewthings,andmakeyouslowtoadapttochange.
Icouldkeepgoing,butakeytenetofselfimprovementisknowingwhentostop.
[ThisarticlewasoriginallypublishedontheNewRelicblog(https://blog.newrelic.com/2016/02/22/8waysbecomea
bettercoder/)andissyndicatedwiththepermissionofNewRelic.]
TheAgileZoneisbroughttoyouinpartnershipwithJetBrains.(/go?
i=87827&u=https%3A%2F%2Fwww.jetbrains.com%2Fteamcity%2Fspecials%2Fteamcity%2Fteamcity.html%3F%26utm_source%3Ddzoneagile%26utm_medium%3Dasset%26utm_content%3Dbuild
engineer247%26utm_campaign%3Dteamcity)Learnmoreaboutthewiderangeofdeveloperorientedfeatures(/go?
i=87827&u=https%3A%2F%2Fwww.jetbrains.com%2Fteamcity%2Fspecials%2Fteamcity%2Fteamcity.html%3F%26utm_source%3Ddzoneagile%26utm_medium%3Dasset%26utm_content%3Dbuild
engineer247%26utm_campaign%3Dteamcity)totakeyourteam'sperformancetothenextlevel.
Topics: DEVLIFE, JAVA, PROGRAMMING, IMPROVE, IMPROVECODE
PublishedatDZonewithpermissionofEstherSchindler. (https://blog.newrelic.com/2016/02/22/8waysbecomeabettercoder/)
OpinionsexpressedbyDZonecontributorsaretheirown.

https://dzone.com/articles/8waystobecomeabettercoder?edition=157264&utm_source=March%20Roundup&utm_medium=email&utm_campaign=rdup%2 2/2

Das könnte Ihnen auch gefallen