8. nädal

Mis eristab head programmeerijat käsitoolisest? Seda, kes kirjutab head koodi suurfirmadele, sellest, kes teeb ühemeheprojekte isikliku lõbu või väikeprobleemi lahendamiseks?

Programmeeriline mõtlemine

Hea programmeerija puhul pole oluline tingimata see, kas sa tunned mõnde teoreetilist kontsepti või programmeerimiskeelt, vaid kuidas sa õpid seda kasutama. Hea programmeerija on kohanemisvõimeline ning suudab efektiivselt lahendada probleeme ja võtta kasutusele uusi tehnoloogiaid kasutades intuitiivseid mustreid oma varasemast kogemusest.

Hea nägemisega inimene tunneb ära programmeerida kes lihtsalt oskab kirjutada koodi, ja kes saab aru kuidas kirjutada koodi ning suudab naturaalselt mõelda selles piirkonnas ja ilma pausideta väljendada komplekseid ideid. Heaks analoogiaks on inimene, kes tunneb antud keele kõiki grammatikareegleid ja sõnu, aga pole kunagi tegelikult selles keeles rääkinud, ning inimene, kes on rääkinud selles keeles lapsepõlvest. Tarkvaraarendus ja sellega seotud suursüsteemide arhitektuuri disainiküsimused ja probleemid asuvad justkui oma enda keeles.

Tugev teoreetiline alus

Kui sa soovid saada professionaalseks programeerijaks, siis on tähtis soliidse teoreetilise vundamendi selgeks õppimine. Puudutame korra ideed nimega the law of leaky abstractions:

In software development, a leaky abstraction is an abstraction that leaks details that it is supposed to abstract away. The Law of Leaky Abstractions states: All non-trivial abstractions, to some degree, are leaky. 

Mida see tähendab on see, et isegi kui sa kasutad ainult kõrgtasemelisi programmeerimiskeeli, tekib sul ühel hetkel siiski probleem, mida sinu antud tehnoloogia abstraktsioon täielikult ei kata. Ja selliste probleemide lahendamine nõuab lõpuks siiski langemist madalamale abstraktsioonitasemele. Veelgi parem on nende probleemide ennetamine: kui sa tead kuidas su abstraktsioon tegelikult mälus töötab, või milliseid optimiseerimistrikke ta näiteks C või kompileerimistasemel kasutab, siis tead, kuidas kasutada abstraktsiooni ära efektiivselt ja ajasäästlikult. Pole vahet et sa töötad puhtalt Püütoniga, pead siiski tundma, mis asi on open addressing hash collision resolution, reference count garbage collection ja pointer.

 


 

Comments

Popular posts from this blog

6. nädal

13. nädal

15. nädal