Beruflich Dokumente
Kultur Dokumente
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