Приклади коду, які має побачити кожен розробник
Джерело:
Medium Іноді у вільний час я блукаю GitHub-репозиторіями. Коли я починаю вивчати нові програми, інструменти чи утиліти, я намагаюся подивитися на них у роботі. Для цього я заглядаю в їхній код: це допомагає зрозуміти, як усе працює, які там є модулі та зовнішні залежності. Занурення в технологію дарує неймовірні відчуття і дозволяє отримати нові знання.
У своїй статті я хотів би поділитися найбільш вражаючими прикладами коду, які я зустрів, блукаючи репозиторіями.
Програма управління Аполлон-11
Аполлон-11 - космічний корабель, що доставив людей на Місяць. Бортовий керуючий комп'ютер (AGC), контролював роботу польоту, маючи всього 4 кілобайти фізичної пам'яті. Програмне забезпечення для AGC, написане мовою асемблера, зберігалося у спеціальній пам'яті, доступної лише читання (rope memory). Кілька років тому скановані паперові копії цього коду
виклали в інтернет . Потім хтось переписав кілька модулів у текстові файли та завантажив їх у
GitHub-репозиторій .
Команда інженерів Аполлон-11 доклала величезних зусиль, щоб досягти такого приголомшливого результату. Вони написали на асемблері безліч рядків коду, при тому, що у 1960-ті роки програмування було набагато складніше, ніж зараз. На той час мови програмування мали нижчий рівень абстракції. Крім того, через малопотужний «заліз» розробникам доводилося писати максимально оптимізований код.
Quake III Arena
Quake III Arena це комп'ютерна гра-шутер від першої особи, створена студією id Software. Гра з'явилася в 1990-х, коли індустрія 3D-ігор тільки-но починалася. Для її розробки використовувався ігровий движок id Tech 3. Як і у випадку з місячною програмою Аполлон-11 через обмеження в ресурсах «заліза» код для рендерингу графіки сильно оптимізували. Багато розрахунків ігрового програмування потребують концепції векторної нормалізації, що викликає необхідність обчислення зворотного квадратного кореня. Через те, що розробникам потрібно було вибирати найбільш ефективні алгоритми для комп'ютерної графіки, Quake III Arena використовували розумний підхід для швидкого обчислення зворотного квадратного кореня з використанням обчислень на рівні бітів.
Рівень оптимізації частини коду, який ви бачите, та й взагалі всього коду, за допомогою якого створювалися ігри в 1990-і роки, просто вражає. Сьогодні розробники відеоігор зазвичай не займаються обчисленнями на такому рівні, тому що багато функцій виконуються на рівні ігрового движка.
GNU Compiler Collection
Мова програмування C можна назвати батьком сучасного програмування, тому що вона дуже близька до «заліза», але водночас пропонує гарний рівень абстракції, зрозумілий людині. GNU C-компілятор відноситься до «розкручується» (bootstrapped). Тобто він написаний мовою C з використанням концепції розкручування компілятора. У коді GNU Compiler Collection на GitHub я знайшов найдовший вихідний файл на мові C, який мені коли-небудь доводилося бачити (можуть бути файли і довшими, але я знайшов саме цей).
Chromium
Такі популярні браузери, як Google Chrome, Microsoft Edge та Opera, створені на базі проекту з відкритим кодом Chromium. Цей проект має дві основні залежності: двигун Blink (форк бібліотеки WebCore від команди Webkit) і JavaScript-движок V8, розроблений командою проекту Chromium. Звичайно, код Chromium дуже великий і містить безліч сторонніх модулів, таких як
gRPC і
Skia . Але розробники Chromium зуміли добре структурувати всі ці компоненти. У кодовій базі продумано розділена логіка внутрішніх функцій і логіка інтерфейсу користувача. Завдяки цьому досягається хороша підтримуваність всього проекту.
Крім того, код проекту містить вихідний код Chromium Android і iOS-додатків. Структурування високомасштабованих кросплатформових додатків може бути складним завданням. Проте, Chromium має справді вражаючий поділ коду, що стосується Linux, Windows та Mac.
Gitk
Зараз для керування версіями коду будь-яка команда використовує Git. Ця система контролю версій розроблена Лінусом Торвальдсом (творцем ядра ОС GNU/Linux). У кодову базу Git включено вихідний код Gitk. Gitk - це GUI-додаток, що забезпечує візуальну навігацію по комітах. Щоб подивитися, чим відрізняються два коміти, можна скористатися наступною командою:
$ git diff <commit hash> <commit hash>
Але оскільки Gitk – візуальний інструмент, за його допомогою ми можемо побачити різницю набагато швидше.
Весь вихідний код Gitk міститься в одному
файлі . Код написаний скриптовою мовою Tcl з використанням Tk UI-toolkit — розширення Tcl. Вмістити цілий GUI-додаток в один файл - складне завдання.
Як розробнику підготуватися до співбесіди
Джерело:
Hackernoon Я пам'ятаю свою першу співбесіду. Я тільки-но захистив диплом і влаштовувався на стажування у фінансову компанію в Мадриді. Я дуже нервував, оскільки не знав, як пройде співбесіда, і не був у курсі поточних тенденцій у розробці програмного забезпечення. Це було після Великодня, мені був лише 21 рік, і для мене тоді приємніше було б провести час із друзями на пляжі. Але замість розваг мені довелося готуватись до інтерв'ю.
Перший крок перед кожною співбесідою – це знайомство. У вас запитують ім'я, адресау, спеціальність і таке інше. Після цього ви пройдете особисту співбесіду, вона може бути очною або відеозв'язком. У будь-якому випадку, під час цього інтерв'ю перевірять ваш досвід, знання та навички для посади, на яку ви претендуєте. Потім, ймовірно, вам запропонують написати код, де ви продемонструєте свої можливості у вирішенні проблем чи завдань. Додатково на вас може чекати співбесіда з менеджером проекту або директором компанії. Це залежить від посади, яку ви претендуєте. Процес проходження співбесіди може тривати багато часу. Тому вам потрібно бути терплячим та зберігати спокій. Я підготував для вас кілька порад та рекомендацій щодо цього.
Вивчіть вакансію, щоб переконатися, що вона вам підходить
Іноді, коли шукаємо роботу, ми просто приходимо на співбесіду, не переглядаючи всю інформацію про посаду. Краще заздалегідь уточніть перелік своїх обов'язків та порядок роботи. Також перевірте, чи відповідає компанія та посада вашим вимогам
Намагайтеся бути в курсі тенденцій своєї кар'єри
Велика помилка — не слідувати тенденціям та новим технологіям у своїй роботі. Ймовірно, ви розробник або проект-менеджер, у вас є свій метод роботи на поточній посаді та та сама технологія для всіх ваших проектів. Але, будь ласка, постарайтеся щодня приділяти небагато часу на вивчення нових технологій. У нашій кар'єрі це дуже важливо. Ви повинні бути в курсі нових фреймворків, нових методологій та багато іншого. Це буде мати велике значення для вашого інтерв'ю.
Під час особистого інтерв'ю або відеодзвінка: постарайтеся добре виглядати та розслабтеся
Ваш зовнішній вигляд так само важливий, як і дизайн вашої програми. У вас може бути ідеальний бекенд, але якщо ваша програма має поганий інтерфейс, вам буде важко продати свій продукт. Те саме і з вашим зовнішнім виглядом: на співбесіді ви повинні виглядати якщо не офіційно, то хоча б пристойно. Так ви продемонструєте готовність дотримуватися корпоративних правил. Я знаю, що деякі тут подумають:
«Гей, та я геній, чому мене повинна хвилювати моя зовнішність?» Ну що ж, якщо ти геній і
добре виглядаєш , тоді ти справді справиш враження!
Не поспішайте
Перед співбесідою вам потрібно підготуватися, вивчити теми, відпрацювати алгоритми та вирішення завдань, підготувати мовлення. Деякі з цих процесів є довгими і потребують часу. Тому подбайте про те, щоб мати тут перевагу.
Практикуйтесь
Це залежить від вашого досвіду, але моя рекомендація тут така, що, якщо вам на інтерв'ю доведеться писати код, будь ласка, пишіть його правильно. Для цього вам потрібно навчитися чищення та огляду коду. Це допоможе вам реорганізувати чи покращити деякі його функції.
Продемонструйте свій досвід у очній співбесіді або коді
Намагайтеся показати наявність досвіду. Співбесіда - ідеальне місце, щоб пояснити інтерв'юеру, чому компанія повинна вас найняти. Перед співбесідою
ознайомтеся з основними концепціями , методологіями та передовими практиками програмування.
Виспіться за день до інтерв'ю
Постарайтеся виспатися. Це допоможе вам залишатися зосередженим наступного дня. Якщо ви не знаєте відповіді на будь-які запитання, поставлені на співбесіді,
будь ласка, не брешіть — будьте чесні, це допоможе уникнути багатьох ускладнень у майбутньому. І це допоможе вам побачити свої слабкі сторони, які доведеться покращити.
Довіряйте своїм відповідям
Не сумнівайся у собі. Ніколи.
На співбесіді ви повинні випромінювати безпеку та впевненість для всіх
Якщо у вас немає цієї навички, вам, ймовірно, потрібно попрацювати над нею. Впевненість - це коли ви відповідаєте: "Я не знаю відповіді, але я можу знайти її і відповісти пізніше". Такий варіант відповіді показує безпеку та впевненість.
Проаналізуйте співбесіду
Кожна співбесіда є індивідуальною, але всі вони в чомусь схожі риси. Тому після інтерв'ю вам слід подумати про те, що в ньому вам пройшло добре чи погано. Співбесіда - гарний час, щоб подивитися на себе з боку, на свої переваги та недоліки.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