Co by měl umět dobrý programátor

7. května 2021

Chcete se stát dobrým programátorem nebo takového programátora hledáte? Pak potřebujete vědět co by měl dobrý programátor umět. V tomto článku se dozvíte jaké vlastnosti, schopnosti a znalosti by měl dobrý programátor ideálně mít. Od seznamu základních technologií a takzvaných softskills se můžete odpíchnout.

Často se bere ve firmách programátor jako dělník. Ale právě v myšlení a obzvlášť v tom kreativním je ta největší hodnota. Ano, jsou pozice, kde stačí rutinně tvořit podobný kód jako předtím nebo stylem CTRL-C a CTRL-V kopírovat existující bloky kódu. Ale taková práce nepřináší velkou přidanou hodnotu a často jde automatizovat.
A právě možnost automatizovat je hlavní silnou stránkou IT oboru, protože zefektivňuje práci.

Ať už jako kandidát na konkrétní obsazovanou pozici nebo člověk, který pomáhal vybírat lidi do týmu, jsem se setkal s různými představami a požadavky na lidi pro IT pozice.
Co by měl tedy umět takový programátor, který dokáže tvořit řešení a pracovat efektivně?

Softskill a Hardskill

Dobrý vývojář software musí mít mnoho předpokladů, rozličné znalosti a hodně zkušeností....
Zde je orientační nástřel co by měl umět dobrý programátor:

  • Logické myšlení. Nadstandardní schopnosti v matematice.
  • Znát technologie.
  • Základní principy a znalosti z informatiky.
  • Komunikace.
  • Ovládat nástroje: verzování, databáze, atd..
  • Každý asi bude mít aspoň základy: HTML, CSS
  • Dekomponovat (rozdělit) projekt.
  • Umět se soustředit
  • Odhady a kritické myšlení
  • Udržovat se v dobrém fyzickém a psychickém stavu
  • Schopnost ptát se, učit se
  • Senior by měl být schopen sebrat všechny potřebné podklady a pak pracovat samostatně.
Nejedná se o kompletní seznam.
Nevíte přesně co vlastně programátor u počítače dělá? V článku Co je pracovní náplní programátora se dozvíte podrobnosti.

Logické myšlení

Logické myšlení je důležité pro analýzu a řešení problémů obzvlášť těch technických. V době studia se logické myšlení trénuje typicky v předmětu matematika. Praktičtější ukázkou použití logického myšlení jsou slovní úlohy, které můžou být jak ze života. Konkrétní použití matematiky a logického myšlení je v předmětu fyzika, kde se žák setká s úlohami, které staví na jednoduchých běžných potřebách ze života technika.
Z toho plyne, že člověk, který byl řešitel matematických a fyzikálních olympiád, je výborný adept na schopného programátora.

Technologie

Znát technologie, které používá váš projekt, je základ pro efektivní práci. Ale není nutné znát technologie na začátku. Technologie se dají doučit. Schopný softwarový vývojář dokáže přejít na jiné technologie, pokud má dobré teoretické základy. Ať už někdo používá framework Nette nebo Symfony, je to totiž téměř jedno, obojí to jsou technologie určené pro jazyk PHP navržené dle pravidel MVC.
U realizace nových projektů je učení se technologií za běhu samozřejmě riziko. Proto je dobré nové technologie absorbovat na malých projektech, nebo na projekt, které jsou již vystavěny, v případě velkých nových projektů by tam měl být aspoň jeden člověk, který dané technologie má vyzkoušené a ví tedy jaké jsou jejich možnosti a jak je správně používat.

Základní principy a znalosti z informatiky

Kdo vystudoval vysokou školu zaměřenou na informatiku absolvoval předměty jako je: algoritmizace, datové struktury, objektové programování. Takový člověk by pak měl vědět jak navrhnou správně objekty v aplikaci, jak správně navrhnout databází a má povědomí o tom co daný kód dělá. Nestane se tak, že bude výkonnostní problém kvůli špatně navržené databázi nebo špatně architektuře aplikace. Případně je schopen takový problém označit a dle finančních zdrojů i aspoň částečně dodatečně řešit.

Komunikace

Člověk může být výborný programátor, ale pokud nebude komunikovat nebude schopen pracovat pro ostatní lidi. Komunikace je základ pro zjištění potřeb zákazníka. V případě nejasností se nesmí programátor bát zeptat se. Základní komunikační nástroje jsou: emaily, telefonovat, osobní rozhovor, videocally, chat. Samozřejmě existuje mnoho různých online komunikačních nástrojů.
Volba konkrétního nástroje závisí na urgentnosti a potřeby interakce. Pro soupis technických požadavků k práci, která se bude realizovat později je ideální text např email. Druhá strana si pak bude moci kdykoli v klidu text přečíst promyslet a pak jen obsah potvrdit. Taková komunikace nikoho nevytrhuje z rozdělané práce. Telefon se hodí na urgentní věci. Videocally pak na konzultace, kdy je potřeba interaktivní ukazování na monitoru a je potřeb o tom diskutovat.

Nástroje

Je potřeba nejen umět daný programovací jazyk, ale i ovládat další nástroje, protože takové nástroje umožňují efektivní práci a kooperaci.
Hlavní je umět verzovat zdrojový kód - tady se stal standardem nástroj GIT. Když se naučíte používat GIT, získáte dovednost, kterou využije s jistotou každý programátor. Ale hodí se i dalším lidem z IT včetně projektových manažerů.

I když nebudete databázový specialista, je potřeba uměl používat databázi - základy SQL.
Existují nástroje na správu závislostí a build projektu, který má každý ekosystém jiný. Bez takového nástroje nebudete schopni projekt nasadit a dělat zásadnější technologický posun. A samozřejmě zefektivňuje práci.
Základy znalosti operačního systému Unix typicky Linux se také hodí.

HTTP, HTML

Internet a webové aplikace jsou dneska všude, proto každý programátor se typicky setkal s protokolem HTTP, značkovacím jazykem HTML a CSS. Dá se tedy předpokládat, že je schopný svoji aplikaci začlenit do šablony, kterou připravil designer a kodér.

Dekompozice

Pro potřeby rozdělení projektu na jednotlivé části, je potřeb umět požadavky a systémy dekomponovat na menší části. Tím jednotlivé části budou fungovat nezávisle a tím projekt bude přehlednější udržitelnější a bezpečnější. Zároveň na takové části jdou použít předpřipravená řešení. V neposlední řade dekompozice umožňuje konkrétněji udělat odhady jednotlivých části a tím zpřesnit odhad a po naprogramování lépe vidět, které části aplikace jsou již hotové

Soustředit

Promyslet požadavky a navrhnout řešení dá velkou práci. Nejdříve je potřeba pochopit daný úkol a následně vymyslit řešení, které bude nejen funkční, ale typicky u udržitelné. na to vše je potřeba čas a klid - soustředit se. O lidskou pozornost bojuje čím dál víc zájemců, a tak není divu vyvíjet software na míru není pro každého. Ostatně nechtsi každý vpomene jak se musel soustředit při písemkách z matematiky a fyziky nebo pak na mateamtických a fyzikálních olympiádách.

Odhady a kritické myšlení

Před vývojem softwaru je potřeba vzít mnoho věcí v potaz včetně zdrojů - hlavně finančních. Proto je potře umět udělat odhad náročnosti. realita od odhadu sice bude jiná, ale pokud se udělá odborně je to lepší než věštění z křišťálové koule.

V rámci odhadů se dá poukázat i na rizika, ať už v časové náročnosti nebo možnostech jestli je požadavek realizovatelný. U nepredikovatelných věcí by se však měl udělat nějaký pokusný prototyp.

Jedním z rizik může být i neočekávaný vstup, ať už uživatelský nebo jiný. Takovéto neplánované vstupy je potřeba očekávat přemýšlet nad nimi a podle toho aplikaci přizpůsobit - ošetřit vstupy a snažit se pokrýt všechny možnosti.

Při použití kritického myšlení se ještě během zadání může ukázat, že realizace se může udělat jinak a lépe než zákazník požadoval, nebo že zákazník potřebuje něco jiného nebo vyvstanou nové nápady na požadavky, které můžou produkt zlepšit.

Být fit

Udržovat se v dobrém fyzickém a psychickém stavu, je důležité pro dlouhodobé podávání dobrého výkonu. Každý člověk by se měl dobře stravovat a každý potřebuje pohyb. Vzhledem k tomu, že programátorova práce je v kanceláři a typicky v sedě, případně ve stoje, je to pořád monotonní strnulá pozice. Proto musí programátor do svého denní programu pravidelně a často zařazovat pohyb. Jinak mu hrozí zdravotní problémy jako je cukrovka atd a typicky bolesti zad. A určitě žádná firma nechce, aby jejich zaměstnanec chodil po doktorech.

Učit se

Obor Informačních technologii je velký složitý a hlavně se neustále mění. Proto schopnost učit se je základ nejen pro růst, ale i udržení se v oboru.

Realizace IT projektů

Bohužel ke komplexnosti a velikosti IT projektů ani při zajištění schopných vývojářů se nedá zaručit časová a tím i finanční náročnosti. Programátor, který však splňuje výše uvedené body má nejlepší předpoklady k tomu, aby projekt realizoval a zároveň měl schopnost poukázat na rizika, které můžou realizaci ohrozit. A je schopen udělat plán, tak aby se rizika minimalizovala - ostatně od toho slouží projektové řízení.

Jak zhodnotit firmu?

Z praxe jsem si všiml několika zajímavostí. Některé firmy kladou důraz na objektové programování, to je vetšinou proto, že v takových firmách objektové programování moc nepraktikují. Nebo hodně mluví o testování například pomocí UnitTestingu, ale pak se ukáže, že v praxi jde testování stranou.

Nejlepší tak je nastoupit a ono se uvidí. Pokud máte v dané firmě známé, tak se poptat jich.

Jak zhodnotit kandidáta?

Po úvodním rozhovoru co dělal a s čím má zkušenost mu rovnou přidělte práci.

Články na podobné téma

Programovací jazyk Rust
NodeJS: vývoj, konfigurace serveru
Nette security bug CVE-2020-15227
Jak porovnat dvě stejné databáze?
REST API: API platform
Vlastní web a mail hosting se softwarem ISP Config
Programovní v SQL: PostgreSQL, MySQL/MariaDB
HTTPS: zabezpečený web
NoSQL databáze Mongo DB
Linux a MS SQL server
Co je pracovní náplň programátora
Lokalizace aplikací v jazyce Python
Jaký mail a web hosting vybrat
How to make wireless low power Arduino
Digispark - Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Program Roulette
Vývoj pro procesory ARM s Arduino IDE
Wireless low power Arduino
Pyradio - Python program for receive Internet radio with text user inteface
UPS monitor pro Android
Bezdrátový bateriově napájený WiFi teploměr
Jak programovat WiFi procesor ESP8266
Comparison IQRF vs Wireless Arduino
Jakou platformu zvolit pro eshop? Například Prestashop
Development kits and gateways for wireless platform IQRF

OpenStreetMap a GPS trasy v mapě na webu
Quickplay
Java program pro přehledné monitorování záložních zdrojů
Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux - IQRF
Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
O programování a ruzné programy v jazyce Java, Python a dalších
Java program a applet Kalkulačka
Java program na výpočet kvadratické rovnice

Odběr novinek

Pokud máte zájem dostávat příležitostně na email novinky.
Můžete se vyplněním emailu registrovat k odběru novinek.


+