aboutsummaryrefslogtreecommitdiff
path: root/2017-meetandcode/pres.tex
blob: 205742dd324dfd164b15ad0a935eba891b400599 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
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}