Skillception

10 умения, за да бъдеш програмист

В основата си програмирането е две неща: изразяване и решаване на проблеми. Можете да се съсредоточите върху приложения и върху […]

програмист

В основата си програмирането е две неща: изразяване и решаване на проблеми.

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

Програмистите имат повече време да работят върху своите страсти

Странични проекти и да се радват на чувство за самоувереност, което повечето работници нямат. Програмистите прекарват времето си, за да изработват уебсайтове, приложения и системи. Като същевременно изграждат реални решения и подобряват преживяването както за крайните потребители, така и за работодателите. Кодерите имат засилен фокус, тъй като проблемите, които решават, изискват постоянни, концентрирани усилия. Това води до по-голяма производителност във всички аспекти на живота. Едно от най-големите предимства на кодирането е последователното навлизане в състояние на пото. В което времето, разсейването и разочарованието се стопяват, което позволява на кодера да образува съюз с поставената задача. Поради всички тези причини кодирането небрежно или професионално може да подобри живота ви.

И така, как да започнем? Тук ще разгледаме десет умения, от които се нуждае всеки програмист.

1. Самоувереност.

Този е нещо значимо. Когато започнете да програмирате, това умение може да се окаже критично, за завършване на задачата. Трябва ли да се съсредоточите върху предния или задния край? Какви езици за програмиране трябва да използвате? Откъде да започна? Имайки предвид, че единственият начин да изядете слон не е да го захапете наведнъж, а да изберете нещо и да започнете. Има безкрайни ресурси, където можете да се научите да кодирате. Но от вас зависи да ги потърсите и да се ангажирате с тях.

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

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

Важно е да имате предвид целта. Защо искате да програмирате? Какъв проблем искате да разрешите или какъв проект се надявате да поемете? Познаването на отговорите на тези въпроси ще ви помогне да стесните къде да съсредоточите усилията си, какви езици да научите и т. н. И накрая, самочувствието се свежда до избора, който правите. Не можете просто да започнете работа на сляпо. По същия начин, по който трябва да имате цели, към които е насочена работата. Трябва да изберете път, който да ви доведе до тях, независимо от това, което другите са направили или да го оставите на случайността.

2. Език.

Може да изглежда очевидно, но за да напишете код, ще трябва да научите поне един език за програмиране или скриптове. Някои ресурси за начинаещи включват напълно безплатния CodeAcademy. Който е помогнал на 24 милиона души да започнат кодирането си. EdX, основан от Харвард и Масачузетския технологичен институт, който предлага 60 училища. GitHub, който ви дава достъп до 500 безплатни учебника по програмиране, които обхващат 80 различни езика. Експертите предлагат да се опитате да овладеете един език, вместо да се опитвате да научите много, но малко от тях.

Трябва да го направите по същия начин, по който бихте учили английски, италиански или испански, а не и трите наведнъж, нали? И така, с кой език да започнем? Това има много общо с това, което се опитвате да постигнете. Но има три езика, които се открояват със своите многостранни приложения, последователна помощна програма и достъпност за начинаещи. Тези три са Python, Ruby и JavaScript.

Python e разработен през 80 -те години и се счита за един от най-лесните за кодиране езици. Той е безплатен, с отворен код и най-често се класифицира като скриптов език. Което означава, че не изисква изрична стъпка за компилиране. Това е един от най-разпространените езици за програмиране днес и се използва от Google, Yahoo! и НАСА. Ruby е подобен, достъпен за начинаещи, изключително разпространен скриптов език. Това е динамичен, обектно-ориентиран скриптов език, използван за разработване на уебсайтове и мобилни приложения.

Ruby е проектиран от Yukihiro Matsumoto да бъде лесен, логичен и да не изисква напреднали познания за команди. Ruby on Rails, помогна за разширяване на полезността му в мрежата. И се използва за създаване на рамката за Twitter, Groupon и GitHub. Също така често се използва за разработка на бекенд. JavaScript (не Java) най-често се използва като скриптов език за разработване на интерфейс. Това е най-често използваният език за програмиране за създаване на уебсайтове и игри за използване в Интернет. Като голяма част от неговия синтаксис идва от програмния език C. JavaScript е универсален, работи на всички платформи и е във вашия браузър, като не се изисква инсталация. Всичко, което искате да изградите в мрежата, ще изисква известно познаване на JavaScript.

