Використання ChatGPT для проєктної документації

Використання ChatGPT для проєктної документації

ChatGPT не замінить людей. Людей замінять ті, хто використовує ChatGPT.

Про мене 

Мене звати Наталія Баленко, я співпрацюю з ЕРАМ у ролі Delivery Manager. Хочу поділитись із вами своїм досвідом використання ChatGPT, але не як менеджер, а як технічний експерт, проте не у всьому.  

Вступ 

Уявіть собі проєкт, який жив своїм життям кілька десятків років – йдеться у статті, розміщений у спільноті бізнес аналітиків EPAM. У ньому намішані десятки різних технологій.  Його розроблювали різні команди різних вендорів. Але спільне у них було одне – їх імен ніхто не знає і документацію вони за собою не лишили. 

Ви на фазі  Discovery. Потрібно розібратись що саме потрібно зробити,  підготувати беклог для команди і створити нарешті документацію, а разом із нею привести правильні процеси в проєкт. 

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

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

Створити інструкцію для розробників 

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

Тут же його не було взагалі.  

І щоб було не скучно мені, як .NET розробнику із десятком років роботи на Windows, на проєкті був не лише він. А ще і купа всього на Ubuntu і мовах програмування, які майже неможливо підняти на Windows. 

Розглянемо наступний приклад. Мені дістався короткий шматок скрипта. Погляньмо, чи може з цього ChatGPT щось зробити 

Запит: 

Please convert it to development instruction  

SSH to the Beanstalk Web env server  

sudo cp /opt/elasticbeanstalk/deployment/env /tmp sudo chown webapp:webapp /tmp/env sudo chmod 777 /tmp/env sudo su – webapp export $(cat /tmp/env | xargs) rm /tmp/env cd /var/app/current/bin nohup bundle exec rake chewy:reset:all novus:rebuild_percolate_queries > ES.log &Development Instructions: Update Elastic Beanstalk Environment and Reset Search Indices 

Відповідь мене дуже порадувала:

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

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

Створити графічне представлення логіки з полотна тексту  

Рухаємось далі. Наступним потрібно було на основі коду задокументувати поведінку системи. Це ще можна назвати Reverse engineering.  

Витративши певну кількість часу картинка в голові склалась. Але вихідний документ не радував. Це було полотно тексту, частково із шматками коду, частково форматовано. І трохи лячне. 

Вирішила спробувати плагін для генерації діаграм. 

Обраний плагін: Diagrams:  Show 

Вхідний запит:

Запропоноване рішення:

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

Мене зацікавила опція номер 2 і з нею мені відкрився зовсім новий для мене інструмент – Mermaid Editor. Певно ви це уже бачили, але я вперше зустріла такий простий спосіб генерації діаграм на основі тексту. Та ще й за мене було зроблено 99% самої складної роботи. Трішки поправила текст, трішки додала відступів – і діаграма стала виглядати сильно краще. Таке уже можна показувати бізнес-аналітикам і користувачам системи, які далекі від коду.  

Створити Sequence Diagram 

Ідемо далі і робимо більш професійну діаграму. Бо в попередній навіть тип не очевидний. Щоб було солідніше, прошу зробити із цієї діаграми sequence діаграму.

Отримую посилання на новий документ. Три хвилин його правлю, аби відобразити запити в базу даних, і маю уже пристойний документ:

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

Створити технічну історію 

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

Проста задача, одна з перших на свіженькому проєкті.

Запит 
Write the story to configure access to posgresDB with EF Core, create DB context and generic repository 

І запропоноване рішення: 

User Story: Configure PostgreSQL Database Access with EF Core, Create DB Context and Generic Repository 

As a Developer
I want to configure access to a PostgreSQL database using Entity Framework Core and set up a DB context and a generic repository
So that I can standardize data access, making it more organized and maintainable. 

Acceptance Criteria 

  1. Install Packages: Add necessary NuGet packages for Entity Framework Core and its PostgreSQL data provider. 
  2. Connection String: Configure the connection string for connecting to the PostgreSQL database in appsettings.json. 
  3. DB Context: Create a Database Context class that inherits from DbContext and includes DbSet properties for entities. 
  4. Generic Repository: Implement a generic repository with basic CRUD operations (Create, Read, Update, Delete). 
  5. Repository Interface: Create an interface for the generic repository to promote dependency injection and testing. 
  6. Service Registration: Register the DB Context and the generic repository in the DI container using the Startup.cs file. 
  7. Database Migrations: Add initial migration scripts to seed the database schema. 
  8. Testing: Implement unit tests for the DB context and generic repository to confirm they are working as expected. 
  9. Error Handling: Ensure that database exceptions are correctly caught and logged in the application. 
  10. Transaction Support: Implement support for transactions in the generic repository. 
  11. Documentation: Update the README file to include steps on how to configure the database connection and how to run migrations. 

Definition of Done 

  • All acceptance criteria are met. 
  • Code has been reviewed and approved by peers. 
  • Unit tests for database operations are written and pass successfully. 
  • README is updated with necessary documentation. 

Сказати, що я перший раз в житті бачу наступну конструкцію – це нічого не сказати: 

As a Developer 

I want to configure access to a PostgreSQL database … 

So that I can standardize data access …. 

Але DoR уже затвердили, текст уже згенерували, хай живе. Все одно розробники ніколи не читають, що там хоче користувач, а зразу крутять до конкретних вимог. 

Згенерований список має право на життя. Через те, що стартувала зовсім нова і неспрацьована команда – то краще мати надто багато деталей аніж надто мало. 

Порівняння безплатної і платної версії 

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

Висновки 

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

Автор: Наталя Баленко (EPAM, Delivery Manager)

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

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

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

Повідомити про помилку

Текст, який буде надіслано нашим редакторам: