Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды

Техлид Скайенг Кирилл Роговой (флешхх) конференцияларда презентация жасайды, онда ол әрбір жақсы әзірлеуші ​​үздік болу үшін дамыту керек дағдылар туралы айтады. Мен одан осы оқиғаны Хабра оқырмандарымен бөлісуін өтіндім, Кириллге сөз беремін.

Жақсы әзірлеуші ​​туралы миф ол:

  1. Таза код жазады
  2. Көптеген технологияларды біледі
  3. Тапсырмаларды кодтау жылдамырақ
  4. Көптеген алгоритмдер мен дизайн үлгілерін біледі
  5. Таза кодты пайдаланып кез келген кодты қайта өңдей алады
  6. Бағдарламаланбайтын тапсырмаларға уақыт жұмсамайды
  7. Сіздің сүйікті технологияңыздың 100% шебері

HR идеалды кандидаттарды осылай көреді, сәйкесінше бос орындар да осылай көрінеді.

Бірақ менің тәжірибем бұл өте дұрыс емес екенін айтады.

Біріншіден, екі маңызды бас тарту:
1) менің тәжірибем - өнім топтары, яғни. аутсорсинг емес, өз өнімі бар компаниялар; аутсорсингте бәрі мүлдем басқаша болуы мүмкін;
2) егер сіз кіші курс студенті болсаңыз, онда барлық кеңестер қолданыла бермейді, мен сіздің орныңызда болсам, мен қазір бағдарламалауға назар аударар едім.

Жақсы әзірлеуші: шындық

1: Орташа кодтан жақсы

Жақсы әзірлеуші ​​керемет архитектураны құруды, керемет кодты жазуды және тым көп қателерді жасамауды біледі; Жалпы, ол орташадан жақсы жұмыс істейді, бірақ ол мамандардың алғашқы 1% -ында емес. Мен білетін ең керемет әзірлеушілердің көпшілігі соншалықты керемет кодерлер емес: олар өз істерінде керемет, бірақ олар керемет ештеңе жасай алмайды.

2: Проблемаларды жасаудың орнына оларды шешеді

Жобаға сыртқы қызметті біріктіру керек деп елестетіп көрейік. Біз техникалық шарттарды аламыз, құжаттаманы қараймыз, онда бірдеңе ескіргенін көреміз, бізге қосымша параметрлерді тапсыру керек екенін түсінеміз, кейбір түзетулер енгіземіз, мұның бәрін қандай да бір жолмен жүзеге асыруға тырысамыз және кейбір қисық әдісті дұрыс жұмыс істеуге тырысамыз, сайып келгенде, жұптан кейін. Күндердің күнінде біз бұлай жалғастыра алмайтынымызды түсінеміз. Бұл жағдайда әзірлеушінің стандартты мінез-құлқы бизнеске қайта оралып: «Мен мынаны істедім, анау былай істемейді, анау мүлде жұмыс істемейді, сондықтан оны өзіңіз анықтаңыз. » Бизнесте проблема бар: сіз не болғанын зерттеп, біреумен сөйлесіп, оны қандай да бір жолмен шешуге тырысуыңыз керек. Сынған телефон басталады: «сен оған айт, мен оған хабарлама жіберемін, олар не деп жауап бергенін қараңыз».

Мұндай жағдайға тап болған жақсы әзірлеуші ​​​​өзі контактілерді табады, онымен телефон арқылы байланысады, мәселені талқылайды, егер ештеңе шықпаса, ол дұрыс адамдарды жинап, бәрін түсіндіріп, балама нұсқаларды ұсынады (ең алдымен, басқасы бар). жақсырақ қолдауы бар сыртқы қызмет). Мұндай әзірлеуші ​​бизнес мәселесін көреді және оны шешеді. Оның міндеті бір нәрсеге тап болған кезде емес, бизнес мәселесін шешкенде жабылады.

3: Ең көп нәтижеге жету үшін ең аз күш жұмсауға тырысады, тіпті бұл балдақтарды жазуды білдірсе де

Өнім компанияларында бағдарламалық жасақтаманы әзірлеу әрқашан дерлік ең үлкен шығындар болып табылады: әзірлеушілер қымбат. Ал жақсы әзірлеуші ​​бизнес ең аз жұмсау арқылы максималды ақшаны алғысы келетінін түсінеді. Оған көмектесу үшін жақсы әзірлеуші ​​​​жұмыс берушіге максималды пайда алу үшін өзінің қымбат уақытының ең аз мөлшерін жұмсағысы келеді.

