carriera di programmatore. Capitolo 3. Università

Continuazione della storia "Carriera di programmatore".

Dopo aver finito la scuola serale, era ora di andare all'università. Nella nostra città c'era un'università tecnica. Aveva anche una facoltà di “Matematica e Informatica”, che aveva un dipartimento di “Sistemi informatici”, dove si formavano i futuri lavoratori IT: programmatori e amministratori.
La scelta era piccola e ho fatto domanda per la specialità "Programmazione di ingegneria informatica". C'erano 2 esami di ammissione davanti. Nella lingua e nella matematica.
Gli esami sono stati preceduti da un colloquio e dalla scelta della forma di formazione: budget o contratto, ad es. gratis o a pagamento.

I miei genitori erano presenti al mio colloquio ed erano preoccupati per l'ammissione. Naturalmente hanno scelto la forma contrattuale della formazione. A proposito, costava circa 500 dollari all'anno, una cifra considerevole nel 2003, soprattutto per la nostra piccola città. Ricordo bene il dialogo di mio padre con la ragazza dell'ufficio ammissioni:
La ragazza: puoi provare a superare gli esami con un budget limitato e, se non funziona, passare a un contratto. Puoi pagare a rate.
Padre: No, abbiamo già deciso che faremo domanda per un contratto
La ragazza: Ebbene, non rischi nulla
Padre: No, è comunque un rischio. Dimmi, stanno tutti facendo domanda per un contratto?
La ragazza: Sì, lo fanno tutti. Probabilmente solo i completi idioti non possono farlo
Padre: Allora abbiamo una possibilità... disse sorridendo e firmammo i documenti per l'ammissione

Naturalmente, le esibizioni del liceo erano ancora fresche nella memoria dei miei genitori, quindi nel corso degli anni ho capito perché lo dicevano.

D’estate, prima del ricovero, continuavo a comprare libri per tutti i 40 dollari che mia nonna mi dava dalla sua pensione.
Dal memorabile e significativo:
1. "UML 2.0. Analisi e progettazione orientata agli oggetti". Un libro che mi ha insegnato come progettare software di qualsiasi complessità, pensare attraverso l'architettura, scomporre tutto in componenti, scrivere casi d'uso e disegnare diagrammi UML. Questa è la conoscenza di cui hanno bisogno senior, lead e architetti. Quelli che materializzano un sistema dal vuoto, quando dell'idea c'è solo la descrizione.
Conosco persone che hanno già più di 30 anni e ancora non possono prendere una decisione a meno che non ci sia un ordine dall'alto, da parte di uno sviluppatore di rango superiore. Anche nel lavoro freelance e a distanza, quando spesso lavori individualmente con un cliente, questa conoscenza ha un valore inestimabile.
Sono rilevanti anche per gli sviluppatori indipendenti che creano nuove applicazioni e servizi. Sebbene poche persone si preoccupino della progettazione dettagliata. Ecco perché abbiamo software di tale qualità, che inghiotte tutta la memoria, con una UX storta.
2. "Standard ANSI C++ 98". Non proprio un libro, ma contiene oltre 800 pagine di informazioni di base. Naturalmente non l'ho letto sezione per sezione, ma ho fatto piuttosto riferimento a regole linguistiche specifiche durante lo sviluppo del mio compilatore C++. La profondità della conoscenza della lingua, dopo aver studiato e implementato lo standard, non può essere descritta da nessun epiteto meraviglioso. Possiamo dire che sai tutto della lingua, e anche di più. Lavoro molto lungo e minuzioso per studiare lo standard. Ma avevo 5 anni di università davanti a me, quindi nessuno mi spingeva
3. "Delphi 6. Guida pratica.". È stato un rapido salto nel mondo della GUI e delle forme lusinghiere. Non c'era quasi nessuna soglia d'ingresso e conoscevo già abbastanza bene Pascal. Mentre studiavo all'università, ho scritto la maggior parte dei programmi commerciali a Delphi. Si trattava di software per studenti laureati, contabilità per piccole imprese e governo. istituzioni. Poi ci sono stati diversi ordini freelance. A metà degli anni XNUMX, Delphi dominava il mercato dello sviluppo Windows. Fino ad ora, alla cassa nei negozi locali puoi vedere programmi con caratteri e controlli familiari, che distinguono immediatamente un'applicazione Delphi da qualsiasi altra
4. "Tutorial MFC". Avendo padroneggiato Delphi, era logico continuare a creare l'interfaccia utente in C++. È stato molto più difficile, non tutto ha funzionato ed era comprensibile. Tuttavia, ho portato questa tecnologia anche nella fase di applicazione in progetti commerciali. Il mio programma, scritto in MFC, è distribuito ancora oggi da un'azienda tedesca di antivirus.
5. "3 dischi con MSDN Library 2001". Non ho avuto subito Internet e, per quanto ricordo, la MSDN Library non era online nel 2003. In ogni caso, per me è stato più semplice installare il libro di riferimento MSDN sul mio PC locale e trovare facilmente la documentazione per qualsiasi funzione WinApi o classe MFC.
carriera di programmatore. Capitolo 3. Università
I libri più significativi letti nel periodo 2002-2004

Questi sono i libri letti nel periodo 2002-2004. Naturalmente, ora questa è un'eredità squallida, che viene riscritta in batch utilizzando le tecnologie .NET e Web. Ma questo è il mio percorso, forse alcuni di voi ne hanno avuto uno simile.

Primo semestre

A fine estate è tempo di sostenere gli esami di ammissione all'università. Tutto è andato liscio. Ho superato l'esame di lingua e matematica e sono stato iscritto al primo anno della specialità Programmazione di Sistemi Informatici.
Il primo settembre, come previsto, ho frequentato le prime lezioni della mia vita. "Il periodo da studente è il momento più luminoso della vita", mi ha detto mia madre. Ci ho creduto volentieri.
Il primo giorno sono state superate 3 coppie di materie di istruzione generale, tutti si sono conosciuti nel gruppo e nel complesso l'università ha lasciato una piacevole impressione.
Finalmente hanno iniziato ad insegnarci la vera programmazione in C! E, inoltre, mi hanno insegnato la storia dell'informatica, della tecnologia digitale e molte altre informazioni che per me erano rilevanti. Anche giurando. l'analisi è stata utile perché mi ha permesso di comprendere più profondamente ciò che ha scritto lo stimatissimo Donald Knuth.

Per me le lezioni di programmazione si sono svolte in un'atmosfera di guida. Alla fine, le persone sono venute da me per chiedere aiuto. Mi sentivo necessario. All'inizio della lezione ci è stato assegnato il compito di scrivere un programma. L'attività è stata progettata per una coppia e mezza, quindi mezz'ora per i test. Sono riuscito a scrivere il compito in 3-5 minuti e per il resto del tempo ho camminato per l'ufficio e ho aiutato gli altri a capire il problema.
Non c’erano abbastanza computer per l’intero gruppo, quindi molto spesso sedevamo due alla volta davanti allo stesso PC. Vedendo le mie capacità, tre, quattro, a volte anche 5-6 persone si sono sedute vicino alla mia scrivania e non hanno esitato a sedersi per imparare quello che avevo imparato un paio di anni fa dal libro di Kernighan e Ritchie.
I miei compagni di classe vedevano le mie capacità e mi facevano domande da soli, o si offrivano di uscire semplicemente dopo le lezioni. È così che ho stretto molti amici, molti dei quali siamo ancora amici oggi.

