Курс про техническое совершенство для нетехнарей

Overview

Technical Excellence 101

Курс про техническое совершенство для нетехнарей.

Этот курс представлят из себя серию воркшопов, при помощи которых можно объяснить смысл основных инженерных практик даже тем, кто в жизни не написал ни одной строчки кода. Это могут быть владельцы продукта, бизнес эксперты, скрам-мастера и любые другие участники команды, которые хотят лучше понимать что такое техническое совершенство и почему ему так много внимания уделяют разработчики. Код — это текст, поэтому мы будем объяснять материал на примере обыкновенного текста. Для прохождения курса не требуется никаких специальных знаний, кроме владения текстовым редактором.

Во время курса вы почувствуете себя разработчиком, столкнетесь с препятствиями, с которыми сталкивается каждый разработчик и поймете как инженерные практики помогают преодолеть эти препятствия.

Курс предлагает определенную последовательность модулей для изучения, которая кажется авторам логичной. Но вы можете изучать модули в любой последовательности.

Какие темы изучаются в курсе?

  • Основные команды git
  • Merge
  • Trunk based development
  • Pull request
  • Unit testing (модульное тестирование)
  • Test-driven development (разработка через тестирование)
  • Code review
  • Парное программирование
  • Continuous Integration (непрерывная интеграция)
  • Continuous Delivery (непрерывная поставка)

Подготовка

  1. Установите Visual Studio Code
  2. Установите git
  3. Проверьте, что git работает
    • Откройте Terminal в MacOS или Git Bash в Windows
    • Выполните команду git --version
    • Если вы увидели вывод git version 2.23.0, значит все в порядке, git установлен. Числа могут быть другими.
  4. Создайте папку, в которой вы будете работать, например Projects
    Windows:
    cd %USERPROFILE%
    mkdir Projects
    cd Projects
    
    MacOS:
    cd ~
    mkdir Projects
    cd Projects
    
  5. Склонируйте репозиторий, выполнив команду
    git clone https://github.com/bevzuk/technical-excellence-101.git
    или (если у вас добавлен SSH сертификат)
    git clone [email protected]:bevzuk/technical-excellence-101.git
    или (если у вас установлен GitHub CLI)
    gh repo clone bevzuk/technical-excellence-101
  6. Откройте локальный репозиторий в VS Code
    • Запустите VS Code
    • Откройте папку Projects/technical-excellence-101
      • Меню File -> Open Folder ... или
      • Open ... на главном экране
      • Выберите папку Projects/technical-excellence-101
      • Нажмите Open
    • В левой панельке Explorer вы должны увидеть структуру проекта

Структура курса

Модуль 1. Git

  1. Что такое система управления исходным кодом и какие проблемы она решает
  2. Код = текст
  3. Зачем нужны ветки
  4. Что такое git, github, gitlab, bitbucket
  5. Интерфейс командной строки и VS Code
  6. git clone — клонировать удаленный репозиторий локально
  7. git status — посмотреть статус локального репозитория
  8. git add — добавить измененные файлы в снапшот
  9. git commit — закомитить снапшот
  10. Упражнение. Сохранение изменений в локальном репозитории
  11. git pull — получить изменения из удаленного репозитория в локальный
  12. git push — отправить изменения из локальног репозитория в удаленный
  13. Упражнение. Обмен данными между локальными и удаленным репозиториями

Модуль 2. Ветки, конфликты и TBD

  1. git branch — создать ветку в локальном репозитории
  2. git checkout — переключиться в локальную ветку
  3. Упражнение. Создание, просмотр, переключение веток
  4. Слияние веток
  5. Конфликты и способы их разрешения
  6. git merge — смержить ветку в текущую
  7. Упражнение. Смержить ветку и разрешить конфликты
  8. Trunk Based Development (TBD) — практика разработки в одной ветке
  9. Упражнение. Совместная работа над общим кодом, используя TBD

Модуль 3. Code Review

  1. Упражнение. Диктант
  2. Code Review — практика, помогающая давать обратную связь на код
  3. Правила хорошего Code Review
  4. Pull Request
  5. Упражнение. Создать Pull Request, дать и получить обратную связь, исправить замечания и запушить код в master
  6. Парное программирование как альтернатива Code Review
  7. Упражнение. Исправить диктант в паре

Модуль 4. Автотесты и Test Driven Development

  1. Автотесты
  2. Упражнение. Написать автотест на проверку текста
  3. Пирамида тестирования
  4. Test Driven Development
  5. Упражнение. Написать тест и исправить ошибку в заголовке главы или тексте
  6. Сдвиг влево
  7. Тестировщик vs QA

Модуль 5. Continuous Integration & Continuous Deployment (CI/CD)

  1. Что такое Continuous Integration
  2. Как распознать CI Theatre
  3. CI Do/Don't
  4. Упражнение. Исправить ошибку в заголовке
  5. Continous Delivery и Continuous Deployment
  6. Как устроен Deployment Pipeline
  7. Типичные ошибки построения пайплайна

Модуль 6. Мониторинг и Логирование

  1. Мониторинг
  2. Пример мониторинга
  3. Логирование
  4. Пример логирования
  5. Дебриф

