DEV Community

Димитър Трифонов (dvt32)
Димитър Трифонов (dvt32)

Posted on Originally published at Medium

Развий умението да мислиш на “макро ниво”!

SE
(Първо публикувано на Mar 27, 2021)

Спомних си нещо интересно, което ми казаха, докато карах магистратурата си в университета. 😅

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

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

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

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

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

Та затова в крайна сметка ролята ми в проекта се водеше “design manager”, а не просто “developer”. Реално пак си писах код и се занимавах с проблемите в него, но съществената отговорност, която поемах на хартия, беше това дизайнът на системата да е качествен (в случая се занимавах по-конкретно с дизайна на back-end).

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

Способността да измисляш добри решения на тези “макро проблеми” мисля, че се цени повече, защото се развива по-трудно, а и защото има по-голямо значение за клиента (него не го интересува как точно си написал кода, а дали като цяло продуктът отговаря на нуждите му).

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

И понеже това умение е трудно за придобиване и същевременно наистина важно, естествено се цени високо (по-високо от това само да напишеш кода).

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

Това засега. 😎

Top comments (0)