In inverno era il momento della prima sessione. In totale, è stato necessario frequentare 4 materie: 2 tipi di matematica superiore, storia e programmazione. Tutto è passato, alcuni 4 punti, altri 3. E mi è stata assegnata la programmazione automaticamente. Gli insegnanti conoscevano già le mie capacità, quindi non vedevano il motivo di mettermi alla prova. Mi sono presentato felicemente alla sessione con il mio libretto per ottenere immediatamente una firma e stavo per tornare a casa quando i miei compagni di classe mi hanno chiesto di restare e stare fuori dalla porta. BENE. Dopo essermi sistemato sul davanzale della finestra, all'uscita dall'ufficio, ho cominciato ad aspettare. Accanto a me c'era un altro ragazzo, che ha superato l'esame automaticamente.
"Perché stai qui?", ho chiesto
— “Voglio fare soldi risolvendo i problemi. Perché sei qui?
- "Anche io. Semplicemente non farò soldi. Se hai bisogno di aiuto, allora, per la gentilezza del mio cuore, deciderò io”.
Il mio avversario esitò e mormorò qualcosa in risposta.

Dopo un po ', i compagni di classe hanno iniziato a lasciare il pubblico, portando con sé pezzi di carta piegati che contenevano i problemi dell'esame.
"Aiutami a decidere", chiese il primo temerario. “Va bene, decido adesso”, risposi. Non erano passati nemmeno 5 minuti prima che con una penna a sfera scarabocchiassi una soluzione su un pezzo di carta stropicciato e lo restituissi. Vedendo che il sistema funzionava, le persone cominciarono a lasciare il pubblico molto più spesso, e talvolta anche due o tre alla volta.
C'erano tre mucchi di foglie sul davanzale della finestra del mio lavoro. Una confezione contiene i fogli TODO appena arrivati. Davanti a me c'era un foglio di In Progress e accanto c'era un pacchetto di "Fatto".
Questa è stata la mia ora migliore. L'intero gruppo, composto da quasi 20 persone, si è rivolto a me per chiedere aiuto. E ho aiutato tutti.
E il ragazzo che voleva fare soldi se ne andò frettolosamente dopo pochi minuti, rendendosi conto che non c'era niente da catturare qui, tutta l'attenzione era focalizzata sull'altruista.
L'intero gruppo ha superato l'esame con i voti 4 e 5 e ora ho 20 amici e un'autorità incrollabile in materia di programmazione.

Primi soldi

Dopo la sessione invernale, in tutta la facoltà si sparse la voce che ci fosse un ragazzo in grado di risolvere qualsiasi problema di programmazione, che ci veniva assegnato a casa o durante la sessione. E il passaparola si è diffuso non solo tra le matricole, ma anche tra gli studenti senior.
Come ho già scritto, ho sviluppato rapporti amichevoli con tutti i membri del gruppo dopo "l'ora più bella" dell'esame e abbiamo iniziato a comunicare a stretto contatto con un paio di ragazzi. Siamo diventati veri amici e abbiamo trascorso molto tempo fuori dall'università. Per semplicità di presentazione, chiamiamoli Elon e Alen (i soprannomi sono vicini a quelli reali).
Abbiamo chiamato Elon per nome, ma Alain è stato soprannominato in onore di Alain Delon, per la sua capacità di sedurre qualsiasi bellezza. Le ragazze gli giravano letteralmente intorno, in numero vario. In termini di incontrare persone e avviare relazioni notturne, Alain Delon non aveva eguali. Era un vero maschio alfa per il sesso femminile, cosa del tutto insolita per la maggior parte degli specialisti IT. Oltre alle relazioni amorose, Alain era uno stilista per vocazione. E se aveva bisogno di disegnare qualcosa, ad esempio gli allora popolari banner lampeggianti del formato Web 1.0, lo faceva con facilità.

