Как да станем най-добрият програмист в света

Нямам идея как да стана най-добрият програмист в света. Затова разбрах, че най-добрият начин да постигнете напред е да се научите от най-големите програмисти за всички времена и да получите отговори и от някои невероятни инженери.

Нека се напукаме.

1. Уроци от Денис Ричи, Човекът зад UNIX и C

UNIX по същество е проста операционна система, но трябва да бъдете гений, за да разберете простотата - Денис Ричи
Денис Ричи, Techtricksworld

В дните, преди да успеете да отидете в колеж и да получите степен по компютърно програмиране, Денис Ричи успя да се сдобие с работа в Масачузетския технологичен институт (MIT).

Компютърните лаборатории не бяха толкова придирчиви, колкото сега, и приветстваха практически всеки с търпението да им помогне да работят на своите компютри с размери в стаята.

За някой, който започна като аутсайдер на индустрията, създаването както на UNIX, така и на езика C - две от най-широко използваните технологии в компютърната история - е голяма работа. Много голяма работа.

Ето някои от постиженията на Денис Ричи:

  1. Денис Ричи създаде език за програмиране на С и създаде операционната система UNIX с приятеля си Кен Томпсън.
  2. През 1983 г. е носител на наградата Тюринг от Асоциацията на изчислителните машини (ACM)
  3. През 1990 г. и Ричи, и Томпсън получават медал IEEE Richard W. Hamming от Института на инженерите по електроника и електроника (IEEE)
  4. През 1997 г. става сътрудник на Музея на компютърната история
  5. Той получи Националния медал за технологии от президента Клинтън през 1999 г.

И така, как бихте решили да постигнете всичко това? И още повече, как Денис Ричи дори се научи да пише софтуер?

За Денис Ричи - наричан популярно „Бащата на програмния език на С“ - се казваше, че е мил, мил, непретенциозен човек - и пълен герой!

Но той не започна като маниак.

Ричи е родена в Ню Йорк и израства в град Гардън, Ню Джърси. Той имаше стабилно детство и се справи отлично академично.

Продължава да учи в Харвардския университет, където учи наука и завършва бакалавърска степен по физика.

И така, кога компютрите влязоха в живота на Ричи?

ТОЧКА 1: Ако изглеждате добре да пишете страхотен софтуер, ще трябва да останете любопитни.

Нито съм умен, нито особено надарен. Аз съм само много, много любопитен - Алберт Айнщайн

Любопитството подхранва глада за знание. И знанието, скъпа моя, управлява света.

Докато беше студент, Ричи някак посети лекция за това как Univac работех.

UNIVAC I (Universal Automated Computer I) беше първият търговски компютър, произведен в Съединените щати.

По-долу е как изглеждаше:

Уикипедия

Сериозно, какъв любопитство прави човек място и всъщност се наслаждавайте на лекция за това как работи това нещо?

Очевидно видът, който прави страхотен програмист.

След тази среща Ричи продължи да проучва как компютърът наистина работи.

Любопитството убива котката . Всички знаем това, но ти не си Котка.

ТОЧКА 2: Знам, че сте чували това преди, но изграждайте неща. Много неща.

Вместо да се съсредоточа върху конкретни проекти, исках да бъда около хора с много опит и идеи. Така започнах да работя по различни проекти, за да науча пътя си около професията. ”- Денис Ричи

Направете изграждането на много проекти продукт на вашето любопитство. Преведете това любопитство в изграждането на различни проекти - и като Ritchie, това ще ви помогне да научите пътя си около професията.

ТОЧКА 3: Закачете се за онези, които считате за по-добри и по-опитни.

Очевидната причина, поради която трябва да направите това, е, че ще се учите с много по-бързи темпове и няма да се чувствате много удобно с настоящите си знания.

Това беше нещо друго, за което Денис Ричи се казваше, че се справя добре.

Ако не можете да се доближите физически до хората, които смятате за по-добри и опитни, интернет е ваш приятел.

Следвайте ги по каналите, в които се чувствате комфортно. Прочетете техните публикации в блога. Гледайте техните видеоклипове в YouTube. Слушайте подкастите им.

Просто „останете“ около тях.

ТОЧКА 4: Решаване на проблеми.

„Не е интересното действителното програмиране. Но това е, което можете да постигнете с важните крайни резултати. ”- Денис Ричи

Денис Ричи живееше във време, когато компютрите пълнеха стая, и много други. Но Ричи знаеше, че се разработват по-малки компютри и те нямаха лесни за използване операционни системи, така че той започна проект за изграждането на такъв.

Ето как Ричи гледа на програмирането като цяло. Беше за това какво може да се постигне. Проблемите, които биха могли да бъдат решени, и ефектът, който биха имали върху хората.

Ако проблем ви държи толкова много, не го игнорирайте. Ако смятате, че го пренебрегват мнозина, разрешете го. Изградете нещо. Просто го направи.

Станете любопитни. Проучете концепциите. Помоли за помощ.

Не трябва да поглеждате назад, докато не решите проблема.

Когато нещо е достатъчно важно, вие го правите, дори ако шансовете не са във ваша полза - Илон Мъск.

Ето няколко примера :

  • Electron JS, технологията за изграждане на десктоп приложения с Javascript оживява, защото част от екипа на Github иска да създаде хакерски редактор с уеб технологии.
  • Redux, предсказуемият държавен контейнер за приложенията на Javascript е създаден от Дан Абрамов, защото той искаше да създаде библиотека за управление на държавата с минимален API, но напълно предвидимо поведение - това е начинът, по който той го поставя.
  • Куинси Ларсън и няколко други изградиха платформата Freecodecamp, за да решат проблема с преподаването на уеб технологии в общност с отворен код.

Те видяха проблем и продължиха да го решават.

Основни извлечения от Денис Ричи, бащата на програмния език на С

  • Бъдете любопитни и продължавайте да подклаждате огъня на знанието. Никога не можем да знаем всички.
  • Разберете основите. Майсторът на основите, е истинският майстор на умението.
  • Решавам проблеми. Ако смятате, че нещо може да се направи по различен начин и трябва да се направи, просто го направете. Ще станете по-бързи и ще живеете по-добре, докато го правите
  • Изградете много различни проекти
  • Закачете хора с повече експертиза, опит и идеи. Не можете да търгувате с това за нищо друго.

2. Уроци от Линус Торвалдс, човекът зад операционната система Linux Kernel

Линус Торвалдс, Софтпедия

Имено от списание Time като „един от най-влиятелните хора в света, Линус Торвалдс е творческият гений зад операционната система Linux kernel.

  • През 1998 г. е носител на пионерската награда на Фондацията за електронни граници (EFF).
  • През 1999 г. той получава титлата „един от най-добрите 100 иноватори, на възраст под 35 години в света“ от MIT Technology Review TR100.
  • През 2000 г. той е носител на медала Lovelace, който бе връчен от Британското компютърно дружество
  • През 2008 г. той става помощник в Залата на стипендиатите на Музея на компютърната история
  • През 2012 г. той бе въведен в интернет залата на славата.
  • През 2012 г. той беше и един от получателите на наградата за хилядолетие за технологии.

Сега, това си струва страхотно каране.

Лицензният номер на Linus Torvalds Снимка: Джон Снайдер / Кабелен

Роден в Хелзинки през 1969 г. и в семейство журналисти, Линус казва, че детството му не е било нищо особено.

Повлиян до голяма степен от дядо си по майчина линия, Линус пише първите си програми на 10 или технически на 12. Той помага на дядо си да пише в програмите си и до 12-годишна възраст започва да ги модифицира и да пише свои програми.

Ако да бъдеш самоук програмист означава да се научиш да програмираш, независимо от някои основни класни компютърни класове, Линус е еднакво програмист на самоук.

Според него „по онова време е имало часове по програмиране в гимназията, но те са били доста основни и рудиментарни“

Точка 5: Официалното образование по компютърни науки е чудесно, но не позволявайте това да ви спре.

„Образованието по компютърни науки не може да направи никой експерт програмист, освен изучаването на четки и пигмент може да направи някой художник-художник.“
- Ерик Реймънд

Докато расте, на Линус Торвалдс му беше интересно да пише игри и той правеше машинен код. Той нямаше достъп до асемблер, така че направи цялото събрание на хартия и ги записа като двоичен.

Това е доста лошо.

Още по-интересното е, че всички в неговото семейство (различни от тези от неговата майчина страна) бяха журналисти. Той беше черната овца.

В интервюто си за Музея на компютърната история той казва:

„Бях много маниер. Останах вътре и четох или програмирах. И съвсем честно казано, все още чета и седя пред компютър. Това е моето боби ”

Точка 6: Обичайте това, което правите. Не само парите и славата ги носи.

Повечето добри програмисти правят програмиране не защото очакват да получат заплащане или да получат рекламиране от обществеността, а защото е забавно да програмират - Линус Торвалдс

Трябва да заявя, че много пъти любовта към програмирането не идва, когато просто започнете. За много хора това е като издънка за овладяване на техния занаят.

Учиш се, правиш грешки, строиш неща, виждаш се да се оправиш и просто напълно обичаш това, което правиш тогава.

Дори при тези, които започват с любов, се вижда, че любовта им нараства още повече, докато усвояват занаята си.

Ако обичате програмирането, но не изглежда да се подобрявате, не се отказвайте. Повечето хора носеха едни и същи обувки - и в по-големи размери!

ТОЧКА 7: Бъдете удобни като започнете от малки - но растат.

„Просто искам да изградя своя собствена операционна система“ - Линус Торвалдс ???

Това НЕ Е как върви историята. Проектът Linux не започна като приключение за изграждане на операционна система.

Подробностите за това може да ви отегчат. Но тук е важното.

Линус поръча MINIX, по същество UNIX-подобна компютърна операционна система (OS). За първи път е издаден през 1987 г., като пълният му изходен код е предоставен на университетите за изучаване в курсове и изследвания.

Линус играеше около машината и пишеше програмите си за зареждане на дискетата, без операционна система.

Linus искаше да играе със самия процесор. Така че използването на ОС би победило целта на неговото упражнение.

Никъде не намери програмата, за която пише, че е много полезна. След това той разшири програмата си до степен, в която беше операционна система

Много успешни хора започват с малки, но го правят голям.

Опасността, свързана с това да започнеш голямо, е, че можеш да попаднеш в капана на преумора.

Също така е напълно добре да НЕ знаете нещо. Съвършено добре е да бъдете любител на нова технология, но отглеждайте крилете и овладявайте възможно най-бързо.

Точка 8: Трябва да свършите работата. Никой друг няма да го направи вместо вас

И аз така или иначе бях чел книги от операционната система - Линус Торвалдс

Тепърва ще се срещам с един успешен човек, който не работи.

Лесно е да се предположи, че Линус просто магически знаеше как да изгради операционна система. Това не е вярно.

Той беше сложил необходимата работа.

В интервюто си с Музея на компютърната история той казва, че е започнал да се опитва да реорганизира програмата, която е изградил, така че тя действаше повече като истинска операционна система. И очевидно бе чел и книги от операционната система.

Нищо магическо. Трябва да вложите необходимите часове на работа, за да станете добри в програмирането.

Ключови извлечения от Линус Торвалдс

  • Образованието по компютърни науки е страхотно, но не позволявайте това да ви спре да бъдете страхотни.
  • Продължавайте да обичате това, което правите. Продължавайте да го правите добре, забравете привързаността и парите, те ще дойдат по-късно.
  • Съвсем добре е да започнете с малки. Просто не оставайте там.
  • Бъдете готови да включите необходимите часове на работа. Нищо невероятно не става евтино

Бонус точки от други опитни разработчици

Аз лично събрах принос от някои опитни софтуерни инженери. Какво мислят за това, че си най-добрият разработчик, който можеш да бъдеш?

ТОЧКА 9: Извънработна работа, всички останали се опитват да бъдат най-добрите

Бил Сурур, пише софтуер вече повече от 2 десетилетия. Ако сте любопитни, Куинси Ларсън го интервюира тук

Посегнах към него и ето какво каза той:

Основният отговор е, за да бъдеш най-добрият в нещо, което трябва да надхитриш всички останали, които също се опитват да бъдат най-добрите. Това означава, че четете, четете, учете, работете в него всеки ден и през цялото време. - Бил Сурур

По думите на Бил, по-интересен въпрос може да бъде, защо искате да бъдете НАЙ-ДОБРИЯТ В СВЕТА? Какво ще те получи това? Това ли е истинската цел?

Какво ще кажете да се опитвате да бъдете най-доброто, което МОЖЕТЕ да бъдете, и да не се притеснявате за останалия свят?

