From 038a291a1aacb72e395318008cf4c5631887c613 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= <cynerd@email.cz>
Date: Tue, 17 Oct 2017 20:09:12 +0200
Subject: Add presentation from Meet and Code

---
 2017-meetandcode/pres.tex | 200 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 200 insertions(+)
 create mode 100644 2017-meetandcode/pres.tex

(limited to '2017-meetandcode/pres.tex')

diff --git a/2017-meetandcode/pres.tex b/2017-meetandcode/pres.tex
new file mode 100644
index 0000000..205742d
--- /dev/null
+++ b/2017-meetandcode/pres.tex
@@ -0,0 +1,200 @@
+\documentclass{beamer}
+\usetheme{metropolis}
+\usepackage{lmodern}
+\usepackage[czech]{babel}
+\usepackage[utf8x]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{textpos}
+\usepackage{tikz,calc}
+\usepackage{graphicx}
+\usepackage{wrapfig}
+\usepackage{color}
+\usepackage{mathtools}
+\usepackage{hyperref}
+\usepackage{epstopdf}
+\usepackage{amsmath}
+\usepackage{minted}
+\hypersetup{
+	colorlinks,
+	citecolor=black,
+	filecolor=black,
+	linkcolor=black,
+	urlcolor=black
+}
+\usepackage{pdflscape}
+
+\title{Softwarový projekt z 0 na 95\% a zpět}
+\author{Karel Kočí}
+\date{17.10.2017}
+
+\begin{document}
+
+\frame{\titlepage}
+
+\begin{frame}{Život projektu  z pohledu vývojáře}
+	\begin{itemize}
+		\item Zadání
+		\item Návrh
+		\item Proof of concept
+		\item Prvotní implementace
+		\item Nasazení
+		\item Bugy, refactoring a přidávání/odebírání feature
+		\item Next generation
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\center
+	\includegraphics[width=5.5cm]{what-your-code-looks-like.png}
+\end{frame}
+
+\begin{frame}{Zadání}
+	Zodpovídá management ale nečekejte, že vědí co dělají!
+	\begin{block}{Co by mělo určitě obsahovat}
+		\begin{itemize}
+			\item Časový horizont projektu
+			\item Software/Hardware omezení
+			\item Stěžejní funkcionality
+			\item Rozdělení na krátkodobé a dlouhodobé cíle
+		\end{itemize}
+	\end{block}
+	\begin{block}{A co naopak určitě ne}
+		\begin{itemize}
+			\item Výběr technologií
+			\item Popis UX
+			\item Přání a myšlenky
+		\end{itemize}
+	\end{block}
+\end{frame}
+
+\begin{frame}{Design}
+	Vychází ze zadání a dává ho dohromady vedoucí vývojář.
+	\begin{block}{Co by měl určitě obsahovat}
+		\begin{itemize}
+			\item Přesná technická specifikace jednotlivých funkcionalit
+			\item Rozporcování na modulární minimalistické části
+			\item Rozplánování dočasných a stálých částí
+			\item Rešerše rozhraní ke zbytku systému a všech nutných funkcionalit
+			\item Vymezení interakce s uživatelem
+			\item Vymezení technologií
+		\end{itemize}
+	\end{block}
+	Design -> uživatelská a vývojářská dokumentace
+\end{frame}
+
+\begin{frame}{Předtím než napíšete řádku}
+	\begin{block}{Výběr jazyka}
+		\begin{itemize}
+			\item Co je vhodné
+			\item Co se v dané oblasti používá
+			\item Co umíte
+		\end{itemize}
+	\end{block}
+	\begin{block}{Výběr knihoven}
+		\begin{itemize}
+			\item Nepiště si věci sami
+			\item Nestavějte kolem jedné knihovny
+		\end{itemize}
+	\end{block}
+\end{frame}
+
+\begin{frame}{Proof of concept}
+	\begin{itemize}
+		\item Funkční ale nepřívětivé (CLI, žádný frontend)
+		\item Implementace pouze stěžejních funkcionalit
+		\item Pokud možno předneste zadavateli
+		\item Neobtěžujte se testy
+		\item Benchmarky
+	\end{itemize}
+\end{frame}
+
+\begin{frame}{Skládáme základy}
+	\begin{itemize}
+		\item Build systém
+		\item Unit testy
+		\item Integrační testy (platforma)
+		\item CI testy na jiné než vývojářské platformě
+		\item Version control (git)
+	\end{itemize}
+\end{frame}
+
+\begin{frame}{Kvalita kódu}
+	\begin{block}{Python}
+		\begin{itemize}
+			\item flake8 a pylint
+			\item unittest
+			\item coverage
+		\end{itemize}
+	\end{block}
+	\begin{block}{C/C++}
+		\begin{itemize}
+			\item cppcheck
+			\item clang
+			\item gcc -Wall (-Werror)
+			\item gcov
+			\item valgrind
+		\end{itemize}
+	\end{block}
+	A komentáře!
+\end{frame}
+
+\begin{frame}{Komentáře 1}
+	\Huge
+	Nikdy ``Here be dragons''!
+\end{frame}
+
+\begin{frame}[fragile]{Komentáře 2}
+	\begin{minted}[frame=lines]{Python}
+	def size(self):
+		"""Returns size"""
+		return self.__size__
+
+	def increament(self):
+		"""Increments size"""
+		self.__size__ += 1
+	\end{minted}
+\end{frame}
+
+\begin{frame}{Změny v projektu}
+	\begin{block}{Přidáváme funkcionality}
+		\begin{itemize}
+			\item Součástí toho je refactoring
+			\item Přidáváme pouze smysluplné funkcionality
+		\end{itemize}
+	\end{block}
+	\begin{block}{Odebíráme funkcionality}
+		\begin{itemize}
+			\item Označíme za obsolete (v kódu, dokumentaci a nejlépe při použití také do logu)
+			\item Po dostatečné době odstraní znovu spolu s refactoringem
+			\item Zpětná kompatibilita? Přechod?
+		\end{itemize}
+	\end{block}
+\end{frame}
+
+\begin{frame}
+	\center
+	\includegraphics[width=11cm]{SoftwareEngineersLife.png}
+\end{frame}
+
+\begin{frame}{Předáváme projekt}
+	\begin{itemize}
+		\item Dodržujte kvalitu kódu a pokrytí dokumentací
+		\item Přímé vysvětlená myšlenky projektu a budoucí plány
+		\item Přiznejte co se nepovedlo
+	\end{itemize}
+\end{frame}
+
+\begin{frame}{Next generation}
+	\begin{itemize}
+		\item Analýza toho co se povedlo a co ne
+		\item Rozdíly v designu či dokonce zadání
+		\item Vracíte se na začátek
+		\item Poučte se z chyb
+	\end{itemize}
+\end{frame}
+
+\section{Moje zpackání}
+
+\section{Děkuji za pozornost}
+
+\end{document}
-- 
cgit v1.2.3