Бұл жерде екі шектен шығу бар. Біреуі, әдетте, барлық мәселелерді архитектурамен алаңдамай, рефакторингсіз және т.б. балдақпен шеше аласыз. Мұның әдетте қалай аяқталатынын бәріміз білеміз: ештеңе жұмыс істемейді, біз жобаны нөлден қайта жазамыз. Тағы бір нәрсе - адам әр түйме үшін тамаша архитектураны ойлап табуға тырысады, тапсырмаға бір сағат және рефакторингке төрт сағат жұмсайды. Мұндай жұмыстың нәтижесі керемет көрінеді, бірақ мәселе бизнес жағынан бірінші және екінші жағдайда әртүрлі себептермен түймені аяқтау үшін он сағатты алады.

Жақсы әзірлеуші ​​​​бұл шектен шығуды қалай теңестіруді біледі. Ол контекстті түсінеді және оңтайлы шешім қабылдайды: бұл мәселеде мен балдақты кесемін, өйткені бұл жарты жылда бір рет түртілетін код. Бірақ бұл жерде мен бәрін мүмкіндігінше дұрыс жасаймын, өйткені әлі әзірленбеген жүз жаңа мүмкіндіктер менің табысқа жетуіме байланысты болады.

4. Бизнесті басқарудың өзіндік жүйесі бар және ондағы кез келген күрделіліктегі жобалармен жұмыс істей алады.

Принциптермен жұмыс істеу Нәтижелердің орындалуы – Сіз өзіңіздің барлық тапсырмаларыңызды қандай да бір мәтіндік жүйеде жазғанда, ешқандай келісімдерді ұмытпаңыз, барлығын итеріңіз, барлық жерде уақытында көрсетіңіз, қазіргі уақытта не маңызды және не маңызды емес екенін біліңіз, сіз ешқашан тапсырмаларды жоғалтпайсыз. Ондай адамдардың жалпы қасиеті, олармен бір нәрсеге келіскен кезде, олар ұмытып кетеді деп ешқашан алаңдамайсың; Сондай-ақ олардың бәрін жазып алып, жауаптары талқыланған мың сұрақ қоймайтынын да білесіз.

5. Кез келген шарттар мен кіріспелерді сұрайды және түсіндіреді

Мұнда да екі шектен шығу бар. Бір жағынан, сіз барлық кіріспе ақпаратқа күмәнмен қарай аласыз. Сізден бұрынғы адамдар кейбір шешімдерді ойлап тапты, бірақ сіз жақсырақ істей аламын деп ойлайсыз және сіздің алдыңызда болған барлық нәрсені қайта талқылауды бастайсыз: дизайн, бизнес шешімдері, сәулет және т.б. Бұл әзірлеушіге де, оның айналасындағыларға да көп уақытты жоғалтады және компаниядағы сенімге теріс әсер етеді: басқа адамдар шешім қабылдағысы келмейді, өйткені олар бұл жігіттің қайтып оралатынын және бәрін бұзатынын біледі. Басқа экстремалды жағдай - әзірлеуші ​​​​кез келген кіріспе, техникалық сипаттамалар мен іскерлік тілектерді тасқа қашалған нәрсе ретінде қабылдайды және шешілмейтін мәселеге тап болған кезде ғана ол өзі істеп жатқан нәрсені істеп жатыр ма деп ойлана бастайды. Жақсы әзірлеуші ​​де осы жерден орта жолды табады: тапсырма әзірлеуге кіріспес бұрын, оған дейін немесе онсыз қабылданған шешімдерді түсінуге тырысады. Бизнес нені қалайды? Біз оның мәселелерін шешіп жатырмыз ба? Өнім дизайнері шешімді ойлап тапты, бірақ шешім неліктен жұмыс істейтінін түсінемін бе? Неліктен топ жетекші осы архитектураны ойлап тапты? Егер бірдеңе түсініксіз болса, барып сұрау керек. Бұл түсіндіру процесінде жақсы әзірлеуші ​​бұрын ешкімнің ойына келмеген балама шешімді көре алады.

6. Айналаңыздағы процестер мен адамдарды жақсартады

