Є багато джерел, щоб дізнатися окрім досвідчених колег: книги, блоги вмілих розробників, обмін стеками , лекції / конференції тощо. Огляди коду також є вирішальними, а CodeReview.SE - цінним ресурсом.
Подивимося, як це могло працювати на прикладі.
Приклад
Ви читаєте допис у блозі, де згадується термін "ETL". Ви не знаєте сенсу цього, але з цієї статті ви смутно розумієте, що це свого роду процес чи робочий процес, який переміщує дані з однієї підтримки даних до іншої.
Ви переходите до Вікіпедії та інших ресурсів і отримуєте більш точне бачення речі. Досі не дуже ясно, коли було б корисно використовувати ETL. Зрештою, здається набагато простіше написати запит SQL, який зробить всю роботу, а не витрачати занадто багато часу на створення справжнього ETL.
Щоб відповісти на ці запитання, ви позичите книгу про ETL в місцевій бібліотеці. Це пояснює, що деякі процеси завантаження витяг-перетворення не легко виконати за допомогою простого SQL-запиту: не тільки фаза вилучення може працювати з декількома різноманітними підтримками даних, не лише реляційною базою даних, але й крок перетворення може бути дуже складним для як перевірка / нормалізація даних, так і їх відображення.
Тепер у вас є чітке уявлення про те, що таке ETL, як ним користуватися і особливо, коли вам потрібен ETL і коли це не підходящий інструмент. Тим часом ви реалізували невеликий ETL як особистий проект. Цей проект дозволяє виявити деякі моменти, які недостатньо зрозумілі для вас і не охоплені книгою. Якщо пункти є досить абстрактними і не пов'язані з вихідним кодом, ви ставите запитання на Programmers.SE .
Коли у вас є можливість побудувати її у вашій компанії, ви починаєте її створювати. У вас є кілька питань. Деякі пов'язані з кодом; Ви надсилаєте запитання на " Переповнення стека" . Інші стосуються бази даних; Ви задавати питання по DBA.SE .
Нарешті, існує конференція, проведена висококваліфікованим розробником щодо оптимізації ETL. Ви відвідуєте цю конференцію, і вона дає вам дорогоцінну підказку про вдосконалення, які ви можете зробити для свого проекту.
Ви також починаєте вести блог розробника, який працював над різними ETL роками. Цікаво бачити різні підходи, і через цей блог ви дізнаєтесь про ECCD; Ви зацікавлені, тому Ви запозичили ETL Toolkit Data Warehouse, книга, яка детально розповідає про процес "вилучення, очищення, узгодження та доставки". У цьому ж блозі також згадується безліч додатків, призначених для створення ETL без навичок програмування. Це особливо корисно для ETL, який ви зробили для своєї компанії, оскільки ваш начальник, не технік, постійно просить вас зробити невеликі зміни у тому, що ви зробили.
Відкриття речей
ІМХО, найважча частина, коли ти не маєш наставника чи досвідченого колеги, - це відкривати речі, і, виявивши, я маю на увазі перехід від штату "Я ніколи не чув про це" до "Я чула про це, але не дуже добре знаю, що це ".
Якщо хтось переглядає мій код і каже, що я дійсно повинен почати використовувати деякі стильові умовності, з невеликою цікавістю я можу виявити, що в програмуванні існують різні стилі написання коду, що слід дотримуватися стилю для заданої мови та бази коду, і що багато мов мають інструменти для застосування стилю (наприклад, StyleCop для C #).
Якби ніхто не розповідав мені про стиль, як би я знав, що така річ існує?
Тут дуже зручні ресурси, такі як блоги або обмін стеками. Вікіпедія не допоможе (якщо ви не витрачаєте дні, переглядаючи випадкові сторінки про програмування), а книги рідко говорять про ці речі.
Це ж стосується і шаблонів і практик, або речей, менш пов'язаних з кодом. Наприклад, я навряд чи уявляю, як якийсь розробник прокидається вранці і каже собі, що він повинен щось дізнатися про ITIL, поки він ніколи не думав про ITIL раніше.
Щойно ви відкрили новий термін, дізнатися про нього досить легко. Якщо ви дали новий термін "кодові контракти" і ви розробник C #, ви можете легко знайти достатньо інформації про MSDN (або, ще краще, в книзі Джона Скіта).
Цікавість допомагає
Працюючи з інтернами, я завжди помічаю, що найкращі - це ті, кому цікаво було поза лекціями. Вони можуть знати, що є річ, яка називається функціональним програмуванням, навіть якщо ніхто з їхніх викладачів ніколи про це не згадував, і хоча вони не знають жодної функціональної мови, вони все ще можуть пояснити загальними поняттями, що таке FP і чим вона відрізняється від інших парадигми. Вони можуть знати про Agile, або про Unicode, або про модель з частковою довірою / пісочницею, тільки тому, що вони читали блоги та використовували Stack Exchange, а не просто відвідували їх лекції.
Навіть коли у них немає наставника, вони все одно вивчають все те, про що не кажуть у коледжі.