Si può dire molto di più su Elon. Lo incontriamo ancora oggi, dieci anni dopo l'università. Nei suoi primi anni era un ragazzo magro, piuttosto silenzioso. (Lo stesso non si può dire del ragazzo dalla faccia grossa di oggi in una jeep). Tuttavia ero lo stesso: magro e taciturno. Pertanto, penso che abbiamo trovato rapidamente un linguaggio comune.
Spesso dopo le lezioni, io, Elon e Alen ci riunivamo in una birreria, coperti da un telone. In primo luogo, era dall'altra parte della strada rispetto all'università e, in secondo luogo, per un "rublo" e 50 centesimi si potevano ottenere delle prelibatezze per 2 ore di festa incendiaria. Come birra alla spina e cracker. Ma il punto era diverso.
Elon e Alen provenivano da altre città e vivevano in una stanza in affitto. Erano costantemente a corto di soldi e c'erano momenti in cui dovevano soffrire la fame. Lo stesso giorno sono stati celebrati momenti felici, quando hanno ricevuto una borsa di studio di 10 dollari sulla loro carta, e poi è arrivato il momento di “stringere la cinghia” e vivere di ciò che Dio manda.

Naturalmente, questa situazione ha motivato gli studenti in visita a cercare modi per guadagnare denaro extra. E davanti a loro, a distanza di un braccio, sedeva una “testa luminosa” sotto forma di me. Che è anche flessibile e raramente si rifiuta di aiutare le persone.
Non so se ho descritto correttamente la situazione, ma alla fine questi incontri al pub hanno portato alla creazione della prima azienda informatica della mia carriera chiamata SKS. Il nome era composto semplicemente dalle prime lettere dei nostri cognomi. La nostra giovane azienda, rappresentata da tre fondatori, nei successivi quattro anni ha fatto a pezzi i concorrenti e l'intera università.

Elon era un ROP. Cioè, il capo del reparto vendite. Vale a dire, le sue responsabilità includevano la ricerca di nuovi clienti per la nostra attività di outsourcing. Il canale di vendita era costituito da volantini A4 stampati orizzontalmente, con una semplice scritta: "Risolvere problemi di programmazione". E sotto c'è il numero di telefono di Elon.
Questo tipo di pubblicità esterna è stata posizionata su ogni piano dove potevano apparire gli studenti che studiavano programmazione.
Un ulteriore canale, più forte in termini di fidelizzazione della clientela, è stato il canale di vendita tramite passaparola.

Il modello di business era semplice. Attraverso una segnalazione o un annuncio, uno studente universitario ci ha contattato. Ha descritto un problema di programmazione che doveva essere risolto entro una certa scadenza e l'ho risolto per il prezzo da studente. Elon era coinvolto nelle vendite e riceveva la sua percentuale. Alain Delon partecipava alla nostra attività meno spesso, ma se avevamo bisogno di realizzare un disegno, un'immagine o attirare altri clienti, era sempre disponibile. Con il suo fascino ci ha portato un sacco di nuove persone. Tutto quello che dovevo fare era elaborare questa pipeline a una velocità di 5-10 attività al giorno. Le scadenze erano rigorose: non più di una settimana. E il più delle volte, doveva essere fatto ieri. Pertanto, tali circostanze mi hanno rapidamente insegnato a scrivere programmi in un "flusso", senza essere distratto da ogni piccola cosa come un terremoto di magnitudo 5,9 o un grave incidente fuori dalla finestra.

Nella stagione più calda, prima della sessione, cioè a dicembre e maggio, mi sembrava di avere tutti i compiti dell’università sul computer. Per fortuna la maggior parte erano dello stesso tipo, soprattutto quando siamo stati contattati da un grossista rappresentato dal rappresentante di un intero gruppo. Quindi è stato possibile eseguire 20 attività, ad esempio in assembler, modificando solo 2-3 righe. In una stagione del genere, i cavi scorrevano come un fiume. L'unica cosa che ci mancava erano i floppy disk. Nel 2003-2005, gli studenti poveri della nostra città non potevano trasferire denaro tramite Internet. Inoltre, non c'erano garanzie di pagamento, che ora si chiamano escrow. Pertanto la società SKS, in qualità di evasore degli ordini, ha fissato un appuntamento sul territorio dell'università e noi abbiamo dato floppy disk con una soluzione. Non c'è stato quasi alcun rimborso (dall'inglese rimborso - restituzione del pagamento su richiesta del cliente). Tutti erano contenti e ricevevano i loro 4-5 punti se riuscivano a sapere cosa avevo aggiunto al file readme.txt sul floppy disk. Tuttavia, anche una semplice demo di un programma completamente funzionante ha spesso suscitato un effetto wow tra gli insegnanti.

Il prezzo era ridicolo, ovviamente, ma ne abbiamo preso in quantità. Ad esempio, un tipico compito domestico costa $ 2-3. Corsi 10 $. Il jackpot sotto forma di programma per il lavoro di un candidato è caduto una volta e ammontava a $ 20 per una domanda per uno studente laureato che si preparava per la sua difesa. Durante la stagione calda, questo reddito può essere moltiplicato per 100 clienti, che alla fine è superiore allo stipendio medio della città. Ci siamo sentiti bene. Potevano permettersi locali notturni e divertirsi lì, piuttosto che soffocarsi con il cheburek per l'ultimo centesimo.

Dal punto di vista delle mie capacità, si moltiplicavano con ogni nuovo compito dello studente. Abbiamo iniziato a ricevere candidature da altre facoltà, con un programma formativo diverso. Alcuni studenti senior utilizzavano già Java e XML al massimo delle loro potenzialità quando ci appoggiavamo a C++/MFC. Alcuni avevano bisogno di Assembler, altri di PHP. Ho imparato da solo un intero zoo di tecnologie, librerie, formati di archiviazione dei dati e algoritmi durante la risoluzione dei problemi.
Questo universalismo è rimasto con me fino ad oggi. Quando si lavora su progetti vengono utilizzate anche una varietà di tecnologie e piattaforme. Ora posso scrivere software o un'applicazione per qualsiasi piattaforma, sistema operativo o dispositivo. La qualità, ovviamente, varierà, ma per l'attività di cui mi occupo principalmente il budget è solitamente importante. E un'orchestra individuale per loro significa tagliare il budget esattamente quanto il numero di sviluppatori che posso sostituire con le mie capacità.

Se parliamo del beneficio più grande che mi ha portato studiare all’università, non sarebbero le lezioni di algoritmi o di filosofia. E non “imparerà a imparare”, come è di moda dire riguardo alle università. Innanzitutto, queste saranno le persone con cui siamo rimasti in rapporti amichevoli dopo l'allenamento. E in secondo luogo, questa è la stessa azienda SKS che mi ha trasformato in uno sviluppatore professionista, con ordini reali e diversificati.
Vorrei ricordare una frase che si adatta molto a questa parte della storia: Una persona diventa un programmatore quando altre persone iniziano a utilizzare i suoi programmi e pagano per questo..

Pertanto, il marchio aziendale SKS era ampiamente conosciuto non solo negli ambienti studenteschi, ma anche tra gli insegnanti. C'è stato anche un caso in cui uno degli insegnanti è venuto a casa mia per aiutarlo a scrivere un programma per le sue esigenze scientifiche. Lui, a sua volta, mi ha aiutato nella sua specializzazione. Eravamo entrambi così assorbiti dal nostro lavoro che all'alba ci addormentavamo entrambi. Lui è sul divano e io su una sedia davanti al computer. Ma hanno portato a termine i loro compiti ed entrambi erano soddisfatti del lavoro dell’altro.

Giro del destino

È iniziato il 4° anno di università. L'ultimo corso al termine del quale viene rilasciata una laurea. Non c'erano praticamente materie di istruzione generale, ma solo quelle legate ai computer e alle reti. Ora, a volte mi rammarico di non aver avuto tempo o di non aver mostrato interesse per l'elettronica o per la struttura interna delle reti. Ora lo sto finendo per necessità, ma sono sicuro che questa conoscenza di base sia necessaria per qualsiasi sviluppatore. D’altra parte non si può sapere tutto.
Stavo finendo di scrivere il mio compilatore C++, che era già in grado di verificare la presenza di errori nel codice secondo lo standard e generare istruzioni di assembly. Sognavo che stavo per poter vendere il mio compilatore per 100 dollari a licenza. L'ho moltiplicato per mille clienti e mentalmente
trasportato su un Hammer, con i bassi di 50 Cent che risuonavano dagli altoparlanti e le bellezze sul sedile posteriore. Cosa puoi fare a 19 anni? Queste sono le priorità. Il problema del mio compilatore fatto in casa era che produceva errori in russo, invece che in inglese di Visual C++ e gcc, che non è comprensibile a tutti. L'ho vista come una caratteristica killer che nessuno al mondo aveva ancora inventato. Penso che non abbia senso raccontare oltre. Non è arrivato alle vendite. Tuttavia, ho raggiunto una profonda conoscenza del linguaggio C++, che mi nutre ancora oggi.

Al quarto anno frequentavo sempre meno l'università perché conoscevo gran parte del programma. E quello che non sapevo l’ho risolto barattando con uno studente che capisse, ad esempio, l’elettronica o la teoria della probabilità. Quello che non abbiamo inventato allora. E cuffie invisibili su un filo in cui è stata dettata la risposta. E correre fuori dall'aula in modo che un guru nella sua specialità possa scriverti la soluzione dell'intero esame in 2 minuti. È stato un momento fantastico.
Durante lo stesso corso ho cominciato a pensare ad un lavoro vero e proprio. Con un ufficio, vere candidature commerciali e uno stipendio dignitoso.
Ma a quel tempo, nella nostra città, potevi trovare lavoro solo come programmatore
"1C: Contabilità", che non mi andava affatto bene. Anche se per disperazione, ero già pronto per questo. A quel tempo, la mia ragazza mi faceva pressione affinché mi trasferissi in un appartamento separato.
Altrimenti, dormire con i tuoi genitori attraverso il muro non è affatto comme il faut. Sì, ed ero già stanco di risolvere i problemi degli studenti e volevo qualcosa di più.

I guai sono arrivati ​​dal nulla. Ho pensato di pubblicizzare su mail.ru che stavo cercando un lavoro con uno stipendio di $ 300 per la posizione di programmatore C++/Java/Delphi. Questo è nel 2006. Al che sostanzialmente hanno risposto qualcosa del tipo: "Forse dovresti scrivere a Bill Gates con richieste di stipendio del genere?" Questo mi ha sconvolto, ma tra una serie di risposte simili, c'era una persona che mi ha portato a lavorare come freelance. Questa era l'unica opportunità nella nostra povera Las Vegas di guadagnare bei soldi facendo quello che sapevo fare.
Quindi gli studi all'università si sono trasformati senza intoppi nel lavoro nello scambio freelance. Chiudendo il tema dell'università possiamo dire quanto segue: non sono andato al 5° anno. C'era una programmazione e un concetto come "frequenza gratuita", che ho utilizzato al 146%.
L'unica cosa che bisognava fare era difendere un diploma di specializzazione. Cosa che ho fatto con successo con l'aiuto dei miei amici. Vale la pena dire che durante questo corso mi ero già trasferito dai miei genitori in un appartamento in affitto e avevo comprato una macchina nuova. È così che è iniziata la mia carriera di sviluppatore professionista.

I capitoli successivi saranno dedicati ai singoli progetti, ai fallimenti più gravi e ai clienti più inadeguati. Una carriera da freelance da 5 a 40 $/ora, il lancio della mia startup, come sono stato bandito dallo scambio freelance Upwork e come da freelance sono diventato team leader presso la seconda compagnia petrolifera più grande del mondo. Come sono tornato al lavoro da remoto dopo l'ufficio e l'avvio e come ho risolto i problemi interni con la socializzazione e le cattive abitudini.

To be continued ...

Fonte: habr.com

Aggiungi un commento