Това все още означава да отработите задника си, но тогава ще се състезавате само срещу себе си. Поставете целта си всеки ден, да бъдете по-добри, отколкото сте били вчера, и ще стигнете много далеч.

Точка 10: Научете се да мислите за абстракциите и дизайна на софтуер по-ясно

Дейв

Дейв Седия работи като софтуерен инженер в района на Бостън и неговият богат опит е такъв, който с времето трябва да уважавам. Днес той най-вече създава интерфейси за интерфейси с React и е автор на книгата Pure React

Ако сте любопитни, ето неговият блог

Посегнах към Дейв преди няколко месеца и подробностите в отговора му ме озадачиха.

Ето неговите мисли:

1. В подходящия момент проучете предимствата, които идват от излагането на множество езици за програмиране

Изучаването на няколко езика ви излага на нови идеи и нови начини за подход към проблеми (особено функционални езици).

След това са тези от по-ниско ниво като C, които ще ви научат да се съобразявате с управлението и производителността на паметта. По принцип трябва да изградите неща. Изградете много неща.

2. Изследвайте още повече видове проекти

Писането на UI (потребителски интерфейс) код не е като писане на високоефективен код за събиране на данни, не е като писане на OpenGL код, не е като програмиране на сокет ... Така че е интересно да се разклонявате от един аспект на развитие като фронтенд / бекенд неща в други неща , само за да видите какво е това.

3. Съберете широк спектър от опит

Така че част от това, че съм добър разработчик за мен е да имам широк спектър от опит. Това може би просто съм аз. Всеки ще има свой отговор за това. Но мисля, че е полезно да знаете малко за всичко.

Предполагам, че бих се нарекъл генералист - обичам да уча нови неща и затова съм правил много различни неща. Код за събиране на данни в C ++, говорещ с персонализиран хардуер, GUI в Qt, малки игри в OpenGL, скучни Java и SQL, webapps в Ruby on Rails, малки Raspberry Pi проекти като отварачка за гаражни врати ... много малки неща.

4. Вземете страхотно в автоматизация и тестване непрекъснато

По пътя се опитайте да се справите с автоматизирането на нещата. Мисля, че желанието за автоматизация е двигателят зад повечето проекти, които съм направил, но също така е чудесна причина и мотиватор за изучаване на Linux и командния ред.

Знанието на командния ред изглежда като спомагателно, второстепенно нещо. Но мисля, че е наистина важно.

Променя начина, по който виждате проблеми. Неща като „о, глупости, трябва да променя името на променливата в 30 файла? nevermind ... ”стават няколко линии на баш.

Настройването на компилациите става по-малко смущаващо, защото всички команди имат смисъл или поне виждате общите между тях.

5. Разбиране на софтуерния дизайн

Така че най-трудното нещо за подобряването ми като разработчик е битът на архитектурата.

Софтуерен дизайн, как да структурирате кода си, така че да е многократно използваем и лесен за четене и лесен за промяна. Станете страхотни в рефакторинг и тестване последователно.

Трябва да призная, че не винаги съм страхотен в тестването. Но TDD (Тестово разработената разработка) всъщност е забавно и трябва да се научите и да я практикувате. Мисля, че това е нещо като пряк път / система за подобряване на „дизайнерската“ страна на разработването на софтуер.

Една от най-добрите книги, които прочетох за дизайна, беше Practical OO Design in Ruby от Sandi Metz. Не е нужно наистина да познаваш Руби много добре, за да извлечеш голяма полза от нея. Това преминава през рефакторинг на куп малки примери, за да се улесни поддържането им, а тя обсъжда компромиси и причините за всяка промяна, която направи.

заключение

Къде отиваш оттук? Приложете тези принципи и започнете своя стремеж да станете по-добър разработчик. Плюс това, вие трябва да се стремите съзнателно да практикувате.

В своята неотдавнашна сесия на Quora, DHH, Създател на Ruby on Rails, го представя по този начин.

„Не помага да практикувате един и същ урок 10 пъти. Трябва постоянно да търсите ръба на вашата зона на комфорт. ”- Дейвид Хансон, създател на Ruby on Rails.

Успех и наздраве да бъдете по-добър разработчик!

Препоръчайте статията и пуснете коментарите си.

Някакви съвети, които са ви помогнали лично? Нека го чуем!