3. Логика.

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

Има инструменти като Dcoder, които ви дават предизвикателства/проблеми, които ще развият вашите разсъждения. Друг начин за изграждане на логически умения е чрез условно мислене, което по същество означава, ако е това, тогава значи следва онова. Например, да кажем, че ако изкачите повече от половината път нагоре по планината, ще получите кървене от носа, заради промяната в налягането. Ако останете под половината точка, няма да ви се случи. В програмирането този стил на мислене се използва за тестване на променливите спрямо стойностите и подреждане на действия въз основа на изпълнените условия. Може да се разбере и така:

„if (условие за оценяване на True):

тогава изпълни тези неща само за „True“

иначе:

в противен случай изпълни тези неща само за „False“.

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

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

4. Внимание към детайлите.

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

Един от начините да направите това е чрез организация. Вместо да се удряте по челото всеки път, когато пренебрегнете важен детайл, изградете план за дебъгване. От който можете да оцените, прегледате и подобрите работата си. Може би ще правите обиколки през кода, който пишете или да си обещавате да препрочетете подходяща информация по различно време на деня, докато работите с прекъсвания. Каквото и да работи за вас, просто се уверете, че имате система отвъд твърдението ви, че: „После, ще обърна внимание на малките неща“. Планирането на вашето време води до по-продуктивна и ефективна работа.

Подобряването на вашето внимание към детайлите има много общо с това да знаете какво да търсите. За тази цел направете списъци. Когато научите нещо, което знаете, че ще бъде полезно отново и отново, запишете го. Когато имате работа, проучване, нови умения или езици, които да правите или научавате, избройте какво се надявате да постигнете и как го правите. Когато постигнете нещо в списъка, поставете отметка до него. Но не го зачертавайте, може да се наложи да се върнете към него.

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

Друг уважаван от времето начин за подобряване на фокуса е медитацията. Дори да се съсредоточите върху дъха си в продължение на 10-20 минути на ден, ще донесе полза през останалата част от живота ви. Друг изненадващ начин за подобряване на концентрацията? Упражнение. Най-малко 30 минути на ден води до забележимо подобрение на фокуса. Най-важното е да бъдете нежни към себе си. Развийте усещане за това кога да тренирате, въпреки че искате да прекъснете. Но също така не забравяйте да си дадете кратки почивки, когато се чувствате немотивирани или имате проблеми с обръщането на внимание към детайлите. Тогава, когато се върнете, ще бъдете по-свежи и ще използвате по-добре усилията си.

5. Признаване на глупостта.

Това може да бъде и „разбиране как мислят компютрите“. На всички ни е казвано да не правим предположения. Защото здавият разум казва, че това е компютър, но да се доверявате на програма или ред код си е чиста лудост. Компютрите са тъпи и безмилостни. Тяхната сила е тяхната обработваща мощ, а не независима или творческа мисъл. Кодовете ще направят точно това, което им е казано. Дори когато може да изглежда очевидно леко да ощипват инструкциите или да не следват същите отново и отново. Хора като Бил Гейтс и Стивън Хокинг предупреждават, че изкуственият интелект води до апокалипсиса. Ник Бостром, студент по супер интелигентност и директор на Института „Бъдеще на човечеството“ в Оксфордския университет. Е предположил как светът може да бъде унищожен от изкуствения интелект съгласно инструкции за увеличаване на броя на кламерите в света.

Ако този AI е успял да изобрети технология и да построи производствени предприятия… внимавайте. „Как AI може да се увери, че ще има възможно най-много кламери?“ – попитал Бостром. „Едно нещо, което би направил, е да се увери, че хората не са го изключили. Защото тогава ще има по-малко кламери. Така че може да се отърве от хората веднага, защото те биха могли да представляват заплаха. Освен това бихте искали възможно най-много ресурси, защото те биха могли да се използват за направата на кламери. Като например атомите в човешките тела. „. Така че, когато кодирате, уверете се, че въвеждате това, което очаквате да бъде изведено, нито повече, нито по-малко. Програмата не може да прави корекции или подобрения, които не са и казани изначало.

Някои от най-големите постижения в програмирането са създаването на алгоритми. Които карат компютрите да мислят по по-независими, блестящи и продуктивни начини. Потърсете алгоритми като Quicksort, Huffman Compression. Fast Fourier Transform и метода Monte Carlo, за да видите какво се има на предвид. Всичко това спомогна за разработването на основна цел за кодиращите програми. Да накара компютрите да извършват по-голяма тежест чрез изкуствен интелект. Но това става по начин, който е полезен, съсредоточен и не води до унищожаване на нашия вид.

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

6. Абстрактно мислене.

Абстрактното мислене е мислене, осъществено без обекта на присъстващата мисъл или дори физическо отсъствие. Това е основа за кодиране. Тъй като написаният код и това, което той произвежда, никога не може да се наблюдава и измерва физически. Успешните кодери трябва да развият способност да мислят абстрактно, по по-големи и по-сравнителни начини, отколкото са свикнали. Абстрактното мислене също е способността да се мисли за предмет, обект или проект на много нива едновременно. Възможността за балансиране на различни символи, команди и процеси, които са налични. Изпълнявани автоматично, спрямо тези, които трябва по-директно да наблюдавате/обновявате, е важна, често пренебрегвана част от програмирането. Абстрактното мислене често се подобрява чрез дискусии с други хора. Това включва готовност да се видят нещата от различен ъгъл. Или да се направят аналитични изводи от това, което може да изглежда ясно.

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

7. Търпение.

В ужасно горещите дни имате избор да се бунтувате срещу жегата. Да бучите, да се надувате и да оставяте възбудата да ви прегрява още повече. Или можете да и се поддадете. Приемете, че готвите на слънце, представете си как се топите върху настилката и изтривате отделянето от топлината в ума си. Програмирането е изключително трудно. Нищо, което сте прочели тук или сте прочели някъде другаде, не трябва да се тълкува по различен начин. На всички етапи, но особено в началото, трябва да очаквате да почувствате изключително разочарование. Въпреки това, способността ви да устоите на това разочарование и да преминете през него. Без да го оставяте да ви обезкуражи, ще ви служи във всичко, което правите. Гледайте на разочарованието си като инструмент за развиване на вашето търпение.

Когато програмирате, вероятно ще преминете през това преживяване. Вие сте изключително уверени в кода и се кълнете в него. Двойно и тройно го проверявате и пак не ще да работи. Нямате представа защо не работи, какво сте направили погрешно, как да го дебъгнете и така нататък. Това може да бъде смазващо тегло и следващата стъпка е да си отворите бира. Може да се почувствате безполезни или сякаш никога няма да успеете не само в този проект, но и в живота. Е, утешете се от факта, че безброй хора са се чувствали по този начин преди вас. Важното е как се справяте с това чувство. Ако вярвате в способността си да преодолявате, да намерите нов маршрут или дори да започнете от нулата и да се подобрите. Можете и ще имате или поне ще имате по-добър шанс от тези, които се отказват напълно.

Обръщането на внимание към детайлите върви ръка за ръка с отделянето на време. За да се остави смисълът им да се развие. „Подробностите са важни“, каза Стив Джобс. „Струва си да изчакате, за да се оправи.“ Признайте, че когато се борите, това, с което се справяте, е неудобно, но не и нетърпимо. Повтарянето на това, докато не се вкорени у вас, ще бъде много полезно. Нека болката, която изпитвате от разочарованието, ви подтиква да намерите решения. Решенията рядко идват от отчаянието или от най-бързия или най-смелия подход.

Голяма част от търпението е да говорите със себе си. Когато чуете гласа на „никога няма да направите това, този код е невъзможен, просто се откажете“. Бъдете готови да му се противопоставите с по-решителен, по-мек, по-любезен глас, който представлява вашето по-дълбоко и упорито ядро. Един от най-добрите начини за изграждане на търпение е чрез четене или всякаква продължителна дейност, която изисква фокус. Колкото по-дълго можете да правите едно нещо, въпреки изкушението да се откажете или да отидете да направите друго. Толкова по-добра ще бъде способността ви да преодолеете разочарованието от програмирането.

8. Силна памет.

Иновациите и импровизацията са изключително важни за програмирането. В много случаи ще се окажете напълно объркани или изправени пред проблем. Проект или ситуация, за които мислите, че не знаете нищо. Понякога ще сте прави. Често, ако мислите достатъчно добре чрез преживяванията си. Ще осъзнаете, че нещо, което вече сте срещнали, може да се окаже отново полезно. Това може да е от директно кодиране или може да е абстрактен, несвързан спомен. Който по някакъв начин изглежда уместен или просто чрез извикването му ви кара да мислите за нещо полезно за момента. Докато работите със същите езици, ще интернализирате синтаксиса и ще се чувствате по-малко безпомощни. Когато започнете да използвате паметта си повече, като втора природа за извикване на важни команди ще се чувствате много по-добре.

