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

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
The little-endian version of MessagePack

MessagePackEL This is the little-endian version of MessagePack, except the endianness is different, the rest is exactly the same as MessagePack. C lib

dukelec 9 May 13, 2022
LinuxHelper - A collection of utilities for non-technical Linux users accessible via a GUI

Linux Helper A collection of utilities for non-technical Linux users accessible via a GUI This app is still in very early development, expect bugs and

Seth 7 Oct 03, 2022
A working roblox account generator it doesnt bypass the capcha stuff cuz these didnt showed up in my test runs

A working roblox account generator (state 11.5.2021) it doesnt bypass the capcha stuff cuz these didnt showed up in my test runs

TerrificTable 22 Jan 03, 2023
ChainJacking is a tool to find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.

ChainJacking is a tool to find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.

Checkmarx 36 Nov 02, 2022
Stop python warnings, no matter what!

SHUTUP - Stop python warnings, no matter what! Sometimes you just can't mute python warnings. Use this library to solve this. Installation pip install

80 Jan 04, 2023
The dynamic code loading framework used in LocalStack

localstack-plugin-loader localstack-plugin-loader is the dynamic code loading framework used in LocalStack. Install pip install localstack-plugin-load

LocalStack 5 Oct 09, 2022
A tool for fixing inconsistent timestamp metadata (atime, ctime, and mtime).

Mtime Fixer Mtime Fixer is a tool for fixing inconsistent timestamp metadata (atime, ctime, and mtime). Sometimes timestamp metadata of folders are in

Halit Şimşek 2 Jan 11, 2022
Ultimate Score Server for RealistikOsu

USSR Ultimate Score Server for RealistikOsu (well not just us but it makes the acronym work.) Also I wonder how long this name will last. What is this

RealistikOsu! 15 Dec 14, 2022
Python script that automates the tasks involved in starting a new coding project

Auto Project Builder Automates the repetitive tasks while starting a new project Installation Use the REQUIREMENTS.txt file to install the dependencie

Prathap S S 1 Feb 03, 2022
Simulation-Based Inference Benchmark

This repository contains a simulation-based inference benchmark framework, sbibm, which we describe in the associated manuscript "Benchmarking Simulation-based Inference".

SBI Benchmark 58 Oct 13, 2022
The last walk-through project in code institute diploma course

Welcome Rocky.C, This is the Code Institute student template for Gitpod. We have preinstalled all of the tools you need to get started. It's perfectly

Rocky.C 1 Jan 31, 2022
Our Ping Pong Project of numerical analysis, 2nd year IC B2 INSA Toulouse

Ping Pong Project The objective of this project was to determine the moment of impact of the ball with the ground. To do this, we used different model

0 Jan 02, 2022
Module-based cryptographic tool

Cryptosploit A decryption/decoding/cracking tool using various modules. To use it, you need to have basic knowledge of cryptography. Table of Contents

/SNESE_AR\ 33 Nov 27, 2022
RecurrentArchitectures - See the accompanying blog post

Why this? What is the goal? The goal of this repository is to write all the recurrent architectures from scratch in tensorflow for learning purposes.

Debajyoti Datta 9 Feb 06, 2022
SQL centered, docker process running game

REQUIREMENTS Linux Docker Python/bash set up image "docker build -t game ." create db container "run my_whatever/game_docker/pdb create" # creating po

1 Jan 11, 2022
Is a util for xferring skinning from one mesh to another

maya_pythonplugins skinTo: Is a util for xferring skinning from one mesh to another args: :param maxInfluences: is the number of max influences on the

James Dunlop 2 Jan 24, 2022
WhyNotWin11 - Detection Script to help identify why your PC isn't Windows 11 Release Ready

WhyNotWin11 - Detection Script to help identify why your PC isn't Windows 11 Release Ready

Robert C. Maehl 5.9k Dec 31, 2022
Backend/API for the Mumble.dev, an open source social media application.

Welcome to the Mumble Api Repository Getting Started If you are trying to use this project for the first time, you can get up and running by following

Dennis Ivy 189 Dec 27, 2022
YBlade - Import QBlade blades into Fusion 360

YBlade - Import QBlade blades into Fusion 360 Simple script for Fusion 360 that takes QBlade blade description and constructs the blade: Usage First,

Jan Mrázek 37 Sep 25, 2022
Transform a Google Drive server into a VFX pipeline ready server

Google Drive VFX Server VFX Pipeline About The Project Quick tutorial to setup a Google Drive Server for multiple machines access, and VFX Pipeline on

Valentin Beaumont 17 Jun 27, 2022