Біздің айналамызда көптеген процестер жүріп жатыр - күнделікті кездесулер, кездесулер, скрамдар, техникалық шолулар, кодты шолулар және т.б. Жақсы әзірлеуші ​​орнынан тұрып: «Міне, біз апта сайын жиналып, бір нәрсені талқылаймыз, мен неге екенін түсінбеймін, біз осы сағатты Contra-да өткізе аламыз» дейді. Немесе: қатарынан үшінші тапсырма үшін кодқа кіре алмаймын, ештеңе анық емес, архитектура саңылауларға толы; Мүмкін, біздің шолу кодымыз ақсап және біз рефакторлауымыз керек, кездесуді екі апта сайын қайта өңдейік. Немесе кодты қарау кезінде адам әріптестерінің бірі белгілі бір құралды жеткілікті түрде тиімді пайдаланбағанын көреді, яғни ол кейінірек келіп, кеңес беруі керек. Жақсы әзірлеушіде мұндай инстинкт бар, ол мұндай нәрселерді автоматты түрде жасайды.

7. Басқарушы болмаса да, басқаларды басқаруда тамаша

Бұл дағды «мәселелерді жасаудан гөрі шешу» тақырыбымен жақсы байланысты. Көбінесе біз өтініш берген бос лауазымның мәтінінде менеджмент туралы ештеңе жазылмайды, бірақ содан кейін сіздің бақылауыңыздан тыс мәселеге тап болған кезде, сіз бәрібір басқаларды бір жолмен басқаруға, олардан бір нәрсеге қол жеткізуге тура келеді, егер сіз ұмытып кетті - итеріңіз, олардың бәрін түсінгеніне көз жеткізіңіз. Жақсы әзірлеуші ​​кімнің нені қызықтыратынын біледі, бұл адамдармен кездесуге қоңырау шала алады, келісімдер жаза алады, оларды кідіртуге жібере алады, дұрыс күні еске сала алады, бәрі дайын екеніне көз жеткізе алады, тіпті ол тікелей жауапты болмаса да. бұл тапсырма, бірақ оның нәтижесі оның орындалуына байланысты.

8. Өз білімін догма деп қабылдамайды, үнемі сынға ашық

Әр адам бұрынғы жұмысындағы әріптесін есіне алады, ол өзінің технологиясына ымыраға келмейтін және кейбір дұрыс емес мутациялар үшін бәрі тозақта күйетінін айқайлайды. Жақсы әзірлеуші ​​салада 5, 10, 20 жыл жұмыс істесе, білімінің жартысы шірігенін, ал қалған жартысында білгенінен он есе көп білмейтінін түсінеді. Және біреу онымен келіспей, балама ұсынған сайын, бұл оның эгосына шабуыл емес, бір нәрсені үйрену мүмкіндігі. Бұл оның айналасындағыларға қарағанда әлдеқайда жылдам өсуіне мүмкіндік береді.

Менің идеалды әзірлеуші ​​туралы идеямды жалпы қабылданған идеямен салыстырайық:

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды

Бұл суретте жоғарыда сипатталған тармақтардың қаншасы кодқа қатысты, ал қаншасы байланысты емес. Өнім компаниясындағы даму бағдарламалаудың үштен бірі ғана, қалған 2/3 бөлігі кодпен байланысты емес. Біз көп код жазсақ та, біздің тиімділігіміз осы «маңызды» үштен екіге байланысты.

Мамандандыру, генерализм және 80-20 ережесі

Адам кейбір тар есептерді шешуді үйренсе, ұзақ және көп оқитын болса, бірақ кейін оларды оңай және қарапайым шешсе, бірақ байланысты салаларда тәжірибесі жоқ болса, бұл мамандық. Генерализм – бұл оқу уақытының жартысы өз құзыреті саласына, ал қалған жартысы тиісті салаларға жұмсалады. Сәйкесінше, бірінші жағдайда мен бір істі мінсіз, ал қалғанын нашар орындаймын, ал екіншісінде бәрін азды-көпті жақсы орындаймын.

80-20 ережесі нәтиженің 80% 20% күш-жігерден келетінін айтады. Кірістің 80% 20% тұтынушылардан, 80% пайда 20% қызметкерлерден және т.б. Оқыту кезінде бұл білімнің 80% біз жұмсалған уақыттың алғашқы 20% ішінде алатынымызды білдіреді.

Идея бар: кодерлер тек кодтауы керек, дизайнерлер тек жобалауы керек, аналитиктер талдауы керек, ал менеджерлер тек басқаруы керек. Менің ойымша, бұл идея улы және өте жақсы жұмыс істемейді. Бұл әркімнің әмбебап сарбаз болуы туралы емес, бұл ресурстарды үнемдеу туралы. Егер әзірлеуші ​​​​менеджмент, дизайн және аналитика туралы аз да болса түсінетін болса, ол басқа адамдарды тартпай-ақ көптеген мәселелерді шеше алады. Егер сізге қандай да бір мүмкіндік жасап, содан кейін екі SQL сұрауын қажет ететін белгілі бір контексте пайдаланушылардың онымен қалай жұмыс істейтінін тексеру қажет болса, онда аналитиктің назарын осымен алаңдатпау өте жақсы. Егер сізге бұрыннан барларға ұқсас түймені ендіру қажет болса және сіз жалпы принциптерді түсінсеңіз, оны дизайнерді тартпай-ақ жасауға болады, ал компания бұл үшін сізге алғысын білдіреді.

Барлығы: сіз уақытыңыздың 100% шегіне дейін дағдыларды үйренуге жұмсай аласыз немесе бес салада бірдей уақытты жұмсай аласыз, әрқайсысында 80% деңгейге дейін. Осы аңғал математикадан кейін біз бірдей уақыт ішінде төрт есе көп дағдыларға ие бола аламыз. Бұл асыра сілтеу, бірақ бұл идеяны көрсетеді.

Қатысты дағдыларды 80% емес, 30-50% оқытуға болады. 10-20 сағаттан кейін сіз байланысты салаларда айтарлықтай жақсарып, оларда болып жатқан процестер туралы көп түсінікке ие боласыз және әлдеқайда автономды боласыз.

Қазіргі IT экожүйесінде мүмкіндігінше көп дағдыларға ие болған дұрыс және олардың ешқайсысында сарапшы болмау керек. Өйткені, біріншіден, бұл дағдылардың бәрі, әсіресе бағдарламалауға келгенде, тез жоғалады, екіншіден, біз уақыттың 99% -ында біз қарапайым ғана емес, әрине, ең күрделі емес дағдыларды қолданамыз және бұл кодтауда да жеткілікті, тіпті салқын компаниялар.

Ақырында, оқыту – бұл инвестиция, ал инвестицияда әртараптандыру маңызды.

Не үйрету керек

Сонымен нені және қалай үйрету керек? Күшті компаниядағы әдеттегі әзірлеуші ​​үнемі пайдаланады:

  • қарым-қатынас
  • өзін-өзі ұйымдастыру
  • жоспарлау
  • дизайн (әдетте код)
  • кейде басқару, көшбасшылық, деректерді талдау, жазу, рекрутинг, тәлімгерлік және басқа да көптеген дағдылар

Бұл дағдылардың ешқайсысы іс жүзінде кодтың өзімен қиылыспайды. Оларды бөлек оқыту және жетілдіру қажет, егер бұл жасалмаса, олар өте төмен деңгейде қалады, бұл оларды тиімді пайдалануға мүмкіндік бермейді.

Қандай салаларда даму керек?

  1. Жұмсақ дағдылар - бұл редактордағы түймелерді басуға қатысы жоқ барлық нәрсе. Біз хабарламаларды осылай жазамыз, жиналыстарда өзімізді қалай ұстаймыз, әріптестермен қалай сөйлесеміз. Мұның бәрі анық нәрселер сияқты көрінеді, бірақ көбінесе олар бағаланбайды.

  2. Өзін-өзі ұйымдастыру жүйесі. Жеке мен үшін бұл соңғы бір жылда өте маңызды тақырыпқа айналды. Мен білетін барлық керемет IT қызметкерлерінің арасында бұл ең дамыған дағдылардың бірі: олар өте ұйымшыл, олар әрқашан айтқанын орындайды, ертең, бір аптада, бір айдан кейін не істейтінін нақты біледі. Айналаңызда барлық мәселелер мен барлық сұрақтар жазылатын жүйе құру керек, бұл жұмыстың өзін айтарлықтай жеңілдетеді және басқа адамдармен қарым-қатынас жасауға көмектеседі. Өткен жылы бұл бағыттағы даму техникалық дағдыларымды жақсартудан гөрі мені әлдеқайда жақсартты деп ойлаймын, мен уақыт бірлігінде айтарлықтай көп жұмыс істей бастадым.

  3. Белсенді, ашық ойлы және жоспарлаушы. Тақырыптар өте жалпы және өмірлік маңызды, тек АТ-ға ғана тән емес, сондықтан оларды әркім дамытуы керек. Белсенділік әрекет ету үшін сигналды күтпеуді білдіреді. Сіз оқиғалардың көзісіз, оларға реакция емес. Ашық ойлылық – кез келген жаңа ақпаратқа объективті қарау, жағдайды өз дүниетанымынан және ескі әдеттерден оқшаулап бағалау қабілеті. Жоспарлау – бүгінгі тапсырманың аптаның, айдың, жылдағы мәселені қалай шешетіндігінің нақты көрінісі. Егер сіз болашақты белгілі бір тапсырмадан тыс көрсеңіз, сізге қажет нәрсені жасау әлдеқайда оңай және уақыт өткеннен кейін оның босқа кеткенін түсінуден қорықпаңыз. Бұл дағды мансап үшін өте маңызды: сіз жылдар бойы нәтижеге қол жеткізе аласыз, бірақ дұрыс емес жерде, сайып келгенде, сіз дұрыс емес бағытта қозғалғаныңыз анық болған кезде барлық жинақталған жүкті жоғалтасыз.

  4. Негізгі деңгейге қатысты барлық аймақтар. Әркімнің өз саласы бар, бірақ 10-20 сағат уақытыңызды «шетелдік» дағдыларды жетілдіруге жұмсай отырып, күнделікті жұмысыңызда көптеген жаңа мүмкіндіктер мен байланыс нүктелерін ашуға болатындығын түсіну маңызды. мансаптың соңына дейін жеткілікті.

