Како организовати своје мисли на белој табли и разбити свој технички интервју

О организационим способностима и примењеној науци о повезивању многих ствари у занату софтверског инжењерства

Пре неколико недеља, бистри појединац објавио је на Хацкер Невс добро осмишљен и сажет пост о најважнијој вештини у развоју софтвера. У овом посту, Јохн Д. Цоок је истакао цитат из чланка Организационе вештине победити алгоритамско чаробњаштво, Јамеса Хагуеа. Оба аутора се темом организације софтверског инжењерства баве као вештином . Они то супротстављајумајсторство рачунарске науке тестирано у интервјуима, предавано у академској заједници или објављено у блоговима. Њихово размишљање навело ме на размишљање о томе како би наш занат могао да се побољша.

Дубоко размишљајући о порукама оба аутора, временом сам пролазио кроз своја искуства. Суосјећам са онима који доживљавају техничке интервјуе који нису класично обучени. Моје последње искуство пре неколико година било је неорганизовано.

Мој последњи завршени професионални пројекат био је трогодишњи систем који се бавио сложеношћу кода и непрекидном линијом производа. Храбро смо се борили да организујемо растући неред. Обе мисли су имале заједничку нит, јер су то биле мале и велике вежбе у организацији. Вртјели су се око осећања тескобе, рањивости, стреса и срећних тренутака. Дубоко ми је било стало до исхода.

То ме је мотивисало да на свој начин напишем наставак. То је зато што сам био дирнут гравитацијом ових постова. Зашто не одговорити на постављена питања чак и ако се мој пример одговора није подударао чисто? Па сам шутнуо идеју напред и назад и задржао се на једном питању. Јован је питао:

… Како представљате паметан делић организације?

Размишљајући мало о овоме, скренуо сам поглед са екрана и угледао своју белу таблу како стоји преда мном. Глава ми се ковитлала око стубова. Тешки технички интервјуи? Организација? Управљање државом? Тежина која се скупља? Сложеност кода? Можда би вежба на табли са техничким интервјуом могла да буде истакнуто место софтверског инжењерства све време.

Тако сам почео нервозно, сасвим сам, да решавам неке типичне проблеме на табли.

Ретко ко на табли неко добро ради. Морате показати мајсторски процес размишљања и много тога држати у глави. Морате комуницирати, али како комуницирате, игноришући вриштави глас у глави који говори „пожурите!“ док се одушевљено крећете?

Бољи приступ

У великим и малим техничким компанијама постоје технички разговори на табли. Смештени сте у белу собу са таблом са још једном особом која представља компанију. Он или она поставља питање и ми смо позвани да решимо проблем. Тада је обично на саговорнику да натера проблем на решење.

Овде ми глава почиње да измиче контроли из узнемирености и неорганизираности. Трубе почињу да ми свирају у глави и мој мисаони процес постаје искривљен. Време се убрзава. Вид ми се сужава и постајем несвестица.

Можда постоји начин да се успори, убрза и прође кроз процес са организацијом . Нешто што заправо никада раније нисам видео током интервјуисања кандидата током својих година, али можда то може олакшати живце и учинити то пријатним искуством. Прво погледајте плочу и исеците је на три дела.

Три секције биће организоване за привремени простор који ће радити на решавању проблема.

Корак 1: проблем

Обавезно запишите проблем у целој реченици горе. Ово ће вам дати осећај маркера и помоћи ће вам да превладате почетни хит навале „како да решим ово?

Кад записете питање, погледајте га на тренутак и почните размишљати о питањима. Нацртајте линије са довољно простора. Не брините због паузе, обавестите анкетара да размишљате о питањима која бисте поставили.

Корак 2: Претпоставке

Размислите о неким генеричким питањима. Као, који програмски језик више волите? Померите се на десну страну плоче. Нема питања? Проблем може садржати концепте које не знате. Питајте шта су. Затим почните да се бавите проблемима. Прво се питају шта је пример уноса и излаза параметра . Питајте да ли су подаци пресортирани.

Појашњење претпоставки може поједноставити проблем. Док постављате свако питање, сваки пар одговора треба да напишете у подручје претпоставки. Када примите одговоре, узмите секундарни маркер (друге боје) да бисте истакли одговор. Доношење сопствених маркера може вам помоћи.

У глави можемо држати само толико предмета, толико се наслонити на плочу да ухватимо сво знање. Писање питања и одговора успорит ће ваш приступ тако да је сварљив.

Корак 3: приступ

Када имате добар број питања на десној страни табле, физички пређите на леву страну. Овде ћемо почети да разговарамо о приступу решењу.

