Як навчити молодших програмістів для сьогоднішнього (складного) веб-середовища?


39

В даний час наша компанія розробляє додатки, що складаються, в основному, на веб-серверах Ruby on Rails та купу різних клієнтів REST, від кіоск-систем у Java до вбудованих пристроїв на C / C ++ (крім інтерфейсів для стандартних веб-браузерів). Нам потрібно розширити свою команду, і, не зумівши знайти хороших старших програмістів, ми вирішили докласти певних зусиль для підготовки молодших програмістів, які зростатимуть разом з компанією.

Ми вже подарували їм кілька книг про Ruby and Rails і попросили їх побудувати кілька іграшкових програм, але я зараз розумію, наскільки крута крива навчання для поточного стану веб-програмування.

Коли я розпочав програмування 15 років тому, я використовував лише Delphi та Source Safe і з самого початку мав змогу виробляти корисне програмне забезпечення. Вони були як простими інструментами, і було легко заглибитися у внутрішню роботу довкілля. Повільно я почав використовувати сторонні рамки, перейшов на CVS, SVN і, нарешті, Git, вивчив фрагменти, які створюють сьогоднішню мережу, як HTTP, JavaScript, CSS, REST тощо. Сьогодні, навіть після багаторічного досвіду, я не знаю стільки ж про те, як Ruby on Rails працює всередині, як я робив раніше про Delphi, і для мене це було важливо, щоб я міг підключити основні блоки навчання до інструментів, якими я користувався.

Мені здається, що програмістам, яких я наймаю, знадобиться багато часу, щоб інтегруватися в команду і створити щось корисне, тому що існує стільки речей, щоб навчитися використовувати єдиний фреймворк (Rails): Ruby, HTML, CSS, JavaScript, REST, тестові кейси, доступ до бази даних (магічно вбудований SQL в рамках!), MVC, три різні менеджери пакетів (apt для Ubuntu, gem і bundler для Ruby), ssh, git, Apache та Phusion Passenger для розгортання тощо.

Я відчуваю себе втраченою, оскільки мені вперше потрібно мати справу безпосередньо з молодшими програмістами. Який найкращий спосіб навчити молодших програмістів до найкращих сучасних практик розвитку веб-сторінок, коли існує стільки варіантів вибору?


8
Другий до останнього абзацу звучить так, що ви, можливо, не помітили важливих змін, що відбулися за останні 15 років: програмістів-генералістів практично немає . Щоб хто-небудь знав усі деталі, на які ви посилаєтесь, вони повинні були мати, мабуть, 15 років у галузі. Можливо, ви матимете кращі результати пошуку / підготовки фахівців, які знають одне або два з тих речей, які ви перераховуєте дуже інтенсивно, та створити команду з різноманітних необхідних вам спеціалістів ( тоді перехрещуйте). Крім того, знайти старших інженерів з 15-річним досвідом, як ти, але це непросте завдання.
Джиммі Хоффа

Просто FYI, крута крива навчання означає, що ви дізнаєтесь щось дійсно швидко. Це бентежить деяких людей при неправильному використанні :)
Alternatex

Я завжди використовував цей вираз як значення "важко" (англійська мова не є моєю рідною мовою), але Вікіпедія каже, що це неоднозначно, тому я не знаю тут найкращого вибору: en.wikipedia.org/wiki/Learning_curve :)
Rômulo Ceccon

Відповіді:


39

Багатьом людям ця ідея не сподобається, але я виступаю за це, де можу: незалежно від мови програмування та оточення, якщо вони не мають досвіду та якщо є завдання з технічного обслуговування, які виходять із реальних звітів про помилки клієнтів. з ваших, спробуйте переконатися, що вони покладені на таке завдання хоча б протягом 30-40% (+) свого часу. "Ось звіт про помилку, ознайомтеся з цим, вирішіть його. Якщо ви не знаєте, про що йдеться, спілкуйтеся з досвідченими колегами, гугл, будь-що". Справжньої роботи над реальними проблемами, немаєіграшки, принаймні: не тільки іграшки. Переконайтесь також, що хтось із великим досвідом переглядає, що вони робили, перш ніж його звільняти та відправляти замовнику, звичайно. Переконайтеся, що новий колега отримує чесні відгуки про те, що він зробив від колег та клієнтів. Вибирайте ці завдання ретельно, щоб не перевантажувати їх, але пам’ятайте, що одного дня ви хочете, щоб вони виконували свою роботу самостійно.

