
Сизге кызыктай көрүнбөйбү, сиз жумушуңузду алмаштырып, интервьюдан өтүү зарылчылыгы келип чыкканда, сиз эң биринчи "маектешүүгө даярданышыңыз керек" деп ойлойсуз. HackerRank боюнча маселелерди чечиңиз, Crack коддоо маегин окуп, ArrayList кантип иштээрин жана анын LinkedListтен эмнеси менен айырмаланарын жаттап алыңыз. Ооба, алар сорттоо жөнүндө да сурашы мүмкүн жана тез сорттоо эң жакшы тандоо болот деп айтуу профессионалдуу эмес.
Бирок күтө туруңуз, сиз күнүнө 8 саат программалайсыз, кызыктуу жана майда-чүйдө эмес маселелерди чечесиз жана жаңы жумушуңузда плюс же минус ошол эле нерсени жасайсыз. Бирок, ошентсе да, интервьюдан өтүш үчүн, кандайдыр бир жол менен кошумча даярдануу керек, атүгүл күнүмдүк көндүмдөрүңүздү өркүндөтпөй, азыркы жумушуңузда кереги жок жана кийинки жумушуңузда керек болбой турган нерсени үйрөнүшүңүз керек. Информатика биздин каныбызда бар, эгер түн ортосунда ойготсоңор, эсибизге келбей, жаздык капка көзүбүздү жумуп жазып, дарактын туурасын айланып өтүүгө милдеттүүбүз деген каршы пикириңиздерге, мен Эгер мен циркке жумушка орношсом, менин эң негизгиси трюк так ушул болот деп жооп берет - анда балким ооба, мен макулмун. Бул жөндөм сыналышы керек.
Бирок эмне үчүн сиздин учурдагы жумушуңузга тиешеси жок көндүмдөрдү текшерүү керек? Жөн эле мода болуп калганы үчүнбү? Анткени Google муну жасайт? Же болбосо, сиздин болочок командаңыздын жетекчиси интервьюга чейин бардык сорттоо ыкмаларын үйрөнүшү керек болчу жана азыр ал "ар бир жакшы программист сапта палиндромду табуунун ишке ашырылышын жатка билиши керек" деп эсептейт.
Ооба, сиз Google эмессиз (c). Google эмнени көтөрө алат, аны жөнөкөй компаниялар көтөрө албайт. Google өз кызматкерлеринин маалыматтарын талдап чыгып, олимпиадалык билими бар инженерлер анын конкреттүү милдеттерин чечүүдө жакшы деген жыйынтыкка келген. Андан тышкары, тандоо процессин иштеп чыгуу менен, алар бир нече жакшы инженерлерди жалдай албай калуу коркунучун көтөрө алышат, анткени алар математика маселелерин оңой чече алышпайт. Бирок бул алар үчүн көйгөй эмес, Google компаниясында иштөөнү каалагандар көп, кызмат орду жабылат.
Эми терезеден карап көрөлү, эгер сиздин кеңсеңиздин алдында сиз үчүн иштөөнү каалаган инженерлер чатыр лагерин кура элек болсо жана иштеп чыгуучуларыңыз кийинки жазгы аннотацияны орнотуу үчүн stackoverflow аркылуу көбүрөөк издешсе, Алгоритмдерди рейтингдин татаалдыгына караганда, Google'ду көчүрүү керекпи же жокпу деп ойлонууга убакыт келди окшойт.
Эгер бул жолу Google иштебей калса жана жооп бербесе, эмне кылыш керек? Иштеп чыгуучу жумушта эмне кыларын так текшериңиз. Иштеп чыгуучуларда эмнени баалайсыз?
Кимди жумушка алгыңыз келгени үчүн критерийлерди түзүп, дал ушул көндүмдөрдү текшерген тесттерди иштеп көрүңүз.
ThoughtWorks
ThoughtWorks муну менен кандай байланышы бар? Дал ушул жерден мен өзүм үчүн үлгүлүү маектин үлгүсүн таптым. ThoughtWorks кимдер? Кыскача айтканда, бул Кытайдан, Сингапурдан Америка континенттерине чейин дүйнө жүзү боюнча кеңселери бар жогорку деңгээлдеги консалтинг компаниясы, 25 жылдан бери өнүгүү жаатында консультация берип келе жатат, Мартин жетектеген өзүнүн илимий бөлүмү бар. Фаулер. Эгер сиз программалык камсыздоо боюнча инженер үчүн окуш керек болгон 10 китептин тизмесин издесеңиз, анда алардын 2-3ү ThoughtWorks компаниясынын балдары тарабынан жазылат, мисалы, Мартин Фаулер тарабынан Рефакторинг жана Микросервистерди куруу: Сэмдин майда дандуу системаларын долбоорлоо Ньюман же Эволюциялык Архитектураларды куруу
Патрик Куа, Ребекка Парсонс, Нил Форд.
Компаниянын бизнеси кыйла кымбат кызматтарды көрсөтүүгө негизделген, бирок кардар тажрыйбадан, ички стандарттардан жана, албетте, адамдардан турган керемет сапат үчүн төлөйт. Ошондуктан, бул жерде туура адамдарды жумушка алуу абдан маанилүү.
Кандай адамдар туура айтат? Албетте, ар бир адам үчүн ар кандай болот. ThoughtWorks алардын иштеп чыгуучу бизнес модели үчүн абдан маанилүү критерийлер экенин аныктады:
- жупташып иштеп чыгуу жөндөмдүүлүгү. Бул тажрыйба же чеберчилик эмес, жөндөмдүүлүк. 5 жылдан бери Pair программалоо менен машыгып келе жаткан адамдар келет деп эч ким күтпөйт, бирок башкалардын пикирин кабыл алуу жана уга билүү - бул зарыл жөндөм.
- Тесттерди жазуу жөндөмү жана идеалдуу TDD практикасы
- SOLID жана OOP түшүнүү жана аларды колдоно билүү.
- Пикириңизди билдириңиз. Консультант катары сиз кардардын иштеп чыгуучулары, башка консультанттар менен иштешиңиз керек, эгер адам бир ишти жакшы билсе, бирок аны команданын калган мүчөлөрүнө такыр жеткире албаса көп деле пайда жок.
Эми талапкердин бул өзгөчө көндүмдөрүн баалоо маанилүү. Бул жерде мен ThoughtWorksте интервью алуу тажрыйбам тууралуу айткым келет. Мен Сингапурга барып, тапшырганымды дароо айтам, бирок жумушка алуу процесси бирдиктүү жана өлкөдөн көп айырмаланбайт.
0-этап. HR
Көбүнчө, HR менен 20 мүнөттүк маек. Мен буга токтолбой эле коёюн, мен компаниядагы өнүгүү маданияты, эмне үчүн алар TDD колдонушат, эмне үчүн жуптук программалоо жөнүндө 15 мүнөт сүйлөшө алган HR адамды эч качан жолуктура элекмин. Адатта, HR бул суроого жооп берип, алардын процесси нормалдуу экенин айтышат: иштеп чыгуучулар иштеп чыгышат, тестирлөөчүлөр сынашат, менеджерлер айдайт.
1-этап. Сиз OOP, TDD боюнча канчалык деңгээлде жакшысыз?
Маектешүү башталганга 1.5 саат калганда мага Марс Роверинин симуляторун жасоо тапшырмасы жөнөтүлдү.
Марстын миссиясыРобот-роверлердин тобун НАСА Марстагы платого кондурмакчы. Кызыктуу тик бурчтуу бул плато, алардын борттогу камералары Жерге кайра жөнөтүү үчүн курчап турган рельефтин толук көрүнүшүн алуу үчүн роверлер тарабынан багыт алышы керек. Ровердин орду жана жайгашкан жери х жана у координаттарынын айкалышы жана төрт негизги компас чекиттеринин бирин билдирген тамга менен көрсөтүлөт. Навигацияны жөнөкөйлөтүү үчүн плато торчого бөлүнгөн. Мисал позициясы 0, 0, N болушу мүмкүн, бул ровер төмөнкү сол бурчта жана түндүктү караган дегенди билдирет. Роверди башкаруу үчүн NASA жөнөкөй каттарды жөнөтөт. Мүмкүн болгон тамгалар: "L", "R" жана "M". "L" жана "R" роверди учурдагы ордунан жылбай туруп 90 градус солго же оңго айлантат. 'M' бир сетка чекити алдыга жылдыруу жана ошол эле аталышты сактоону билдирет.
(x, y) дан түндүктү караган квадрат (х, у+1) деп эсептейли.
КИРҮҮ:
Киргизүүнүн биринчи сабы платонун жогорку оң координаттары, төмөнкү сол координаттар 0,0 деп кабыл алынат.
Киргизүүнүн калган бөлүгү - орнотулган роверлерге тиешелүү маалымат. Ар бир ровердин эки линиясы бар. Биринчи сап ровердин абалын көрсөтөт, ал эми экинчи сап роверге платого кандайча изилдөө жүргүзүү керектиги тууралуу көрсөтмөлөрдүн сериясы. Позиция х жана у координатасына жана ровердин багытына туура келген боштуктар менен бөлүнгөн эки бүтүн сандан жана тамгадан турат.
Ар бир ровер ырааттуу түрдө бүтөт, бул биринчиси кыймылдап бүтмөйүнчө экинчи ровер кыймылдай баштабайт дегенди билдирет.
ЧЫГЫШ:
Ар бир ровердин чыгышы анын акыркы координаттары жана рубрикасы болушу керек.
NOTES:
Жөн гана жогорудагы талаптарды аткарыңыз жана чаң соргуч ага бирдик сыноолорун жазуу менен иштээрин далилдеңиз.
Колдонуучу интерфейсинин кандайдыр бир формасын түзүү алкактан тышкары.
TDD (Test Driven Development) ыкмасын колдонуу менен көйгөйдү чечүү артыкчылыктуу болот.
Кыска убакыттын ичинде биз толуктугуна караганда сапатка көбүрөөк кам көрөбүз.
*Мен мага жөнөтүлгөн тапшырманы жарыялай албайм, бул бир нече жыл мурун берилген эски тапшырма. Бирок мага ишен, негизи баары ошол эле бойдон калат.
Баалоо критерийлерине өзгөчө көңүл бургум келет. Канча жолу сиз талапкер үчүн маанилүү нерселер аудит учурунда таптакыр маанилүү эмес жана тескерисинче болгон жагдайга туш болдуңуз. Баардыгы эле сиздикиндей ойлой бербейт, бирок көптөр сиздин баалуулуктарыңызды так айтылган болсо, кабыл алып, аткара алышат. Ошентип, баалоо критерийлеринен бул этапта эң маанилүү көндүмдөр экени дароо көрүнүп турат
- TDD;
- OOP колдонуу жана сакталуучу код жазуу жөндөмдүүлүгү;
- жуп программалоо жөндөмдөрү
Ошентип, мага ошол 1.5 саатты код жазуунун ордуна, тапшырманы кантип аткарарымды ойлонуу керектигин эскертишти. Кодду чогуу жазабыз.
Телефон менен сүйлөшкөнүбүздө балдар ким экенин, эмне менен алектенерин кыскача айтып, өнүгүүнү баштоону сунушташты.
Интервью учурунда мен бир да жолу интервью берип жатканымды сезген эмесмин. Сиз командада кодду иштеп чыгууда деген сезим бар. Бир жерде тыгылып калсаң, алар жардам беришет, кеңеш беришет, талкуулашат, жада калса кантип эң жакшы кылуу керектиги боюнча бири-бири менен талашып-тартышат. Интервьюда мен JUnit 5те ыкманын Exception алып келерин кантип текшерүүнү унутуп калдым - алар тестти жазууну улантууну сунушташты, ал эми алардын бири муну кантип жасоону издеп жаткан.
Маектешүүдөн бир нече саат өткөндөн кийин, мен конструктивдүү пикир алдым - мага эмнеси жакты, эмнеси жакпады. Менин учурда, мен нөл объектисине альтернатива катары Sealed класстарын колдонгонум үчүн макташты; анткени кодду жазуудан мурун мен псевдокоддо мен роверди кантип башкаргым келет деп жаздым жана ошону менен класстардын, жок дегенде роботтун API'сине катышкандардын эскиздерин алдым.
2-кадам: Бизге айт
Интервьюга бир жума калганда мени кызыктырган ар кандай темада презентация даярдоону суранышты. Формат жөнөкөй жана тааныш: 15 мүнөт презентация, 15 мүнөт суроолорго жооп берүү.
Мен Боб байкенин Таза архитектурасын тандадым. Анан дагы бир нече кишиден интервью алдым. Бул менин англис тилинде презентациялоодогу биринчи тажрыйбам болчу жана, балким, стресстик кырдаалда болсом, мен аны көтөрө алмак эмесмин. Бирок, мен бир да жолу интервьюда болгонумду сезген эмесмин. Баары кадимкидей - мен аларга айтам, алар кунт коюп угат. Салттуу суроо-жооп сессиясы да интервьюга окшобой эле, менин презентациямда суроолор “чөгүп кетүү” үчүн эмес, аларды чындап кызыктырган суроолор берилгени көрүнүп турду.
Интервьюдан бир-эки саат өткөндөн кийин мен пикир алдым – презентация абдан пайдалуу болду жана алар чындап эле угушту.
3-этап. Өндүрүштүн сапаты
Бул техникалык интервьюлардын акыркы этабы экенин эскертип, менден кодду үйдө өндүрүшкө даяр абалга алып келүүнү, андан кийин кодду карап чыгууга жөнөтүүнү жана тапшырмага коюлган талаптар өзгөрө турган интервьюларды пландаштырууну сурандым. өзгөртүүнү талап кылат. Алдыга көз чаптырсам, кодексти кароо сокур түрдө жүргүзүлүп жатат, рецензенттер талапкер кайсы кызматка тапшырып жатканын билишпейт, анын резюмесин көрүшпөйт, аты-жөнүн да көрүшпөйт деп айта алам.
Телефон шыңгырап, монитордун ары жагында дагы бир-эки жигит бар экен. Баары биринчи интервьюдагыдай эле: башкысы - TDD жөнүндө унутпаңыз, эмне кылып жатканыңызды жана эмне үчүн экенин айтыңыз. Эгерде сиз буга чейин TDD менен машыкпасаңыз, анда мен аны дароо баштоону сунуштайм, анткени бул компанияларда зарыл болгон үчүн эмес, ал сиздин жашооңузду кыйла жөнөкөйлөтөт, эгер кааласаңыз, стресс деңгээлин төмөндөтөт. Браузер аркылуу гана кайра чыгарууга мүмкүн болгон ката үчүн мүчүлүштүктөрдү оңдоочу менен кантип издегениңизди эсиңиздеби? Эми элестетип көрүңүз, сиз интервью учурунда ушундай ката кетиришиңиз керек болот - сизге бир нече боз чачтар кепилденет. TDD менен эмне алабыз? Биз кодду өзгөрттүк жана күтүлбөгөн жерден азыр тесттер кызыл экенин түшүндүк, бирок биз биринчи жолу түшүнө албай жаткан ката эмнеде? Макул, биз интервью алуучуларга "Ой" дейбиз, Ctrl-Z баскычтарын басып, алдыга кичинекей кадамдарды жасай баштайбыз. Ооба, сиз өзүңүздө TDDди колдонуу менен өнүктүрүү жөндөмүн, тесттериңиз жарым күн бою кызыл эмес, туруктуу жашыл болушу үчүн максатка баруу жөндөмүн өрчүтүшүңүз керек, анткени "сизде рефакторинг көп." Бул так эле сакталуучу код жазуу же жемиштүү код жазуу сыяктуу чеберчилик.
Ошентип, сиздин кодуңузду канчалык жакшы өзгөртүүгө болот, сиз кандай дизайндан баштоону ойлогонуңузга, анын канчалык жөнөкөй экендигине жана тесттериңиздин канчалык жакшы экендигине жараша болот.
Маектешүүдөн кийин мен бир нече сааттын ичинде пикир алдым. Бул этапта мен дээрлик бүтүп калганымды түшүндүм жана "Фаулер менен жолугууга" аз калды.
4-этап. Финал. Техникалык суроолор жетиштүү. Биз сиздин ким экениңизди билгибиз келет!
Чынын айтсам, суроонун мындай түзүлүшү мени бир аз таң калтырды. Менин кандай адам экенимди бир сааттык сүйлөшүүдө кантип түшүнсө болот? Анан дагы, мен өзүмдүн эне тилим эмес тилде сүйлөп жатсам, муну кантип түшүнөсүң, ачыгын айтсам, өтө начар, тилдүү. Мурунку интервьюларда жеке мен үчүн суроолорго жооп бергенден көрө сүйлөшүү жеңил болуп, акцент күнөөлүү болчу. Интервью алгандардын жок дегенде бири азиялык болгон - жана алардын акценти, айталы, европалык кулакка бир аз өзгөчө. Ошондуктан, мен проактивдүү мамиле жасоону чечтим - өзүм жөнүндө презентация даярдап, интервьюнун башында ушул презентация менен өзүм жөнүндө сүйлөшүүнү сунуштайм. Эгер алар макул болушса, анда мен үчүн жок дегенде суроолор азыраак болот, эгер алар сунуштан баш тартышса, менин жашоомдун 3 сааты презентацияга кеткендей кымбат эмес. Бирок презентацияңызга эмне жазуу керек? Өмүр баяны – Ошол жерде төрөлүп, ошол кезде мектепте окуган, университетти аяктаган – бирок кимге кызык?
Эгер сиз Google'да Thoughtworks маданияты жөнүндө бир аз болсоңуз, анда Мартин Фаулердин [https://martinfowler.com/bliki/ThreePillars.html] макаласын таба аласыз, анда 3 түркүктү: Туруктуу бизнес, программалык камсыздоонун мыктылыгы жана социалдык адилеттүүлүктү сүрөттөгөн.
Мен үчүн программалык камсыздоонун мыктылыгы мурунтан эле текшерилген деп коёлу. Туруктуу бизнести жана социалдык адилеттүүлүктү көрсөтүү үчүн калды.
Анын үстүнө мен акыркысына токтолууну чечтим.
Баштоо үчүн, мен ага ThoughtWorks эмне үчүн экенин айттым - мен Мартин Фаулердин блогун колледжде окуп жүргөндө окуп жүргөнүмдө, таза кодду жакшы көрчүмүн.
Долбоорлор да ар кандай бурчтан көрсөтүлүшү мүмкүн. Ал ошондой эле бейтаптардын жашоосун жеңилдеткен, ал тургай, имиштерге караганда, бир адамдын өмүрүн сактап калган медицина үчүн программалык камсыздоону иштеп чыккан. Мен банктар үчүн программалык камсыздоону да иштеп чыктым, бул дагы жарандардын жашоосун жеңилдетти. Айрыкча бул банкты өлкөнүн 70% калкы колдонсо. Бул Сбербанк жөнүндө эмес, ал тургай Россия жөнүндө да эмес.
Мен жөнүндө билгиңиз келеби? макул. Менин хоббим фотография, тигил же бул колумда 10 жылдай фотоаппарат кармап келем, көрсөтүүдөн уялбайм. Ошондой эле, бир убакта мен мышыктардын баш калкалоочу жайына жардам бергем: туруктуу үйгө муктаж болгон мышыктарды сүрөткө тарттым. Ал эми жакшы сүрөттөр менен мышыкты жайгаштыруу бир топ жеңил болот. Мен жүз мышыкты сүрөткө тартсам керек :)
Акыр-аягы, менин презентациямдын 80% мышыктарга толду.
Презентациядан кийин дароо HR мага интервьюнун жыйынтыгын билбей турганын жазды, бирок бүт офис мышыктарга таң калган.
Акыр-аягы, мен пикир күттүм - адам катары бардыгын канааттандырдым.
Бирок акыркы сүйлөшүүдө HR сылыктык менен Социалдык адилеттүүлүк абдан жакшы жана зарыл экенин, бирок бардык долбоорлор мындай эмес экенин айтты. Анан ал мени коркутуп жатабы деп сурады. Жалпысынан алганда, мен Социалдык Адилеттиктен бир аз ашып кеттим, ушундай болот :)
жыйынтык
Натыйжада, мен Сингапурда бир нече айдан бери Thoughtworks компаниясында иштеп жатам жана бул жерде өтө көп компаниялар жазга караганда көбүрөөк билимге ээ болгонуна карабастан, Google'дун "мыкты интервью ыкмаларын" кабыл алып, жалбырактарды жана тактаны коддоо үчүн колдонуп жатканын көрүп жатам. Symfony, RubyOnRails (Керектүү нерсенин астын сызыңыз) жумушта талап кылынбайт. Инженерлер интервьюга “даярдануу” үчүн бир жума эс алышат.
Thoughtworks компаниясында талапкерге адекваттуу талаптардан тышкары, төмөнкү принциптер биринчи орунда турат:
Интервью алуу кубанычы. Анын үстүнө эки тарапка тең. Чынында эле, эгер сиз мыкты кадрларды алгыңыз келсе (жана ким жок?), анда интервью бул кулдар тандалган базар эмес, иш берүүчү да, талапкер да бири-бирин баалаган шоу. Ал эми талапкер жагымдуу эмоцияларды компания менен байланыштырса, анда ал ушул компанияны тандашы мүмкүн.
Калыстыкты азайтуу үчүн бир нече интервьюерлер. Thoughtworksте жуптук программалоо иш жүзүндө стандарт болуп саналат. Ал эми бул практика башка аймактарга да колдонулушу мүмкүн болсо, TW аракет кылат. Ар бир этапта интервью 2 адамдан өткөрүлөт. Ошентип, ар бир адам, жок эле дегенде, 8 адам тарабынан бааланат, жана TW ар кандай тек-жайы, ар кандай багыттары (тек гана техникалык эмес) жана жынысы менен интервью алуучуларды тандоого аракет кылат.
Акыр-аягы, жумушка алуу чечими кеминде 8 адамдын пикири боюнча кабыл алынат жана эч ким чечүүчү добушка ээ эмес.
Атрибутка негизделген жалдоо Талапкердин жактырган же жактырбаганына жараша чечим кабыл алуунун ордуна, ар бир ролго жана ар бир этапка баалануучу атрибуттарды камтыган форма иштелип чыгат. Ошол эле учурда, баалоодо, белгилүү бир чеберчиликтеги тажрыйбаны эмес, аны колдонуу жөндөмүн баалоо сунушталат. Ошентип, эгерде талапкер TDD сыяктуу кандайдыр бир көндүмдөрдү колдоно албаса, бирок ошого карабастан аларды колдонууга аракет кылса, аларды кантип туура колдонуу керектиги боюнча кеңештерди угса, анда анын интервьюдан өтүүгө толук мүмкүнчүлүгү бар.
Билими тууралуу сертификаттар талап кылынбайт TW информатика боюнча эч кандай сертификатты же билимди талап кылбайт. Көндүмдөр гана бааланат.
Бул менин чет элдик компаниялар менен болгон биринчи интервьюм, ага даярдануунун кереги жок. Ар бир этаптан кийин мен чарчаган жокмун, тескерисинче, мыкты тажрыйбаларды колдоно алганыма, монитордун аркы тарабындагы адамдар баалап, күн сайын колдонуп жатканына сүйүндүм.
Бир нече ай өткөндөн кийин, мен күткөн толугу менен акталды деп айта алам. ThoughtWorks кадимки компаниядан эмнеси менен айырмаланат? Кадимки компанияда сиз жакшы иштеп чыгуучуларды жана жакшы адамдарды таба аласыз, бирок TWде алардын концентрациясы диаграммалардан алыс.
Эгер сиз ThoughtWorksке кошулгуңуз келсе, биздин ачык позицияларды көрө аласыз
Ошондой эле кызыктуу вакансияларга көңүл бурууну сунуштайм:
Жетекчи программалык камсыздоо инженери: , , ,
Программалык камсыздоо боюнча улук инженер: , , ,
Программалык камсыздоо инженери: , ,
Маалыматтын улук инженери:
Сапат боюнча аналитик:
Инфраструктура: , ,
(Сизге чынын айткым келет, бул шилтеме реферал шилтемеси, эгер сиз TWге кирсеңиз, мен жакшы бонус алам). Өзүңүзгө жаккан кеңсени тандаңыз, өзүңүздү Европа менен чектебешиңиз керек, анткени ар бир 2 жыл сайын TW сизди башка өлкөгө көчүрүүгө кубанычта болот, анткени... Бул ThoughtWorks саясатынын бир бөлүгү, ошондуктан маданият жайылып, гомогендештирилет.
Комментарийлерде суроолорду берүүдөн тартынбаңыз же менден сунуштарды сураңыз.
Тема кызыктуу болуп көрүнсө, ThoughtWorksто иштөө кандай экенин жана Сингапурда жашоо кандай экенин жазам.
Source: www.habr.com
