it-swarm-eu.dev

Jak zdokonalím své kódovací schopnosti?

Tady je několik informací o mně, než začnu otázkou.

Jsem vysokoškolák informatiky, Java je můj primární kódovací jazyk.

Základním problémem mé univerzity jsou učební standardy. Nikdo se nestará o výuku kódování znalostí pro studenty, spíše než jen o teoretické znalosti.

Výsledkem je, že většina mých kolegů z kolegy vůbec nerozumí programování.

Dokonce jsem nebyl schopen vycházet z tradičního programovacího prostředí, které omezuje mé kódování do určité míry.

Jaké jsou možné způsoby, jak mohu rozvíjet a rozšiřovat své programovací/kódovací dovednosti.

Můžete také navrhnout zdroje pro stejné?

praveno: Zdroje naznačující rozvoj dovedností kódování.

76
ykombinator

Programování je jednou z oblastí, na nichž záleží na zkušenostech. Proto, abyste se stali lepším kodérem, měli byste kódovat více. Psaní však není jediné, co byste měli udělat. Také byste si měli přečíst kód jiných vývojářů a poučit se z toho, co je dobrý kód. Viz O této otázce .

Můžete také najít knihy, které jsou speciálně věnovány kódování, užitečné; například „Kód dokončen“. Obsahují popis toho, co je dobrý kód, což vám v kombinaci s vašimi základními znalostmi může udělat dobrého programátora.

46
P Shved

Můj oblíbený citát pochází z Konfucia:

Slyšel jsem, vím. Vidím, pamatuji si. Rozumím.

Veškeré znalosti, které jsem získal, byly z uplatňování jedné a jediné strategie:

Vždy se vydejte na nejnáročnější cestu.

Chcete se naučit C #? Získejte práci jako vývojář C #.

Chcete se učit italsky? Jděte tam se slovníkem anglicky/italsky a mluvte italsky

Chcete se naučit kódování? Kód!

98
user2567

Kódování je skvělá rada, ale bez někoho, kdo vám poskytne zpětnou vazbu, stačí opakovat své chyby. Najděte si práci, pracujte na projektu s otevřeným zdrojovým kódem, najděte mentora a nechte je podívat se na váš kód.

21
JeffO

Zde je prezentace Dan North dal a QCon na , jak se přesunout z nováčka na programátora jménem Sharpening the Tools . Níže jsou uvedeny klíčové návrhy z prezentace:

  1. Procvičte si základy: kata, kód pro zábavu ...
  2. Učte se od ostatních lidí: čtení knih, blogů atd., Čtení kódu, program ve dvojicích ...
  3. Porozumět trendům: co se v současnosti děje v tomto odvětví
  4. Sdílejte znalosti: nejlepším způsobem, jak se něco naučit, je porozumět jim a naučit je
  5. Údržba sady nástrojů: použijte „nadčasové“ a nové nástroje
  6. Naučte se, jak se učit: porozumět tomu, jak učení funguje
10
ysolik

Zkuste napsat kompilátor pro nějaký jednoduchý jazyk od začátku. Cestou si vylepšíte své dovednosti (s bonusem některé teoretické techniky z teorie formálních jazyků). Snažil jsem se napsat jednoduchou verzi Excelu a je to také velmi pěkné cvičení.

Stejně jako ostatní uvedli, jediným způsobem, jak zlepšit své dovednosti v oblasti kódování, je skutečně to udělat. Znečišťujte si ruce některými velkými projekty. Ale pak pro velké programy je ještě důležitější, abyste ovládli techniky návrhu softwaru, jinak se zdá, že velikost programu není zvládnutelná.

Je tu jedna pěkná citace od Nate Kirby:

"Špatní programátoři ignorují podrobnosti. Špatní návrháři se ztratí v detailech."

Takže přepínání mezi těmito dvěma úrovněmi abstrakce je dovednost, kterou byste měli ovládat.

Rychlost, kolik řádků kódu můžete napsat za hodinu, není tím, na co byste měli usilovat. Líbí se mi nabídka od David Parnas :

