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

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
Shai-Hulud - A qtile configuration for the (spice) masses

Shai-Hulud - A qtile configuration for the (spice) masses Installation Notes These dotfiles are set up to use GNU stow for installation. To install, f

16 Dec 30, 2022
Skip spotify ads by automatically restarting application when ad comes

SpotiByeAds No one likes interruptions! Don't you hate it when you're listening to your favorite jazz track or your EDM playlist and an ad for Old Spi

Partho 287 Dec 29, 2022
This repository contains code for building education startup.

Learning Management System Overview It's the code for EssayBrain, a tool for teacher that automatically grades and validates essays. In order to valid

Shyam Das Shrestha 1 Nov 21, 2021
Python Function to manage users via SCIM

Python Function to manage users via SCIM This script helps you to manage your v2 users. You can add and delete users or groups, add users to groups an

4 Oct 11, 2022
Prometheus exporter for Spigot accounts

SpigotExporter Prometheus exporter for Spigot accounts What it provides SpigotExporter will output metrics for each of your plugins and a cumulative d

Jacob Bashista 5 Dec 20, 2021
Security-related flags and options for C compilers

Getting the maximum of your C compiler, for security

135 Nov 11, 2022
Generate Gaussian 09 input files for the rotamers of an input compound.

Rotapy Purpose Generate Gaussian 09 input files for the rotamers of an input compound. Distance to the axis of rotation remains constant throughout th

1 Jul 16, 2021
36 key ergo split keyboard, designed around the Seeeduino Xiao platform

Slice36 Minimalist Split Keyboard 36 key ergo split keyboard, designed around the Seeeduino Xiao platform. Inspired by the Corne, Ferris, Ben Vallack'

54 Dec 21, 2022
A simple wrapper for joy library

Joy CodeGround A simple wrapper for joy library to render joy sketches in browser using vs code, (or in other words, for those who are allergic to Jup

rijfas 9 Sep 08, 2022
Streamlit — The fastest way to build data apps in Python

Welcome to Streamlit 👋 The fastest way to build and share data apps. Streamlit lets you turn data scripts into sharable web apps in minutes, not week

Streamlit 22k Jan 06, 2023
ripgrep recursively searches directories for a regex pattern while respecting your gitignore

ripgrep (rg) ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will resp

Andrew Gallant 35k Dec 31, 2022
A casual IDOR exploiter that provides .csv files of url and status code.

IDOR-for-the-casual Do you like to IDOR? Are you a Windows hax0r? Well have I got a tool for you... A casual IDOR exploiter that provides .csv files o

Ben Wildee 2 Jan 20, 2022
CountdownTimer - Countdown Timer For Python

Countdown Timer This python script asks for the user time (input) in seconds, an

Arinzechukwu Okoye 1 Jan 01, 2022
A calculator for common measurements used in sci-fi books.

Sci-fi-speed-calculator A calculator for common measurements used in sci-fi books. Author: Tyler Windmemuth Purpose: This program allows sci-fi author

Tyler Windemuth 0 Apr 22, 2022
XlvnsScriptTool - Tool for decompilation and compilation of scripts .SDT from the visual novel's engine xlvns

XlvnsScriptTool English Dual languaged (rus+eng) tool for decompiling and compiling (actually, this tool is more than just (dis)assenbler, but less th

Tester 3 Sep 15, 2022
🏃 Python3 Solutions of All Problems in GKS 2022 (In Progress)

GoogleKickStart 2022 Python3 solutions of Google Kick Start 2022. Solution begins with * means it will get TLE in the largest data set. Total computat

kamyu 38 Dec 29, 2022
Nuclei - Burp Extension allows to run nuclei scanner directly from burp and transforms json results into the issues

Nuclei - Burp Extension Simple extension that allows to run nuclei scanner directly from burp and transforms json results into the issues. Installatio

106 Dec 22, 2022
Python module for creating the circuit simulation definitions for Elmer FEM

elmer_circuitbuilder Python module for creating the circuit simulation definitions for Elmer FEM. The circuit definitions enable easy setup of coils (

5 Oct 03, 2022
全局指针统一处理嵌套与非嵌套NER

GlobalPointer 全局指针统一处理嵌套与非嵌套NER。 介绍 博客:https://kexue.fm/archives/8373 效果 人民日报NER 验证集F1 测试集F1 训练速度 预测速度 CRF 96.39% 95.46% 1x 1x GlobalPointer (w/o RoPE

苏剑林(Jianlin Su) 183 Jan 06, 2023
Experimental proxy for dumping the unencrypted packet data from Brawl Stars (WIP)

Brawl Stars Proxy Experimental proxy for version 39.99 of Brawl Stars. It allows you to capture the packets being sent between the Brawl Stars client

4 Oct 29, 2021