Авторство

Идея курса принадлежит Антону Бевзюку (@bevzuk). В создании курса принимали участие Дарья Баянова, Федор Слесаренко, Арсений Кельдышев, Светлана Кривенко.

Owner
Anton Bevzuk
Anton Bevzuk
pybind11 — Seamless operability between C++11 and Python

pybind11 — Seamless operability between C++11 and Python Setuptools example • Scikit-build example • CMake example pybind11 is a lightweight header-on

pybind 12.1k Jan 08, 2023
Ferramenta de monitoramento do risco de colapso no sistema de saúde em municípios brasileiros com a Covid-19.

FarolCovid 🚦 Ferramenta de monitoramento do risco de colapso no sistema de saúde em municípios brasileiros com a Covid-19. Monitoring tool & simulati

Impulso 49 Jul 10, 2022
This is an example manipulation package of for a robot manipulator based on Drake with ROS2.

This is an example manipulation package of for a robot manipulator based on Drake with ROS2.

Sotaro Katayama 1 Oct 21, 2021
This python application let you check for new announcements from MMLS, take attendance while your lecturer is sharing QR Code on the screen.

This python application let you check for new announcements from MMLS, take attendance while your lecturer is sharing QR Code on the screen.

wyhong3103 5 Jul 17, 2022
Type Persian without confusing words for yourself and others, in Adobe Connect

About In the Adobe Connect chat section, to type in Persian or Arabic, the written words will be confused and will be written and sent illegibly (This

Matin Najafi 23 Nov 26, 2021
Very simple encoding scheme that will encode data as a series of OwOs or UwUs.

OwO Encoder Very simple encoding scheme that will encode data as a series of OwOs or UwUs. The encoder is a simple state machine. Still needs a decode

1 Nov 15, 2021
A simple script that can watch a list of directories for change and does some action

plot_watcher A simple script that can watch a list of directories and does some action when a specific kind of change happens In its current implement

Charaf Errachidi 12 Sep 10, 2021
Your one and only Discord Bot that helps you concentrate!

Your one and only Discord Bot thats helps you concentrate! Consider leaving a ⭐ if you found the project helpful. concy-bot A bot which constructively

IEEE VIT Student Chapter 22 Sep 27, 2022
The calculator on Python.

Calculator Contributors: Delitanast An official website. Information Hello! I am Damir. It`s my first Python project. I think you want see this. I imp

3 Mar 13, 2022
poro is a LCU interface to change some lol's options.

poro is a LCU interface to change some lol's options. with this program you can: change your profile icon change your profiel background image ch

João Dematte 2 Jan 05, 2022
Batch Python Program Verify

Batch Python Program Verify About As a TA(teaching assistant) of Programming Class, it is very annoying to test students' homework assignments one by

Han-Wei Li 7 Dec 20, 2022
Demo repository for Saltconf21 talk - Testing strategies for Salt states

Saltconf21 testing strategies Demonstration repository for my Saltconf21 talk "Strategies for testing Salt states" Talk recording Slides and demos Get

Barney Sowood 3 Mar 31, 2022
Information about a signed UEFI Shell that can be used when Secure Boot is enabled.

SignedUEFIShell During our research of the BootHole vulnerability last year, we tried to find as many signed bootloaders as we could. We searched all

Mickey 61 Jan 03, 2023
Usos Semester average helper

Usos Semester average helper Dzieki temu skryptowi mozesz sprawdzic srednia ocen na kazdy odbyty przez ciebie semestr PARAMETERS required: '--username

2 Jan 17, 2022
Automated rop chain generation

This is the accompanying code to the blog post talking about automated rop chain generation. Build the test file with: make Install the dependencies:

Christopher Roberts 14 Nov 22, 2022
AminoAutoRegFxck/AutoReg For AminoApps.com

AminoAutoRegFxck AminoAutoRegFxck/AutoReg For AminoApps.com Termux apt update -y apt upgrade -y pkg install python git clone https://github.com/LilZev

3 Jan 18, 2022
Hypothesis strategies for generating Python programs, something like CSmith

hypothesmith Hypothesis strategies for generating Python programs, something like CSmith. This is definitely pre-alpha, but if you want to play with i

Zac Hatfield-Dodds 73 Dec 14, 2022
In this repo, I will put all the code related to data science using python libraries like Numpy, Pandas, Matplotlib, Seaborn and many more.

Python-for-DS In this repo, I will put all the code related to data science using python libraries like Numpy, Pandas, Matplotlib, Seaborn and many mo

1 Jan 10, 2022
A Python Perforce package that doesn't bring in any other packages to work.

P4CMD 🌴 A Python Perforce package that doesn't bring in any other packages to work. Relies on p4cli installed on the system. p4cmd The p4cmd module h

Niels Vaes 13 Dec 19, 2022
Demo scripts for the Kubernetes Security Webinar

Kubernetes Security Webinar [in Russian] YouTube video (October 13, 2021) Authors: Artem Yushkovsky (LinkedIn, GitHub) Maxim Mosharov @ Whitespots.io

Slurm 34 Dec 06, 2022