Як оптимізувати процес розробки за допомогою AI

Всім привіт! Мене звати Діана Домославська. Вже понад два роки я у сфері розробки, і зараз працюю над створенням та розвитком застосунків у компанії Universe Group, продуктами якої користуються понад 85 млн користувачів у 180 країнах. Я обіймаю позицію iOS-розробниці у бізнесі Guru Apps — екосистемі застосунків для iOS.

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

Про актуальність

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

Рутинні задачі та повторювані шаблони коду не лише поглинають значну кількість часу, але й ускладнюють підтримку проєктів.

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

Чому варто використовувати інструменти

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

  • Швидкість розробки часто є критичним фактором для успіху проєкту, особливо в умовах жорсткої конкуренції. Компанії змагаються за перші місця на ринку, і затримка в релізі може означати втрату потенційних користувачів та прибутку.
  • Автоматизація рутинних задач. Використання інструментів для автоматизації — генерації документації, автозаповнення коду та інтеграції з іншими системами, значно підвищує загальну ефективність роботи команди замість витрачання часу на повторювані рутинні задачі.
  • Якість коду та його підтримка є важливими аспектами довготривалого успіху мобільного застосунку. Інструменти, які допомагають забезпечувати його документування, є невіддільною частиною сучасного процесу розробки.
  • Конкурентоспроможність. Щоб залишатися конкурентоспроможними, розробники повинні використовувати новітні інструменти та технології для підвищення своєї продуктивності. Клієнти очікують швидкого розв’язання проблем, нових функціональних можливостей та стабільної роботи застосунків. Використання сучасних інструментів дозволяє задовольняти ці очікування та підтримувати високий рівень задоволеності користувачів.

П’ять інструментів, які точно будуть корисними

DocC

DocC — це вбудований в Xcode інструмент, який допомагає створювати зрозумілу та структуровану документацію, перетворює коментарі, які ви пишете у своєму коді Swift, у детальний набір документації з можливістю навігації.

Функціонал:

  • Автоматична генерація документації з коментарів.
  • Візуальна документація з інтерактивними можливостями.

DocC створює візуально привабливу документацію з інтерактивними елементами — прикладами коду, діаграмами.

  • Глибока інтеграція з Xcode.

DocC повністю інтегрований з Xcode, що дозволяє розробникам використовувати всі його можливості безпосередньо в середовищі розробки. Це зручно та ефективно.

Важливо підкреслити, що DocC переважно орієнтований на Swift. Проте, існують ситуації, коли вам може знадобитися додаткова гнучкість, і тут на допомогу приходить інший потужний інструмент — Jazzy.

Jazzy

Jazzy — це потужний інструмент для створення високоякісної документації для проєктів Swift і Objective-C, що покращує зручність обслуговування коду та співпрацю.

Функціонал:

  • Автоматичне генерування документації.

Jazzy автоматично створює документацію з коментарів у вашому коді, що полегшує підтримку актуальної та вичерпної документації.

  • Підтримка Swift та Objective-C.

Цей інструмент підтримує створення документації для проєктів Swift і Objective-C, що робить його універсальним для розробки під Apple. Забезпечує документування всіх частин вашого проєкту, незалежно від використаної мови програмування.

  • Легке встановлення і зручний інтерфейс.

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

До речі, 10 червня на WWDC 2024 Apple анонсували Apple Intelligence. Це платформа штучного інтелекту, розроблена Apple за підтримки OpenAl.

Також було випущено Xcode 16, де інтегровано AI та вже зараз можна скористатись функцією автозаповнення коду в Xcode. Крім того, протягом наступного року буде випущено Swift Assist — інтерактивний чат, який може допомагати з розробкою всередині IDE.

А для тих, хто не квапиться оновлюватись і хоче скористатись перевагами AI всередині Xcode вже зараз — хочу поділитись наступним інструментом.

Copilot для Xcode

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

Функціонал:

  • Code Suggestions.

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

  • Інструмент може навчатися з вашої бази коду, пропонуючи з часом більш відповідні підказки.
  • Chat (powered by OpenAl ChatGPT).

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

  • Prompt to Code (powered by OpenAl ChatGPT).

Вихідний код:

/// Description: Custom error enum for handling errors in the app.
enum CustomError: Error {
  case error(message: String)
  case networkError(description: String)
  case parsingError (description: String)
  case unknownError(description: String)
}

Запит: // make extension for CustomError to provide localized description.

Результат:

Ця функція дозволяє розробникам створювати код, надаючи підказки природною мовою, та перетворює їх у виконувані фрагменти коду.

Copilot для Xcode надає потужні функції та значні переваги для підвищення продуктивності та якості коду, але він також має певні обмеження та потенційні недоліки, які слід враховувати.

Warp Terminal

Warp Terminal — сучасний термінал, призначений для підвищення продуктивності розробників внаслідок інноваційних функцій і можливостей.

Функціонал:

  • Al Command Suggestion.

Warp Terminal підтримує інтелектуальне автозаповнення команд, що дозволяє розробникам швидко вводити команди без необхідності друкувати їх повністю. Це економить час і зменшує кількість помилок при введенні команд, а також потребу запам’ятовувати їх складний синтаксис.

  • Command and Session History.

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

  • Chat with Warp Al.

Чат допомагає в режимі реального часу знаходити відповіді на будь-які питання, пов’язані з комп’ютерним програмуванням.

  • Real-Time Collaboration.

Warp Terminal надає можливість спільної роботи над термінальними сесіями в реальному часі через функціональність workflows та notebooks.

  • Забезпечує елегантний, візуально привабливий інтерфейс із вкладками, розділенням та палітрою команд для полегшення навігації й їх виконання.

ChatGPT

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

Функціонал:

  • Code Generation & Task Automation.

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

Приклад 1. Вихідний код:

#import "UIViewController+Alert.h"

@implementation UIViewController (Alert)

- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message actionBlock:(nullable ActionBlock)actionBlock {
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
                                                                             message:message
                                                                      preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK"
                                                       style:UIAlertActionStyleDefault
                                                     handler:^(UIAlertAction *action) {
        [alertController dismissViewControllerAnimated:YES completion:nil];
        if (actionBlock) {
            actionBlock();
        }
    }];
    [alertController addAction:okAction];

    [self presentViewController:alertController animated:YES completion:nil];
}

@end

Запит: Rewrite on Swift. Результат:

import UIKit

extension UIViewController {

    func showAlert(title: String, message: String, actionBlock: (() -> Void)? = nil) {
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)

        let okAction = UIAlertAction(title: "OK", style: .default) { _ in
            alertController.dismiss(animated: true, completion: nil)
            actionBlock?()
        }
        alertController.addAction(okAction)
        self.present(alertController, animated: true, completion: nil)
    }
}

Приклад 2. Запит: В мене є лейбл, потрібно вставити чистину тексту одного кольору і іншу частину — іншого. Використовуй Swift і UIKit. Потрібен лише код, де лише частина роботи з label.text.

Результат:

  • Error Debugging.

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

  • Documentation Assistance.

Допомагає у створенні документації, генеруючи описи для функцій, класів та інших елементів коду.

Продовження прикладу 2. Запит: Оформи документацію за шаблоном: // MARK:
В мене є лейбл, потрібно вставити частину тексту одного кольору і іншу частину — іншого. Використовуй Swift і UIKit. Потрібен лише код, де лише частина роботи з label.text

Результат:

import UIKit

// MARK: - UILabel Extension for Colorful Text
extension UILabel {

    /// Sets the text of the label with different colors for specified parts.
    /// - Parameters:
    ///   - fullText: The complete text to be displayed in the label.
    ///   - coloredText: The part of the text that should be colored differently.
    ///   - coloredTextColor: The color for the `coloredText`.
    ///   - defaultTextColor: The color for the rest of the text.
    func setColoredText(fullText: String, coloredText: String, coloredTextColor: UIColor, defaultTextColor: UIColor) {
        let attributedString = NSMutableAttributedString(string: fullText)
        let coloredTextRange = (fullText as NSString).range(of: coloredText)

        // Set the color for the specified text
        attributedString.addAttribute(.foregroundColor, value: coloredTextColor, range: coloredTextRange)

        // Set the color for the rest of the text
        let defaultTextRange = NSRange(location: 0, length: fullText.count)
        attributedString.addAttribute(.foregroundColor, value: defaultTextColor, range: defaultTextRange)
        
        self.attributedText = attributedString
    }
}

// Example usage
let label = UILabel()
label.setColoredText(fullText: "Hello, World!", coloredText: "Hello", coloredTextColor: .red, defaultTextColor: .blue)
  • Technical Consultation.

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

Переваги та недоліки

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

