20 урока от първите ми няколко месеца работа като програмист
Ето някои случайни уроци, които научих в първите няколко месеца от кариерата ми като софтуерен инженер. Тогава си записвах тези уроци активно, защото така ми беше по-лесно да мина през началната фаза, в която всичко е трудно и неизвестно (когато знаеш, че тази фаза ти носи някакви уроци, които те правят по-добър професионалист, е по-лесно да я изтърпиш). 😅
Включени са някои уроци за придобиване на технически знания, развиване на добри навици в работата ти, справяне със задачи/предизвикателства, интервюта, презентации и т.н.
Списъкът:
1. Винаги можеш да задълбаеш още повече в различните технологии и техните тънкости (винаги има нещо ново, дори и да е малко, което можеш да научиш или да разбереш по-добре).
2. Това да имаш задача/проект, по който работиш, е незаменим инструмент за учене (особено за технически неща в софтуерното инженерство).
3. Трябва да се научиш да управляваш времето си на работа ефективно, за да постигнеш максимална продуктивност (аз използвам Pomodoro техниката).
4. Обръщай внимание на малките неща (спазвай конвенции и добри практики за код, commits, pull requests, Jira задачи и т.н.)
5. Не се страхувай да потърсиш помощ (спестява време)! Моето правило: ако съм вложил усилия за известно време и не мога да се справя с някоя задача, търся помощ, без значение какъв е проблемът.
6. Документирай свършената си работа (за по-добри estimates в бъдеще и за по-голяма увереност в работата ти)!
7. Разбивай големите задачи на по-малки задачи (и не само в Jira), за да е по-лесна работата ти и да отлагаш по-малко!
8. По-добре е да ОБЕЩАЕШ МАЛКО и след това да НАДХВЪРЛИШ очакванията, отколкото да обещаеш много и накрая нищо да не е свършено. Така има по-малко напрежение върху теб и свършената работа е по-качествена.
9. Опитът е най-важното! ТРЯБВА да допуснеш грешки СЕГА, за да може да направиш нещата както трябва ПО-КЪСНО (приложимо за точност в estimates, писане на код и др.)
10. Техническите интервюта са нещо ПОЛЕЗНО за теб! Вместо да имаш манталитета “Сега трябва да се докажа на интервюиращия!”, пробвай “Просто ще споделя знанията, които имам, и ще разбера какво все още не знам, за да го науча след интервюто!”
11. Напълно ОК е да не знаеш нещо по време на интервю! ВСЕКИ забравя неща и НИКОЙ не знае всичко (дори опитни инженери). Не означава, че си ужасен програмист и трябва да се откажеш.
12. Просто запиши пропуските, които си имал по време на интервюто, и РАБОТИ върху тях след това. С времето информацията ще се запамети в главата ти (от цялото това повторение и затвърждаване на теорията, от работа по проекти и т.н.)
13. Техническите демонстрации/презентации всъщност ти помагат много да развиеш добри soft skills (научаваш се да изразяваш идеите си по интересен/разбираем начин, да влияеш на хората, да намираш технически решения в реално време, когато нещо в демонстрацията леко се обърка 😅).
14. Фокусирай се върху това, което е интересно на ПУБЛИКАТА ти (когато хората чуят/видят нещо, което възприемат като полезно за техния собствен живот, обръщат повече внимание на казаното от теб и те възприемат по-положително).
15. Направи презентациите си забавни са слушане (ако съдържанието е представено по скучен начин, хората най-често няма да вземат присърце това, което им споделяш).
16. Тествай всичко и се подготви обстойно преди презентацията (подготви кода, средата си), за да избегнеш случаи, в които нещо се счупва по средата на презентацията, екранът не се вижда поради някаква причина и т.н.
17. Проблем: “Отнема ми много време изцяло да завърша някоя задача, дори да е малка!”
Решение:
- Подходи с очакването, че завършването на всяка задача ще отнеме повече време, отколкото предполагаш преди започване на работата по нея.
- Имай предвид и факта, че не всичко зависи от теб (например ревютата на PR-ите ти, проблеми с интернета/тока/външни системи и т.н.)
- Знай, че има голям шанс по някое време да срещнеш проблеми, които ще те блокират или забавят значително (например някакъв странен неразрешим бъг, оправяне на проблеми по PR-ите ти)
- Накрая планирай като имаш тези неща на ум и просто направи най-доброто, което можеш.
18. Проблем: “Някакъв неочакван бъг ме спира от това да продължа напред и не знам как да се справя!”
Решение:
- Питай някой за помощ (ментор и/или Google 😁) и се опитайте да разрешите проблема заедно.
- Ако не стане, отбележи някъде, че този бъг/проблем съществува и продължи напред с нещо друго за момента.
19. Проблем “Има много неща, които все още не знам (как работи X технология, какво е Y идея в програмирането и как да я приложа)!”
Решение:
- Проучвай и се учи всеки ден (бавно и стъпка по стъпка). Не само когато ТРЯБВА да го направиш (защото задачата ти го изисква), а буквално през цялото време като хоби (за да поддържаш уменията си и да растеш).
- С времето (чрез повторение и трупане на опит) всичко ще започне да придобива смисъл в главата ти (трябва да имаш вяра в процеса).
20. Проблем: “Трудно е да работиш, когато зависиш от работата на други хора и/или от тяхната оценка!”
Решение:
- Постоянно работи върху социалните си умения (точно както работиш и върху техническите си умения).
- С времето ще станеш по-добър в това да комуникираш идеите си ефективно (и така по-лесно ще получиш това, което искаш от другите).
- След време този проблем няма да те дразни чак толкова и всъщност ще е ПО-ДОБРЕ, че има някой, който да те подкрепя и да ти дава обратна връзка, за да можеш да растеш.