Овде се јављају врло груби псеудокод, кораци и визуелизације. Обавестите свог анкетара да ово није ваша примена, већ место на којем организујете своја размишљања о стратегији и приступу, лабаво о структурама података и апстрактним врстама података. Извуците решење попут његове слике.

Леви оквир ће показати нешто веома занимљиво по томе што би требало да открије рупе у нашим питањима. Док пишете и размишљате о свом приступу, зауставите свој мисаони процес ако нема одговора на питање. Вратите се у десни одељак и напишите питање и покушајте да добијете одговор.

У апсолутном минимуму, то ће се догодити неколико пута када препознате просечне случајеве, најбоље случајеве и најгоре случајеве . Зависи од стратегије, ограничења и ограничења. Затражите опуштање за приступ као што је „У овом примеру могу ли да користим мали скуп података?“ „Могу ли претпоставити да је улазни низ сортиран?“ Провера ваљаности уноса је такође још један генератор питања.

Корак 4: имплементација кода

Једном када се генерише довољно претпоставки и приступног материјала, то значи да сте сада спремни да с поуздањем пишете кроз свој код имплементације. Подржаће вас обе стране. Означите и покажите на сваки корак док пишете код. Пажљиво закорачите кроз приступ наведен лево од вас. Док пишете своју примену, двапут проверавајте претпоставке напред и назад.

Чак и ако се борите са решењем, ви сте чаробњак за организацију.

Наравно, постоји могућност да се нешто нађе на делу. Вратите се лево и оживите приступ и распитајте се за помоћ. Појављују се нова питања. Идите десно. Идите напред-назад с лева на десно према центру док не успете. Хоћеш.

Буди господар организације. Ако ударите у зид или пронађете нешто што једноставно није у реду, не заборавите да ће вас бочне стране водити.

Бонус 5. корак: тест

Ако сте вежбу завршили са кодом за који мислите да делује, подузмите први корак да бисте разговарали о томе како га треба тестирати. Користите одељак претпоставки као место за писање чистог тест кода, ако то одлучите.

До сада је највероватније сигурно уклонити сва питања из ове области. Обришите питања и покушајте да напишете јединствене тестове. На крају, бићете добро јер сте се организовали са поверењем.

Да сумирам

Ето га. То је било неколико минута чисте организације без пуно теорије. Ослања се на неколико једноставних концепата.

  1. Секција -сечење проблема на комаде од почетка до краја.
  2. Скеле - концепт привремене архитектуре или где постављамо носећу структуру док градимо око себе.
  3. Врата - не бисмо требали да наставимо са следећим кораком док се не будемо удобни и сигурни у послове доброг решавања проблема. Покажите самопоуздање, али активно се ангажујте са „Да ли сам пропустио неку претпоставку?“ или „Да ли мој приступ има рупе?“ пре наставка.
  4. Државном  организацијом се управља визуелно како би се одржала тежина сложености проблема. Избегавајте употребу гумице ако можете.

Закључак

Желео сам да завршим са ситницама које ће мој мисаони процес довести кући.

Не можете ценити подвиг организације док не доживите неорганизованост. - Јохн

Слажем се. Ово се односи на свако људско искуство, укључујући пројекте са кодом, људима и она техничка искуства на белој табли. Али направити корак уназад и одговорити на проблем са организационим процесом подвиг је технике. Проблем и потенцијално решење.

Кључ инжењерства је потенцијална организација . Велика кинетичка енергија долази од чина оштрог и континуираног организовања током времена.

Никада не потцењујте овај феномен.

Само ако је за неорганизовани неред одговорна ваша особа, која вам значи више од студије случаја, можете се овити око ње и ценити побољшања. - Јохн

Сви имамо причу о белој табли. Желео сам да пронађем како истовремено могу да побољшам и поставим задатак свом инжењерском уму. Многи инжењери се емоционално повезују за белу таблу. Сви имамо приче о проклетом поразу.

Већина нашег заната је примењена наука. Ретко надарени могу да се петљају и петљају како би измислили нове структуре података или алгоритме. Наш је језик језика и заната . То је ретко уметност, ако је икада. Има много послаидентификовањем најновијих организационих вештина и одлепљивањем и лепљењем ствари врло добро, узастопно. Можда са неким алатима изван оквира са алаткама. Али будите пажљиви на алате организације који су нам натакнути разменом или ентузијазмом.

Запамтите, постоји понос у побољшању кода кроз организацију и структуру. Написао сам неколико постова о организацији и теми која повезује организацију са сложеношћу система. Постоји јака веза. Због тога сам дубоко ценио Јохнове и Јамесове мисли. То су организоване поруке без журбе које истичу .

Ако се нађете у овој ситуацији, затражите већу таблу!