Переваги:

  • Підвищення продуктивності шляхом швидкого написання коду з автоматичними пропозиціями й генерацією. Зменшує час, необхідний для розробки.
  • Використання ChatGPT i GitHub Copilot може значно прискорити процес написання коду та рутинних завдань, що дасть змогу розробникам швидше створювати та випускати продукт на ринок.
  • Пропозиції кращих практик та оптимізовані рішення покращують загальну якість коду, допомагають з пошуком та усуненням помилок завдяки інтерактивному чату.
  • Зниження кількості помилок шляхом автоматичного виправлення, а також інтелектуальні підказки, які допомагають уникати типових багів.
  • Підтримка навчання та розвитку: інтерактивний чат надає пояснення та приклади для різних концепцій програмування, що допомагає новачкам швидко навчатися та допомагає розробникам освоїти нові технології.

Недоліки:

  • Труднощі з точними пропозиціями у великих та складних проєктах з великою кількістю співзалежних компонентів.
  • Залежність від інтернету та вартість інструментів. Потребує підключення до інтернету для отримання пропозицій і генерації коду. Використання високоякісних інструментів може бути дорогим, а це обмеження для деяких команд або проєктів.
  • Потенційні проблеми з безпекою через використання зовнішніх сервісів для генерації коду. Одні інструменти я використовую в роботі, інші — лише на пет-проєктах.
  • Звикання до допомоги та залежність від AI: може вплинути на здатність самостійно розв’язувати проблеми та писати код.

Замість підсумків

Хочу закінчити цей текст прикладами, чому експериментувати корисно.

  • Завдяки Copilot for Xcode та ChatGPT я змогла оптимізувати процес рефакторингу коду і тепер можу пишу рутинний код швидше.
  • Використання DocC та Jazzy допомагають ефективно і розгорнуто описувати функціонал, що своєю чергою дає змогу заощадити час на створення та підтримки документації.
  • Warp Terminal допомагає швидше використовувати найчастіші команди.

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

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось6
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А як же дослідження від uplevel про +41% багів?

Взагалі, нам в Українському IT сегменті дуже не вистачає нормального прагматичного підходу в аналізі ефективності прийнятих рішень і їх впливу на процеси. Наслідок не дуже якісної освіти.
Це добре, що всі ці тулзи та сервіси інтегровані у процесс розробки. А що воно дає? Як змінюється процес розробки? Які кількістні характеристики цього процесу чи фінального результату змінюються? Цікаво бачити саме цифри, а не читати про відчуття, що стало «легше» «швидше» «якісніше». Оцінка ефективності не може будуватись на тому, що не можна вимірювати. Дослідженя побудоване хоча б на якихось цифрах вже краще ніж те, де суто неперевірені гепотези, чи взагалі «bro, believe me».

Пані Діана, що змінилось у роботі після інтеграції цього усього?

Який uplevel? Що це таке?

Голосують номальні контори ногами. Недавно Amazon скорочення провів)) це не просто так. А є наслідком впровадження AI.
Ну і борзі по поверненню в офіс теж не просто так, а розуміють конюктуру.

Недавно Amazon скорочення провів)) це не просто так. А є наслідком впровадження AI.

а можна якісь докази (окрім «баба Валя сказала»), що це саме наслідки впровадження AI? ну там посилання, репорти, дослідження, і тд

Безкоштовно не можна.

Це не було наслідком впровадження AI.

Було.
Часктово через AI assitants.
Частково через зміну фокусу. Технологічні компанії зрозуміли що час змінився і конкурувати потрібно не стільки написанням нового софту а більше розробкою АІ фіч.

Ніт, не було. Зовсім не було. Навіть трохи навпаки.

Та не процес потрібно оптимізувати... Вас потрібно оптимізувати))

ви точно сіньор?

Total Quality Management
Lean
дослідження McKinsey’s Operations
Business Process Reengineering
Sociotechnical Systems Theory

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

Я став сіньйором після двох років досвіду в програмуванні))) З того часу пройшло багато років.

Так а що вони нового ці організації і їх дослідження можуть сказати? це нуби які не в темі...
Ось вам свіженький нобелівський лауреат розчехляє:

www.youtube.com/watch?v=MGJpR591oaM

Я став сіньйором після двох років досвіду в програмуванні)))

це дуже багато пояснює

Не кожному дано, чесно))

Warp Terminal — сучасний термінал, призначений для підвищення продуктивності розробників внаслідок інноваційних функцій і можливостей.

Під вінду нічого подібного немає?

Підписатись на коментарі