"Často slyším vývojáře popisované jako" někdo, kdo ví, jak rychle postavit velký systém. " Neexistuje žádný trik v budování velkých systémů rychle; čím rychleji je stavíte, tím větší jsou! “

8
D. L.

Implementoval jsem buď sázkový fond nebo hru Baccarat téměř ve všech jazycích, které jsem se naučil.

Tento typ softwaru zahrnuje

  • Data a časy, s výpočty
  • Typy měn a věci, které lze převést na a z měny
  • Diskrétní sada pravidel, která lze snadno otestovat
  • Státy, přechod mezi státy a více entit zodpovědných za přechod státu
  • Více uživatelů s různými pohledy na stejný model
  • Více koncových podmínek

Fungovalo by i více hráčů blackjack a poker.

Jednou výzvou je, že v mé denní práci pracuji na finančních systémech a existuje velké překrývání věcí, které je třeba při psaní multiplayerové hazardní hry a obchodního systému překrývat.

5
sal
  • Vyberte dobré opensource projekty a přečtěte si kód.
  • Vezměte si pro sebe středně velký projekt a začněte kódovat
    • Pokud vás zajímá vývoj webových aplikací, zkuste pomocí své oblíbené technologie vytvořit existující web od začátku. a co Twitter v djangu?
    • Pokud se chystáte na vývoj desktopových aplikací, začněte s poznámkovým blokem a improvizujte jej, abyste podporovali pokročilé funkce (vyhledávání na regexu, začněte).
4
Amarghosh

Skočit do vody, může to být nejprve zima a budete v pokušení dostat se ven, ale brzy si vaše tělo na to zvykne a znovu se zahřeje a jakmile se stanete příjemným ve vodě, můžete plavat kolem a jít do hluboký konec.

Právě jsem dokončil vysokou školu před pár měsíci, kde jsem studoval Java. Stejně jako vy jste neměli tušení, jak správně kódovat. Asi před měsícem jsem chtěl vytvořit webovou aplikaci v PHP. Nevěděl jsem, co dělám, ale prostě jsem za tím šel. Zpočátku to bylo zastrašující a ohromující, ale jak cvičíte, stává se to přirozeným. Dokonce jsem napsal aplikaci mnohokrát, pokaždé ji ještě více zjednodušil. Nyní pracuji na aplikaci od nuly, ale tentokrát im přijdu na to, jak na to objektivně orientované a pomocí PEAR a jeho modul rychlý tvar, což je další překážka, kterou musím projít, ale odhodlaný a nadšený) nicméně.

Takže trénujte. Skočte do vody! Hodně štěstí :)

4
Jonathan

Myslete na to takto ... Tiger Woods se nestal „nejlepším“ golfistem sledováním golfu nebo čtením o něm. Tak, jako každý jiný sportovec, se dostal tak, že studoval, cvičil, hledal, kde může vylepšit svou hru a něco s tím udělat.

Kódování je stejné. Nejlepší způsob, jak se v tom lépe zlepšit, je studovat, co ostatní dělají, pochopit, proč to dělají tímto způsobem, a pak to udělat sami.

4
Muad'Dib

Stejně jako v jakékoli jiné lidské činnosti je nejlepším způsobem, jak se zlepšit, procvičit si své znalosti, ale k tomu potřebujete určitá cvičení. Dave Thomas , jeden z autorů knihy The Pragmatic Programmer, představil koncept Code Katas , podobný konceptu kata v bojových uměních.

Můžete se tam podívat: http://codekata.pragprog.com/

4
jmservera

Navrhuji naučit se veškerou syntaxi vašeho oblíbeného jazyka. Pochopit, jak používat virtuální funkce, dědičnost, lambda, pokud existují. atd. Jedna věc, kterou jsem udělal, byla chytit velkou děsivou knihovnu (udělal jsem to s podporou a STL pro C++) a uvidíme, jestli každý řádek a každé klíčové slovo dává smysl.