Що се отнася до дългосрочната памет, ще бъдете подпомагани от безкрайни ръководства, уебсайтове и инструменти. Които ще ви помогнат да си припомните важна информация. Тъй като развивате способностите си и искате да завършите проектите си по-бързо. Запаметяването на повече информация ще бъде полезно, но не е нещо, за което да се притеснявате веднага. Що се отнася до краткосрочната памет, ще искате да направите всичко възможно, за да развиете и подобрите естествените си способности. Кодерите трябва да са наясно с много различни части на информацията едновременно.

И да знаят как всички те ще реагират едина на друга. Да сте наясно и да можете да визуализирате дизайна. Потока от данни, алгоритмите, структурите на данните и как те си влияят взаимно, ще ви разграничи от средностатистическия програмист. Отначало, може да се почувствате все едно жонглирате с херинга, пред ненаситни делфини, скачащи навсякъде около вас. Но ще става все по-лесно с времето. Тук паметта и потокът съвпадат. Колкото повече можете да загубите себе си в проекта, толкова по-малко ще изглежда като борба да запомните различни аспекти на работата. Медитационните техники и упражненията за памет също могат да помогнат за това.

9. Научен подход.

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

Но в програмирането голяма част от времето ви ще бъде изразходвано за разработване на решения на проблеми. Които никога не са били решавани или поне не по начина, по който се сблъсквате с тях. Няма да имате информация как да се справите с тях, ще трябва да използвате метода на опит и грешка. Разглеждането на програмирането като изследване или експериментиране ще бъде изключително полезно умение. Ще ви помогне и по отношение на крайните срокове. Тъй като правите нещо ново, можете честно да очаквате свобода на действие. Защото не е ясно колко време ще отнеме правилното решаване на проблем. Следването на тези стъпки ще ви помогне с какъвто и проект да работите.

Започнете с хипотеза. Какво мислите, че ще постигне програмата, която пишете? Или как според вас изглежда една програма, която би могла да реши определен проблем? След това очертавате как ще напишете кода, на хартия или в главата си. След това го оставете и вижте какво сте измислили. Това е последвано от сравняване на това, което сте създали и контрола или това, което програмата е трябвало да направи. Подпомага се и чрез показване на програмата на други хора и получаване на техния принос за това, което сте направили. Съответства ли създадената от вас програма на това, което очаквате? Служи ли на функцията, която трябва да изпълнява? Накрая започвате отстраняване на грешки или приближаване на програмата до идеала, който сте си представяли.

10. Комуникация и съпричастност.

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

Всеки може да каже: „Ето как го правим“ или „просто не разбирате“. Елитният програмист слуша обратна връзка и се коригират, дори ако тези, които я предоставят, не разбират сами думите си. Ефективният кодер може да управлява очакванията, да тълкува неясни желания и честно да оценява и съобщава какво е възможно. А не какво не е възможно. Програмистите са известни със своето его. Но тези, които желаят търпеливо да дават и приемат съвети и насоки, са далеч по-уважавани от ръмжащите програмисти. Които се разпростират само до техните настолни компютри.

Емпатията е изкуството за разбиране, осъзнаване, чувствителност и споделяне на емоциите на другите хора. Когато е съчетано със способността да изразява и дава приоритет на чувствата на другите, това е изключително мощно умение. Комуникацията и съпричастността раждат положителна, действаща отчетност и ще улеснят работата ви в дългосрочен план. Ще разберете по-добре нуждите, чувствата на другите и как вашето поведение и работа се приемат и интерпретират. И независимо от програмирането или трудовия живот, по-добрата комуникация и съпричастност ще ви направят по-щастливи. По-убедителни и по-издръжливи на негативизма на другите и житейските трудности. Това са умения, които изискват проактивно, последователно развитие. Със същото ниво на фокус и ангажираност, които бихте приложили за изучаване на чужд език или работа по важен проект.

Запознайте се с Уроци по програмиране на Python – 11 съвета за начинаещи.