Не оқу керек

Өзін-өзі ұйымдастыру туралы көптеген кітаптар бар; бұл кейбір бейтаныс жігіттер кеңестер жинағын жазып, тренингтер жинайтын тұтас сала. Сонымен қатар, олардың өмірде қандай жетістіктерге жеткені түсініксіз. Сондықтан авторларға сүзгілер қойып, олардың кім екенін және артында не тұрғанын қарау маңызды. Менің дамуым мен дүниетанымыма жоғарыда сипатталған дағдыларды жетілдіруге байланысты төрт кітап көп әсер етті.

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды1. Дейл Карнеги «Қалай достар табуға және адамдарға әсер етуге болады». Жұмсақ дағдылар туралы культтік кітап, егер сіз неден бастарыңызды білмесеңіз, оны таңдау - жеңіске жету нұсқасы. Ол мысалдарға негізделген, оқуға оңай, оқығаныңызды түсіну үшін көп күш жұмсамайды және алынған дағдыларды бірден қолдануға болады. Жалпы, кітап адамдармен қарым-қатынас тақырыбын қамтиды.

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды2. Стивен Р.Кови «Жоғары тиімді адамдардың 7 әдеті». Шағын команданы үлкен күшке айналдыру қажет болғанда синергетикаға қол жеткізуге баса назар аудара отырып, белсенділіктен жұмсақ дағдыларға дейін әртүрлі дағдылардың қоспасы. Оны оқуға да оңай.

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды3. Рэй Далио «Принциптер». Автор 40 жыл бойы басқарған компанияның тарихына негізделген ашық көзқарас пен белсенділік тақырыптарын ашады. Өмірден алынған көптеген мысалдар адамның қаншалықты алалаушылық пен тәуелді болатынын және одан қалай құтылуға болатынын көрсетеді.

Неліктен кодтауды жаңарту сізді жақсы әзірлеушіге айналдырмайды4. Дэвид Аллен, «Орындалу». Өзін-өзі ұйымдастыруды үйрену үшін міндетті оқу. Оны оқу оңай емес, бірақ ол өмір мен істерді ұйымдастыруға арналған құралдардың толық жиынтығын ұсынады, барлық аспектілерді егжей-тегжейлі қарастырады және сізге нақты не қажет екенін шешуге көмектеседі. Оның көмегімен мен қалғандарын ұмытпай, әрқашан ең маңызды нәрселерді жасауға мүмкіндік беретін өз жүйемді құрдым.

Тек оқу жеткіліксіз екенін түсіну керек. Аптасына кем дегенде бір кітапты жұтуға болады, бірақ әсері бірнеше күнге созылады, содан кейін бәрі өз орнына келеді. Кітаптарды тәжірибеде бірден тексерілетін кеңес көзі ретінде пайдалану керек. Егер сіз мұны жасамасаңыз, онда олар сіздің көкжиегіңізді кеңейту ғана береді.

Ақпарат көзі: www.habr.com

пікір қалдыру