Případně si můžete přečíst odkaz na syntaxe jazyka, pokud existuje dobrý, který pokrývá nejaktuálnější verzi. Jako příklad je zde C # reference (Ne verze nahoře. Udělal jsem chybu, když jsem se podíval na populárnější starší verzi, která neměla syntaxi, kterou jsem hledal)

3
user2528

Obecný konsenzus je „napsat více kódu“, se kterým souhlasím, ale k této radě přidám, že byste měli napsat hodně různých druhů kódu. Java je v pořádku, pokud jde o jazyky, ale určitě byste měli psát kód jak nahoru, tak dolů po výkonovém spektru. Kromě Java bych navrhl provést i několik malých projektů na nižší úrovni jazyk (C je pro to dobrý), skriptovací jazyk (preferuji Perl, ale python je také dobrá volba), funkční jazyk (LISP je zde obecné doporučení, ale OCaml a Haskell jsou také dobrou volbou), a přinejmenším se budete cítit dobře při čtení jazyka Assembly.

Vyberte si také různé typy programů, které implementujete. Podívejte se na implementaci přinejmenším Desktop GUI, bohaté webové aplikace, síťového klienta a serveru, ovladače, obslužného programu pro munging dat, ray tracer a fyzikální simulace.

Všechny projekty by měly být relativně malé, cílem by nemělo být funkční program, ale získat širokou škálu zkušeností v různých doménách, do kterých byste mohli narazit, naučit se různé typy myšlení potřebné pro každou z nich, a zjistit, kde jsou vaše zájmy.

Jakmile to uděláte, budete mít dobrou představu o tom, jaký typ programování vás nejvíce zajímá, a můžete najít nebo zahájit projekt s otevřeným zdrojovým kódem, abyste získali zkušenosti s prací na velkých kódových základnách a zabývali se dlouhodobými termínové projekty a práce s dalšími vývojáři.

3
Cercerilla

Získáte několik podobných odpovědí a moje bude také stejné. Napište kód. Existují dva dobré způsoby, jak to udělat.

  1. Vyberte si něco, co vás opravdu přitahuje nebo vás zajímá, a prostě jděte o jeho implementaci. Pokud jste do her, napište hru. Pokud vás zajímají webové věci, vytvořte zajímavý a originální web. Možná se vám to nepodaří dokončit, ale zkušenost vás naučí hodně.
  2. Vyberte si open source projekt, který vás zajímá a zapojte se do něj. Poučte se ze stávajícího kódu a použijte jej k opravě chyb, sestavování testů jednotek a implementaci nových funkcí.

Každý z nich vám poskytne přímé zkušenosti s programováním, které potřebujete, a také zapojení do programovacích komunit, jak se učíte, a musíte položit otázky, abyste z toho dostali více. Uděláte mnoho chyb. To je dobré - pokud přestanete dělat chyby, přestali jste se učit a musíte najít nějaký nový způsob, jak se postavit.

2
glenatron