Виправлення помилок - це навчання за завданням, яке дозволяє їм працювати над кодом, який фактично виконується, і має певну актуальність (інакше не буде звітів про помилки) і покаже їм у багатьох прикладах, як цього не робити.

Фокус автоматично ставиться на больові точки. Вони почнуть вивчати ті деталі, які насправді створюють проблеми. Це також покладає реальну відповідальність на їх плечі з самого початку, що (хоча технічне обслуговування як таке насправді не є привабливим) може бути досить мотивуючим, якщо це зробити для задоволення замовника / кінцевого споживача. Якщо переглядати те, що вони зробили, ваші люди похилого віку сприйматимуться більш серйозно, тому що вони знають про вплив, якщо все піде не так, і, таким чином, це також спростить інтеграцію в команду, тому що автоматично змусить їх спілкуватися один з одним.

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

Я маю багаторічний досвід роботи раз у раз з людьми, що надходять безпосередньо з коледжу на свою нову роботу розробника, і найгірші результати, які я мав бачити, були, як правило, коли когось, що не має хоч якогось досвіду в технічному обслуговуванні, попросили зробити нову розробку додатків . Просто переконайтесь, що у них завжди є хтось, кого вони можуть попросити про підтримку, якщо вони відчувають себе втраченими.


Я роблю те саме. Гарна відповідь.
Rocklan

Я почав свою кар’єру з виправлення дефектів перший рік. Коли я перейшов до інших проектів, я відчував, що виправлення помилок зробило мене набагато краще, тому що я знав, що не робити.
Брендон

8

Давайте спочатку припустимо, що ви найняли молодших програмістів, які насправді є компетентними. Це не обов'язково є безпечним припущенням, тим більше, що старші програмісти, які беруть інтерв'ю у "когось менш досвідченого, ніж я", ймовірно, не помітять основної некомпетентності.

Але, якщо припустити, що вони компетентні, перший крок - відправити їх у клас. Однотижневий клас обійдеться вам від 2000 до 3000 доларів (США). Однак це надасть їм практичного досвіду з інструктором, який (сподіваємось) розуміє матеріал, та планом уроку, розробленим для того, щоб прискорити їх швидкість. Надіслати комусь книгу та директиву «навчитися цьому» не буде десь поруч настільки цінною, і, швидше за все, коштуватиме дорожче (вартість класу приблизно дорівнює одному витраченому програмісту на тиждень).

Отримавши базові знання, працюйте з ними. Сідайте за сусідній стіл і віддавайте принаймні половину свого часу, щоб переконатися, що вони розуміють вашу справу та ваш спосіб здійснення. Так, це знизить вашу продуктивність, принаймні спочатку, але в перспективі зробить вашу команду в цілому більш продуктивною. І якщо ви знову думаєте про витрати, якщо молодший чоловік витрачає місяць, роблячи неправильно, це, мабуть, приблизно дорівнює півмісяці вашої зарплати.


4

Іграшкові програми, які ви їх просите, повинні реалізувати деякі основні функціональні можливості CRUD, і кожен розробник повинен написати свій власний код. Але ви можете обговорити програму в оглядах коду та запропонувати поради. Їм потрібно спочатку зрозуміти загальну архітектуру програми MVC, якщо можливо будь-яке розумне очікування продуктивності.

Звідти кожен розробник повинен мати можливість самостійно закреслити пов'язані теми, такі як Javascript, CSS, DAL, генератори шаблонів, маршрутизацію тощо. Ви можете давати їм рекомендації щодо того, які теми слід вивчати (це може грунтуватися на найактуальніших потребах вашої компанії), наставляти їх та контролювати їх прогрес. Перемістіть розробників по черзі на прості проекти, які виробляють функціональність, яка рухатиме ваші фактичні зусилля на розвиток в момент, коли вони продемонструють необхідні навички.

Ви можете з’єднати деяких своїх досвідчених розробників з учнем як своєрідною програмою наставництва. Для молодших розробників повинні бути вказівки, щоб вони знали, коли вони можуть перервати наставника та на який термін. Їх наставник може контролювати їх роботу, коли вони починають писати реальний код.

У вас буде кращий час, якщо ви зможете знайти молодих людей, які дуже розумні, інтелектуально цікаві та самозакохані. Я бачив, як цей процес працює; це був попередній підхід мого роботодавця, оскільки він не хотів платити великі гроші за експертів, хоча це було скоріше "мийкою або плаванням" (не було офіційної програми навчання як такої). Його найбільшою проблемою було змусити їх залишатися досить довго, щоб повернути свої інвестиції; завжди була принада краще платити десь в іншому місці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.