Як розробляють Facebook
На сьогоднішній день проект Facebook представлений на клієнтській стороні мобільними сайтами m.facebook.com , 0.facebook.com , мобільними додатками Facebook для iPhone і Android, а також сайтом www.facebook.com , який у вузьких колах (приблизно 750 млн жителів цієї планети) користується найбільшою популярністю.
Розмір проекту накладає певні обмеження на структуру команди розробників. Якщо пробігтися по вакансіям компанії , то можна скласти наступну грубу категоризацію:
- Розробники продукту . Вони найчастіше зайняті розробкою функціоналу, який спостерігають відвідувачі сайту, проте продуктом цілком може бути і якась внутрішня система, у якої теж може бути приємний дизайн і юзабельние інструменти. Основні інструменти - PHP, CSS, JavaScript.
- Інфраструктурні програмісти . Сюди можна віднести як людей, що займаються безпосередньо інфраструктурою сайту (реплікація даних між дата-центрами, підтримка пошуку і рекламної системи), так і розробників, що займаються розробкою та доопрацюванням Hadoop, тренуванням і тестуванням моделей штучного інтелекту, обробкою і стисненням фото і т.д . Інструменти роботи - C + +, Java, Erlang, Python, PHP.
Крім розробників команда, в залежності від стадії проекту, може містити нульове і вище кількість наступних людей:
- Дизайнери . В основному займаються створенням поведінкової моделі користувача і написанням інтерфейсу, що обслуговує цю модель. Також стежать за уніфікацією елементів дизайну. Для викорінення останньої проблеми найчастіше пишуть всякі таги в XHP , щоб відбити у розробників бажання писати CSS і JavaScript для елементів, які вже створені.
- Аналітики даних . Мають розумінням Hive, Hadoop (як користувачів) і найчастіше дипломом за фахом «Статистика». На ранніх порах розробки продукту можуть дати відповіді на питання про нинішні тенденції поведінки користувачів. Пізніше можуть інтерпретувати результати A/Б-тестування, розглянути результати запуску в залежності від країни або мови користувача.
- Менеджер продукту . Іноді є і менеджером проекту, проте зважаючи на переваги невеликим командам найчастіше займається суто продуктом. Після устаканіванія спільного бачення продукту разом з дизайнером розробляє макети, що описує кінцеву мету розробки. Якщо продукт оперує з продуктами інших команд (а всередині тісно-інтегрованого проекту це більш правило, ніж виняток), сповіщає про плани своєї команди інших. Займається демонстрацією перша бета-версія зацікавленим особам та командам. Варто зробити відступ і зазначити, що незважаючи на ніби як управлінську посаду, менеджер продукту не управляє власне розробниками - структурно розробник по кар'єрних сходах рано чи пізно підкориться віце-президенту з розробки, а от менеджер продукту в результаті підпорядковується віце-президенту по продуктовій стратегії.
Що стосується інструментів для спільної розробки, то компанія ще на дуже ранній стадії свого розвитку робила упор на якість внутрішнього інструментарію. Цьому почасти допомагав той факт, що в період критичного росту віце-президентом компанії був Дастін Московіц, який не тільки самостійно займався розробкою деяких інструментів, а й згодом заснував стартап , який саме цим і займається. Що ж використовується сьогодні?
- Групи на Facebook - закриті групи використовуються для обговорення макетів, поширення інформації про надзвичайні ситуації та планів на майбутнє. Демократична суть груп дозволяє також кому завгодно - від розробника і до гендиректора - внести ідею і подивитися, як до цього ставляться інші учасники команди.
- Phabricator - інтегрований пакет для написання, тестування, рецензій та релізу коду.
- Дуже схожий на інструмент для управління завданнями. Тісно інтегрований з Phabricator. У більшості випадків замінює електронну пошту.
Опубліковано: 01/09/11 @ 11:54
Розділ Різне
Рекомендуємо:
Дайджест тижня, 2 вересня
Witology: цікава соціальна мережа, за допомогою якої хочуть побудувати колективний розум
Експеримент: 5000 $ в ПАММ рахунки. Частина 2.
Таблетка аспірину: корисні UX-евристики
21-й випуск подкасту «Відверто про IT-кар'єризм». DOU Hackathon - Kharkov edition