Moje návrhy

  • Najděte pet projekt a napište ho v jiném jazyce (lyke python/c #), než jaký znáte. To vás naučí více, než si dokážete představit. Podívejte se na podobné projekty a pokuste se s nimi získat paritu funkce. Můžete s tím jít pomalu a mít skromné ​​cíle a neustále zvyšovat svou obtížnost pomocí nových funkcí. To se také stane vaším ukázkovým kusem, když jdete na pracovní pohovor.
  • Najděte ve svém projektu využití pro relevantní technologie, jako jsou webové služby, javascript, ajax, geokódování a v podstatě cokoli, co dělá pokrok ve světě softwaru.
  • Hrajte s jinými operačními systémy, jako je Linux/freebsd. Čím více se vystavíte různým druhům systémů, tím více porozumíte myšlení, které se jim chová, a proč dělali věci tak, jak to dělali.
  • Až budete hotovi s částmi kódu, vraťte se k němu a pokuste se jej neustále vylepšovat. Najděte nedostatky, v případě potřeby přidejte další komentáře, zkuste to vylepšit.
  • Vykopávejte na c2.com. Existuje mnoho dobrých praktik kódování. Naučte se je a zkuste je použít ve svém vlastním projektu.
  • Čtení knih, jako je pragmatický programátor a kompletní kód, vám poskytne znalosti o bitevně ztuženém programování.
  • To může znít nesouvisející, ale najít další technické koníček, pokud už nemáte jako závodní RC auta, hraní na hudební nástroje nebo výuku cizího jazyka. Čím více kousků vašeho mozku se používá, tím lépe a musíte si čas od času odpočinout, protože programování může být příliš mnoho.
2
Tjaart

Vzájemné recenze skutečně pomáhají zlepšit kvalitu kódu. Pokud nemáte skutečného mentora, můžete svůj kód zveřejnit [poté, co jej snížíte na nezbytné minimum] na StackOverflow nebo RefactorMyCode nebo seznamy adres a lidé vám pomohou se zlepšením kvality vašeho kódu.

2
missingfaktor

Ano, praxe je nesmírně důležitá pro rozvoj programovacích dovedností a pro jejich ostrost. Samotná praxe vás však vezme jen tak daleko. Musíte se také poučit od lidí, kteří vědí více než vy. Existují techniky, o kterých jste nikdy neslyšeli, postupy, jejichž výhody nejsou okamžitě zřejmé, a triky, které byste sami nikdy nemohli vymyslet.

Způsob, jak se naučit nové techniky, elegantní triky a užitečné postupy, je mnoho. Číst knihy. Promluvte si se spolupracovníky. Klást otázky. Zkontrolujte kód ostatních lidí a nechte je zkontrolovat svůj. Přečtěte si blogy a články o programování, včetně těchto stránek. Stručně řečeno, nepracujte ve vakuu.

Jo, a pokud si nejste jisti, co znamená NP-complete, nebo jestli vás nota big-O děsí, měli byste pravděpodobně vzít nějakou teorii výpočtů a algoritmů.

1
Dima

Řekl bych, že byste si měli přečíst informace o vzorcích, jako je Builder, Factory, Composite a nakonec Observer, Mediator a Flyweight. Designové vzory nejsou pro řešení kódování konečnou součástí, ale ukazují, jak implementovat teoretické koncepty objektově orientovaného programování.

1
Tim Claason

Mohu jen navrhnout to, co pro mě fungovalo. Snil jsem se naučit programovací jazyk a vytvořit s ním šachový motor. Nechal jsem trávit čas knihami, články a malými ukázkami. Tak jsem se rozhodl zkontrolovat skutečné projekty, které mají lepší dokumentaci pro vývojáře. Vybral jsem si jeden a začal číst projekt ze dne na den. Nemyslete si, že plynutí dní ztrácí čas při čtení. Je to mnohem lepší než trávit čas čtením článků a knih. Na první pohled se setkáte s mnoha věcmi, které nejsou jasné, ale každý den se to změní, pokud se pokusíte trpělivě zkoumat. Neočekávejte, že pochopíte vše za týden. Musíte držet své nízké sebevědomí, když nerozumíte některým věcem. Jednoduše se pokuste zjistit, jak tato úžasná věc funguje a užívá si.

Vyberte si existující projekt, pro který máte vášeň. Začněte číst kódy, ladit je a pokusit se pochopit, jak věci fungují každý den. Projekt také použijte pro sebe. Poté začněte přidávat některé funkce, které chcete. Dokonce se pokuste napsat stejnou nebo podobnou aplikaci.

1
Freshblood

"Praxe!" To je klišé.

Měli byste si přečíst, co jste se naučili v matematických třídách, a vytvořit nějaké programy, které se budou zabývat těmito problémy. Také implementujte výtahový program, prodejní automat (který počítá změny v mincích), aby se zdokonalily vaše logické dovednosti. Přemýšlejte o všem v každodenním životě a implementujte je.

1
Ming-Tang