Організовуємо робочий процес максимально ефективно


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

Наш читач, Стенлі Вінтергрін, поділився з Вами порадами з організації і оптимізації робочого процесу при створенні додатків.


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

 

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

Робочий простір (working place)

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

Приклади:

  • Для розробки додатків під Android я використовую AndroidStudio – він включає достатній функціонал і дуже зручний (але, на жаль, тільки на потужних машинах).
  • Для написання простих додатків на C++ (фріланс для студентів) я визнав достатнім використання Sublime Text і gcc. Дуже невимогливий функціонал. Таким чином, я створив систему, за допомогою якої можу легко писати додаток на моєму домашньому комп’ютері на Windows і без проблем продовжувати роботу на нетбуку слабкої потужності на Debian.
  • Набув досвіду в розробці додатка на Unity3D. У даному разі я, звичайно, використав Unity3D, але він насправді розв’язує лише частину задач. Наприклад, для редагування скриптів на C# треба використати спеціальну утиліту. Мені не сподобалося пропоноване рішення MonoDevelop, я визнав його занадто вимогливим (з урахуванням роботи на відносно слабкій машині) для того, щоб писати невеликі скрипти. Тому для цього проекту я використав комплекс з Unity3D і Notepad++.

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

Каталогізація (folder)

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

Приклад:

Я є великим фанатом хмарних технологій, тому для розробки використовую Dropbox. Там у мене створена власна і, що важливо, зручна для мене ієрархія. Хочу сказати, що важливо, щоб у Вас все було розкладено по полицях.

Dropbox має дуже зручний, на мою думку, клієнт на Android, і я можу отримати доступ до файлів проекту скрізь і майже завжди. Розгортаючись на новому місці для роботи, все, що мені потрібне, – це зайти у сховище з іншого комп’ютера і через браузер отримати доступ відразу до всіх файлів проекту. Звичайно, цей спосіб працює саме в моєму випадку, тобто я завжди ношу з собою телефон з мобільним Інтернетом і працюю тільки в місцях з доступом до Інтернету.

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

Контроль версій (version control)

Якщо Ви ще не використовуєте систему контролю версій, то не гайте часу, вивчайте цю тему. Чим раніше Ви почнете її застосовувати, тим швидше станете ефективнішими. У розробці, звичайно, це незамінний інструмент. Тут треба сказати, що головне – використати цю технологію правильно і користуватися зручними інструментами. Таким чином, Ваша розробка не стоятиме на місці. Код розвиватиметься, а про всі зміни піклуватиметься система контролю версій. Якщо у Вас є доступ до Інтернету, то Ви так само отримуєте збереження коду та історії на сервісі, до якого можете отримати доступ з будь-якого місця, і захищаєте себе від втрати коду і його псування.

Важливо не плутати використання системи контролю версій і зберігання супутніх проекту файлів. Ця частина відповідає за збереження саме тієї частині додатка, яка потрібна для його складання. Я часто бачу, як ця система використовується не зовсім правильно. У репозиторій заливається весь проект, створений в якій-небудь IDE, що я вважаю хибним – репозиторій тільки для коду. Там не повинні лежати файли налаштувань проекту, тим що більше ті, що відносяться до конкретної операційної системи. Те саме можна сказати, якщо Ви маєте деякий склад ресурсів для складання і запуску проекту. Оцініть самі, що це являє собою.

Приклад:

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

Особисто я використовую git і сервіси: GitHub для особистих проектів, Assembla для роботи. А в процесі роботи я вирішив для себе, що зручніший варіант – користуватися консольною версією, а не вбудованими в IDE аналогами. В управлінні швидше, працює з будь-яким git-репозиториями, і на всіх машинах однаково. Знайдіть кращий варіант для Вашої ситуації та особистих переваг.

Замітки (notes)

Приклад:

Мені в розробці допомагає сервіс OneNote – хмарний нотатник з відмінними десктопною, онлайн і Android версіями. Користуюсь ним для опису елементів та етапів розробки додатків: дизайни, моделі даних, локалізація, думки вголос. Установлений додаток на моєму телефоні дозволяє не втрачати перебіг думки, навіть якщо я в дорозі або не на роботі. Рекомендую додатково використовувати паперовий нотатник для тих самих цілей. Зверніть увагу, що на папері зручніше створювати замальовки і робити нотатки.

Task manager

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

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

Приклад застосування Todoist:

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

Висновок

Ці п’ять моментів я вважаю найголовнішими (хоча я сам використовую набагато більше) і хочу, щоб мій особистий досвід допоміг Вам у застосуванні корисних сервісів для якіснішої і швидшої розробки відмінних додатків. Отже, групуйте усі Ваші проекти і все з ними пов’язане відразу в зрозумілому і зручному Вам вигляді. Перепробуйте різні способи і виберіть власний. Додайте сюди все необхідне для Вашої зручності. Знайдіть таймер за типом Toggl. Якщо Ви фанат Pomodoro, придивіться до PomoDoneApp, а якщо Вам більше до душі Kanban, то спробуйте Trello. Обов’язково спілкуйтеся з іншими людьми (або навіть самі із собою), створюйте бесіди і діалоги: ведіть гарячі спори в Telegram чи починайте “мозкові штурми” в gitter.im. Користуйтеся сервісами зі створення блок-схем для побудови алгоритмів, draw.io –  яскравий приклад. Якщо Ви користуєтеся онлайн-сервісами, то групуйте посилання до сервісів під кожен проект для швидкого доступу. Удачі!

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *