Programerska kariera. Poglavje 3. Univerza

Nadaljevanje zgodbe "Programerska kariera".

Po končani večerni šoli je prišel čas za študij na univerzi. V našem mestu je bila ena tehnična univerza. Imela je tudi eno fakulteto “Matematika in računalništvo”, ki je imela en oddelek “Računalniški sistemi”, kjer so usposabljali bodoče informatike – programerje in administratorje.
Izbira je bila majhna in prijavil sem se na specialnost "Računalniško inženirsko programiranje". Pred nami sta bila 2 sprejemna izpita. Pri jeziku in matematiki.
Pred izpiti je potekal razgovor, izbira oblike usposabljanja - proračunska ali pogodbena, t.j. brezplačno ali za denar.

Moji starši so bili prisotni na mojem razgovoru in so bili zaskrbljeni glede sprejema. Seveda so izbrali pogodbeno obliko izobraževanja. Mimogrede, stalo je okoli 500 dolarjev na leto, kar je bilo leta 2003 veliko denarja, sploh za naše malo mesto. Dobro se spomnim očetovega dialoga z dekletom iz sprejemne pisarne:
Deklica: Lahko poskusite opraviti izpite na proračun, in če ne deluje, preklopite na pogodbo. Plačate lahko na obroke.
Oče: Ne, odločili smo se že, da se bomo prijavili na razpis
Deklica: No, zakaj, nič ne tvegate
Oče: Ne, še vedno je tveganje. Povejte mi, ali se vsi prijavljajo za pogodbo?
Deklica: Da, vsi. Verjetno samo popolni bedaki ne morejo
Oče: Potem imava možnost ... je rekel in se nasmehnil in podpisala sva dokumente za sprejem

Seveda so bili nastopi iz srednje šole še sveži v spominu mojih staršev, tako da z leti razumem, zakaj so to rekli.

Poleti, pred vpisom, sem še naprej kupovala knjige za celih 40 dolarjev, ki mi jih je babica dala od svoje pokojnine.
Iz nepozabnega in pomembnega:
1. "UML 2.0. Objektno usmerjena analiza in oblikovanje". Knjiga, ki me je naučila oblikovati programsko opremo katere koli kompleksnosti, razmišljati o arhitekturi, vse razčleniti na komponente, pisati primere uporabe in risati diagrame UML. To je znanje, ki ga potrebujejo starejši, vodilni delavci in arhitekti. Tisti, ki materializirajo sistem iz praznine, ko obstaja le opis ideje.
Poznam ljudi, ki so že čez 30 let, pa se še vedno ne morejo odločiti, razen če ni ukaza od zgoraj, od višjega razvijalca. Pri freelancingu in delu na daljavo, ko pogosto delate s stranko ena na ena, je to znanje tudi neprecenljivo.
Pomembni so tudi za neodvisne razvijalce, ki ustvarjajo nove aplikacije in storitve. Čeprav se malokdo obremenjuje s podrobnim dizajnom. Zato imamo tako kakovostno programsko opremo, ki pogoltne ves pomnilnik, s pokvarjenim UX.
2. "Standard ANSI C++ 98". Ni ravno knjiga, a vsebuje več kot 800 strani osnovnih informacij. Seveda ga nisem bral po razdelkih, ampak sem se raje skliceval na posebna jezikovna pravila, ko sem razvijal svoj prevajalnik C++. Globine znanja jezika, po študiju in implementaciji standarda, ni mogoče opisati s kakšnim čudovitim epitetom. Lahko rečemo, da o jeziku veš vse in še več. Zelo dolgo, mukotrpno delo za preučevanje standarda. Čakalo pa me je še 5 let fakultete, tako da me nihče ni silil
3. "Delphi 6. Praktični vodnik.". Bil je hiter skok v svet GUI in laskanja obliki. Vstopnega praga skoraj ni bilo, Pascala pa sem že kar dobro poznal. Med študijem na univerzi sem levji delež komercialnih programov napisal v Delphiju. To je bila programska oprema za univerzitetne podiplomske študente, računovodstvo za mala podjetja, vlado. institucije. Potem je bilo več samostojnih naročil. Sredi XNUMX-ih je Delphi prevladoval na trgu razvoja Windows. Do zdaj lahko na blagajni v lokalnih trgovinah vidite programe z znanimi pisavami in kontrolniki, kar takoj razlikuje aplikacijo Delphi od katere koli druge
4. "Vadnica MFC". Ko smo obvladali Delphi, je bilo logično nadaljevati ustvarjanje uporabniškega vmesnika v C++. Bilo je veliko težje, ni se vse izšlo in je bilo razumljivo. Sem pa to tehnologijo pripeljal tudi do stopnje uporabe v komercialnih projektih. Eno nemško protivirusno podjetje še danes distribuira moj program, napisan v MFC.
5. "3 diski s knjižnico MSDN 2001". Interneta nisem imel takoj in kolikor se spomnim, knjižnice MSDN leta 2003 ni bilo na spletu. V vsakem primeru mi je bilo lažje namestiti referenčno knjigo MSDN na svoj lokalni računalnik in zlahka najti dokumentacijo za katero koli funkcijo WinApi ali razred MFC.
Programerska kariera. Poglavje 3. Univerza
Najpomembnejše prebrane knjige v obdobju 2002-2004

Gre za knjige, ki so bile prebrane v obdobju 2002-2004. Seveda je zdaj to zanikrna zapuščina, ki se v serijah prepisuje z uporabo .NET in spletnih tehnologij. Ampak to je moja pot, mogoče je kdo od vas imel podobno.

Prvi semester

Konec poletja je čas za sprejemne izpite na fakulteto. Vse je potekalo gladko. Opravila sem jezikovno-matematični izpit in bila vpisana v prvi letnik smeri Programiranje računalniških sistemov.
Prvega septembra sem se, kot je bilo pričakovano, odpravila v prve ure v življenju. »Študentski čas je najsvetlejši čas v življenju,« mi je rekla mama. Rade volje sem verjel.
Prvi dan so potekali 3 pari splošnoizobraževalnih predmetov, vsi v skupini so se spoznali in na splošno je univerza pustila prijeten vtis.
Končno so nas začeli učiti pravega programiranja v C! In poleg tega so učili zgodovino računalništva, digitalne tehnologije in veliko drugih informacij, ki so bile zame pomembne. Tudi kletvice. analiza je bila koristna, saj mi je omogočila globlje razumevanje tega, kar je napisal globoko spoštovani Donald Knuth.

Ure programiranja so zame potekale v vzdušju vožnje. Končno so ljudje prišli k meni po pomoč. Počutila sem se potrebno. Na začetku ure smo dobili nalogo napisati program. Naloga je bila zasnovana za en par in pol, nato pol ure za testiranje. Nalogo mi je uspelo napisati v 3-5 minutah, preostali čas pa sem hodil po pisarni in pomagal drugim pri odkrivanju problema.
Za celotno skupino ni bilo dovolj računalnikov, zato smo največkrat sedeli po dva za en računalnik. Ko so videli moje sposobnosti, so se trije, štirje, včasih celo 5-6 ljudi usedli k moji mizi in brez oklevanja sedli, da bi se naučili, kar sem se naučil pred nekaj leti iz knjige Kernighana in Ritchieja.
Sošolci so videli moje sposobnosti in se sami domislili vprašanj ali pa so se ponudili, da se po pouku samo družimo. Tako sem pridobil veliko prijateljev, z večino jih prijateljujemo še danes.

Pozimi je bil čas za prvo sejo. Skupaj je bilo potrebno opraviti 4 predmete: 2 vrsti višje matematike, zgodovino in programiranje. Vse je minilo, nekaj 4 točke, nekaj 3. In samodejno so mi dodelili programiranje. Učitelji so že poznali moje sposobnosti, zato niso videli smisla, da bi me testirali. Z veseljem sem prišel na sejo s svojo snemalno knjižico, da sem vanjo takoj dobil podpis, in se nameraval vrniti domov, ko so me sošolci prosili, naj ostanem in stojim pred vrati. No. Ko sem se postavil na okensko polico, na izhodu iz pisarne, sem začel čakati. Zraven mene se je motal še en tip, ki je prav tako avtomatsko naredil izpit.
"Zakaj ostajaš tukaj," sem vprašal
— »Želim zaslužiti z reševanjem problemov. Zakaj si tukaj?
- "Jaz tudi. Enostavno ne bom zaslužil denarja. Če potrebujete pomoč, potem se bom iz srčne dobrote odločil."
Moj nasprotnik je okleval in nekaj zamrmral v odgovor.

Čez nekaj časa so sošolci začeli zapuščati občinstvo in s seboj odnesti prepognjene liste papirja, na katerih so bile naloge iz izpita.
»Pomagaj mi pri odločitvi,« je prosil prvi pogumnež. "Prav, zdaj se bom odločil," sem odgovoril. Ni minilo niti 5 minut, ko sem s kemičnim svinčnikom načečkal rešitev na zmečkan list papirja in jo vrnil. Ko so videli, da shema deluje, so ljudje začeli veliko pogosteje zapuščati občinstvo, včasih tudi po dva ali trije naenkrat.
Na moji službeni okenski polici so bili trije kupi listov. En paket vsebuje na novo prispele liste TODO. Pred menoj je bil list In Progress, zraven pa je ležal paket "Done".
To je bila moja najlepša ura. Celotna skupina, skoraj 20 ljudi, se je obrnila name po pomoč. In vsem sem pomagal.
In fant, ki je želel zaslužiti denar, je po nekaj minutah naglo odšel, zavedajoč se, da tukaj ni ničesar za ujeti, vsa pozornost je bila usmerjena na altruista.
Cela skupina je opravila izpit z oceno 4 in 5, zdaj pa imam 20 prijateljev in neomajno avtoriteto pri programiranju.

Prvi denar

Po zimski seji so se po celotni fakulteti razširile govorice, da obstaja tip, ki zna rešiti kakršen koli programski problem, ki nam ga dodelijo doma ali med sejo. In od ust do ust se je širilo ne le med bruci, ampak tudi med študenti višjih letnikov.
Kot sem že napisal, sem po "najlepši uri" na izpitu z vsemi v skupini razvil prijateljske odnose in z nekaj fanti smo začeli zelo tesno komunicirati. Postala sva prava prijatelja in veliko časa preživela zunaj univerze. Za lažjo predstavo jih poimenujmo Elon in Alen (vzdevka sta blizu pravim).
Elona smo klicali po imenu, a Alain je dobil vzdevek v čast Alaina Delona, ​​zaradi njegove sposobnosti, da zapelje vsako lepoto. Okrog njega so dobesedno krožila dekleta v različnih množicah. Alain Delon ni imel para pri spoznavanju ljudi in začenjanju razmerij za noč. Za ženski spol je bil pravi alfa samec, kar je za večino informatikov povsem neobičajno. Poleg ljubezenskih afer je bil Alain po poklicu oblikovalec. In če je moral kaj narisati, na primer takrat priljubljene utripajoče pasice formata Web 1.0, je to naredil z lahkoto.

O Elonu je mogoče povedati veliko več. Z njim se srečujemo še danes, deset let po univerzi. Prva leta je bil suh, precej molčeč fant. (Enakega ne moremo reči za današnjega velikega obraza v džipu). Vendar sem bil enak - suh in molčeč. Zato mislim, da sva hitro našla skupni jezik.
Pogosto smo se po pouku jaz, Elon in Alen zbrali v pivnici, pokriti s ponjavo. Prvič, bilo je čez cesto od univerze, in drugič, za "rubelj" in 50 kopeckov bi lahko dobili nekaj dobrot za 2 uri zažigalne zabave. Kot točeno pivo in krekerji. Toda bistvo je bilo drugačno.
Elon in Alen sta bila iz drugih mest in sta živela v najeti sobi. Nenehno jim je primanjkovalo denarja, bili so časi, ko so morali biti lačni. Srečne trenutke, ko so na kartico prejeli 10 $ štipendije, so praznovali na isti dan in takrat je bil čas, da »zategnejo pasove« in živijo od tega, kar Bog pošlje.

Seveda je ta situacija motivirala obiskujoče študente, da so iskali načine za dodaten zaslužek. In pred njimi je na dosegu roke sedela »bistra glava« v moji podobi. Ki je tudi upogljiva in le redko zavrne pomoč ljudem.
Ne vem, če sem pravilno opisal tisto situacijo, a na koncu so ta druženja v pubu pripeljala do ustanovitve prvega IT podjetja v moji karieri, imenovanega SKS. Ime je bilo preprosto sestavljeno iz prvih črk naših priimkov. Naše mlado podjetje, ki ga predstavljajo trije ustanovitelji, je v naslednjih štirih letih raztrgalo konkurenco in celotno univerzo.

Elon je bil ROP. Se pravi vodja komerciale. Med njegovimi nalogami je bilo namreč iskanje novih strank za naše zunanje izvajanje. Prodajni kanal so bili vodoravno natisnjeni A4 letaki z enostavnim napisom: “Reševanje programskih problemov.” In spodaj je Elonova telefonska številka.
Tovrstno zunanje oglaševanje je bilo postavljeno v vseh nadstropjih, kjer so se lahko pojavili študenti programiranja.
Dodaten, močnejši z vidika zvestobe kupcev, je bil ustni prodajni kanal.

Poslovni model je bil preprost. Preko priporočila ali oglasa nas je kontaktiral študent. Opisal je programski problem, ki ga je bilo treba rešiti do določenega roka, jaz pa sem ga rešil za študentsko ceno. Elon se je ukvarjal s prodajo in prejemal svoj odstotek. Alain Delon je manjkrat sodeloval pri našem poslu, a če smo morali narediti dizajn, sliko ali pritegniti dodatne stranke, je bil vedno v pomoč. S svojim šarmom je k nam pripeljal kar nekaj novih ljudi. Vse, kar sem moral storiti, je bilo obdelati ta cevovod s hitrostjo 5–10 nalog na dan. Roki so bili strogi - ne več kot teden dni. In pogosteje kot ne, je bilo treba to storiti včeraj. Zato so me takšne okoliščine hitro naučile pisati programe v “flowu”, ne da bi me motila vsaka malenkost, kot je potres z magnitudo 5,9 ali večja nesreča za oknom.

V najbolj vročem letnem času, pred sejo, torej decembra in maja, se je zdelo, da imam na računalniku vse fakultetne naloge. Na srečo jih je bilo večinoma istovrstnih, še posebej, ko nas je kontaktiral veletrgovec, ki ga zastopa predstavnik celotne skupine. Potem je bilo mogoče narediti 20 nalog, na primer v asemblerju, spremeniti le 2-3 vrstice. V taki sezoni so svinci tekli kot reka. Edino, kar nam je manjkalo, so bile diskete. V letih 2003–2005 revni študentje v našem mestu niso imeli prenosa denarja prek interneta. Poleg tega ni bilo nobenih jamstev za plačilo, kar se zdaj imenuje escrow. Zato se je podjetje SKS, kot izvajalec naročil, dogovorilo za termin na območju univerze in smo dali disketa z rešitvijo. Refunda (iz angleškega refund - vračilo plačila na zahtevo stranke) skoraj ni bilo. Vsi so bili zadovoljni in so prejeli svojih 4-5 točk, če so se naučili, kaj sem dodal v datoteko readme.txt na disketi. Čeprav je tudi preprosta predstavitev popolnoma delujočega programa med učitelji pogosto povzročila vau učinek.

Cena je bila seveda smešna, vendar smo ga vzeli v količini. Na primer, tipična domača naloga stane 2-3 $. Tečajna naloga 10 $. Enkrat je izpadel jackpot v obliki programa za delo kandidata, in sicer kar 20 dolarjev za prijavo za podiplomskega študenta, ki se pripravlja na zagovor. V vroči sezoni se lahko ta dohodek pomnoži s 100 strankami, kar je na koncu več kot povprečna plača v mestu. Počutili smo se kul. Lahko so si privoščili nočne klube in se tam zabavali, namesto da bi se davili s čeburekom do zadnjega centa.

Z vidika mojih sposobnosti so se z vsako novo študentsko nalogo množile. Začeli smo prejemati prijave z drugih fakultet, z drugačnim programom usposabljanja. Nekateri študenti višjih letnikov so Javo in XML že uporabljali v celoti, ko smo se nagibali k C++/MFC. Nekateri so potrebovali Assembler, drugi PHP. Pri reševanju problemov sem zase spoznal cel živalski vrt tehnologij, knjižnic, formatov za shranjevanje podatkov in algoritmov.
Ta univerzalizem se mi je ohranil do danes. Pri delu na projektih se uporabljajo tudi različne tehnologije in platforme. Zdaj lahko pišem programsko opremo ali aplikacijo za katero koli platformo, OS ali napravo. Kakovost bo seveda različna, a za posel, s katerim se pretežno ukvarjam, je praviloma pomemben proračun. In orkester enega človeka zanje pomeni zmanjšanje proračuna natanko toliko, kolikor razvijalcev lahko nadomestim s svojim znanjem.

Če govorimo o največji koristi, ki mi jo je prinesel študij na univerzi, to ne bi bila predavanja algoritmov ali filozofije. In ne bo se "naučil učiti", kot je moderno reči o univerzah. Najprej bodo to ljudje, s katerimi smo po treningu ostali v prijateljskih odnosih. In drugič, to je isto podjetje SKS, ki me je izkovalo v profesionalnega razvijalca, s pravimi in raznolikimi naročili.
Rad bi se spomnil fraze, ki je zelo primerna za ta del zgodbe: Človek postane programer, ko drugi začnejo uporabljati njegove programe in za to plačujejo denar..

Tako je bila blagovna znamka podjetja SKS splošno znana ne le v študentskih krogih, ampak tudi med učitelji. Bil je celo primer, ko je eden od učiteljev prišel k meni domov, da bi mu pomagal napisati program za njegove znanstvene potrebe. On pa mi je pomagal pri specializaciji. Oba sva se tako vživela v delo, da sva ob svitu oba zaspala. On na kavču, jaz pa na stolu pred računalnikom. Vendar sta opravila svoje naloge in oba sta bila zadovoljna z delom drug drugega.

Pretvorba usode

Začel se je 4. letnik univerze. Zadnji tečaj, po zaključku katerega se pridobi diploma. Splošnoizobraževalnih predmetov tako rekoč ni bilo, temveč le tiste, povezane z računalniki in omrežji. Zdaj mi je včasih žal, da nisem imel časa ali nisem pokazal zanimanja za isto elektroniko ali notranjo strukturo omrežij. Zdaj to zaključujem iz nuje, vendar sem prepričan, da je to osnovno znanje potrebno za vsakega razvijalca. Po drugi strani pa ne morete vedeti vsega.
Končeval sem s pisanjem lastnega prevajalnika C++, ki je že znal preverjati napake v kodi po standardu in generirati navodila za sestavljanje. Sanjal sem, da bom lahko prodal svoj prevajalnik za 100 dolarjev na licenco. To sem pomnožil s tisoč strankami in mentalno
prepeljati do Hammerja, s 50 Centovim basom, ki je bruhal iz zvočnikov, in lepoticami na zadnjem sedežu. Kaj lahko storiš, pri 19 letih - takšne so prioritete. Trik mojega domačega prevajalnika je bil v tem, da je izdeloval napake v ruščini, namesto v angleščini iz Visual C++ in gcc, kar ni vsem razumljivo. To sem videl kot ubijalsko funkcijo, ki je ni izumil še nihče na svetu. Mislim, da nima smisla pripovedovati naprej. Ni prišlo do prodaje. Dosegel pa sem poglobljeno znanje jezika C++, ki me hrani še danes.

V četrtem letniku sem vedno manj hodil na fakulteto, ker sem poznal večino programa. In česar nisem znal, sem rešil tako, da sem barantal s študentom, ki se razume na primer v elektroniko ali teorijo verjetnosti. Česa si takrat nismo izmislili. In nevidne slušalke na žici, v katere je bil narekovan odgovor. In teči iz učilnice, da ti guru svoje specialnosti v 2 minutah napiše rešitev celotnega izpita. Bilo je krasno.
Med istim tečajem sem začel razmišljati o pravi službi. S pisarno, pravimi komercialnimi aplikacijami in spodobno plačo.
A takrat si v našem mestu lahko našel službo le kot programer
"1C: Računovodstvo", kar mi sploh ni ustrezalo. Čeprav iz brezupa, sem bil na to že pripravljen. Takrat je moja punca pritiskala name, naj se preselim v ločeno stanovanje.
Sicer pa spanje s starši skozi zid sploh ni comme il faut. Da, in že sem bil utrujen od reševanja študentskih problemov in želel sem nekaj več.

Težav ni bilo od nikoder. Pomislil sem, da bi na mail.ru dal oglas, da iščem službo s plačo 300 $ za delovno mesto C++/Java/Delphi programerja. To je leta 2006. Na kar so v bistvu odgovorili nekaj takega: "Mogoče bi morali pisati Billu Gatesu s takimi zahtevami za plačo?" To me je razburilo, a med kupom podobnih odgovorov se je našla oseba, ki me je pripeljala v freelance. To je bila edina priložnost v našem obubožanem Las Vegasu, da sem dobro zaslužil s tem, kar sem znal.
Tako se je študij na univerzi gladko prelil v delo na izmenjavi svobodnjakov. Če zaključimo temo o univerzi, lahko rečemo naslednje: nisem šel v 5. letnik. Bilo je eno programiranje in tak koncept, kot je "brezplačna udeležba", ki sem ga uporabil 146%.
Edina stvar, ki jo je bilo treba narediti, je bil zagovor specialistične diplome. Kar mi je s pomočjo prijateljev tudi uspelo. Naj povem, da sem se do tega tečaja že preselil od staršev v najemniško stanovanje in kupil nov avto. Tako se je začela moja kariera profesionalnega razvijalca.

Naslednja poglavja bodo posvečena posameznim projektom, najhujšim izpadom in najbolj neustreznim naročnikom. Kariera v freelancingu od 5 do 40 $/uro, zagon lastnega startupa, kako so me izključili iz borze svobodnjakov Upwork in kako sem iz freelancinga postal vodja ekipe v drugi največji naftni družbi na svetu. Kako sem se po pisarni in startupu vrnil nazaj k delu na daljavo ter kako sem rešil interne težave s socializacijo in slabimi navadami.

Se nadaljuje ...

Vir: www.habr.com

Dodaj komentar