Domanda

Al momento di scegliere quello che vogliamo studiare, e facciamo con le nostre carriere e le vite, tutti noi abbiamo delle aspettative di ciò che sta per essere come. Ora che sono stato nel settore per quasi un decennio, ho riflettuto un po 'su quello che ho pensato (indietro quando stavo studiando Informatica) la programmazione di lavoro la vita stava per essere come, e come in realtà è svolta a essere.

I miei due più grandi colpi (o dovrei dire, aspettative rotti) sono di gran lunga l'enorme quantità di lavori di manutenzione coinvolti nel software, e la mancanza generale di professionalità:

  1. Manutenzione : A uni, eravamo tutti detto che la maggior parte del lavoro è software di manutenzione dei sistemi esistenti. Quindi sapevo di aspettarsi questo in astratto. Ma non avrei mai immaginato esattamente come sopraffare questo sarebbe rivelarsi. Forse è qualcosa che mentalmente vitrei, e speravano che sarei edificio fresco roba nuova da zero molto di più. Ma è davvero il caso che la maggior parte dei posti di lavoro sono prevalentemente di manutenzione, bug fixing e supporto orientato.

  2. La mancanza di professionalità : A uni, ho sempre avuto l'impressione che il lavoro del software commerciale è molto orientato al processo e rigorosamente costruito. Ho avuto le immagini di processi ISO, risme di documentazione tecnica, ogni caratteristica e bug di essere rigorosamente documentato, e un ambiente generalmente professionale. E 'venuto come uno shock enorme per rendersi conto che la maggior parte delle aziende di software non operano in modo diverso a un gruppo di studenti che lavorano su un grande progetto semestrale a lungo. E ho lavorato sia nel piccolo negozio trucco agile, e la media impresa che aziendale. Mentre io non direi che è sempre stato a titolo definitivo "non professionale", ci si sente sicuramente come l'industria del software (nel complesso) è lontano dal forte disciplina ingegneristica che mi aspettavo che fosse.

Qualcun altro ha avuto esperienze simili a questa? Quali sono i modi in cui le vostre aspettative di ciò che la nostra professione sarebbe come erano diverse alla realtà?

È stato utile?

Soluzione

I si sente l'uomo. Mi sono appena laureato poco più di un anno fa, infatti, saltato sulla prima offerta di lavoro che è venuto il mio modo e ha ottenuto il più grande shock della mia vita.

Le cose che non mi aspettavo:

lo stress scolastico e lo stress da lavoro non sono la stessa - Lo stress di lavorare su un progetto di scuola con gli amici, o di lavoro da solista, anche con quello incombente scadenza tesi o di difesa speciale progetto non si confronta con lo stress di scadenze di lavoro apparentemente irragionevoli, problemi di comunicazione, (un po 'di politica dell'ufficio) e crisi volte.

La mancanza di Best Practices - Come la vostra esperienza sulla professionalità. Prima di prendere il mio primo lavoro e durante il mio periodo di formazione, mi sono precipitato fuori la revisione e la lettura circa le migliori pratiche in ingegneria Programmazione e software. Questi non sono seguiti così come dovrebbero per poco pratico e, ad essere onesti, ragioni pratiche. E a volte, la conta delle conoscenze molto poco contro gli altri che sono semplicemente paura dell'ignoto e trattano queste pratiche con disprezzo.

Che cosa hanno insegnato a scuola era solo la punta di un iceberg - Pensare che quello che ho imparato auto-studio e dalle classi è stato sufficiente per ottenere me attraverso, sono rimasto scioccato a dir poco mentre fissavo a bocca aperta al primo pezzo di codice che avrei dovuto mantenere. Un sacco di abilità che uso ora sono state apprese sul posto di lavoro o durante il mio lavoro che continuo a chiedermi se avrei potuto fatto senza una laurea a tutti. XD

L'importanza della comunicazione - mi hanno fatto capire quello che tutte quelle lezioni di inglese sono stati per. Prima che il mondo reale, non ho potuto vedere la rilevanza di avere tre o quattro diverse classi di inglese in un college quando è stato insegnato fin da quando eravamo in prima elementare. Sei inutile nel tuo lavoro quando si può parlare con un computer ma non riescono a parlare con la gente.

Altri suggerimenti

La maggior parte del lavoro che fate non è innovativo

Quando alla Uni, ho lavorato su routine di intelligenza artificiale per il controllo di robot calcio-gioco, ho costruito compilatori e fatto il kernel del sistema operativo.

Ma nel mondo reale, il 99% * di sviluppo del software è in realtà piuttosto noioso. Ho sempre ammirato architetti o costruttori che, alla domanda "che cosa fai per vivere?" può puntare a un edificio o di qualsiasi altra cosa e dire "ho fatto che ". Ma la maggior parte gli sviluppatori di software non possono farlo. Alla domanda "che cosa fai per vivere?" la più vicina a quella che io abbia mai stato in grado di venire è quando ho usato per lavorare per una società che ha costruito il software che ha elaborato i messaggi SMS per le stazioni radio e simili ... potrei dire: "Sai quando il testo dentro al una stazione radio di votare per un brano, beh ho scritto il software che elabora i voti e roba ". Ancora nessuna dove vicino come fresco come in grado di puntare a un edificio e dire "ho costruito questo".

Naturalmente, ci sono le persone che possono dire "Ho lavorato su Windows" o qualsiasi altra cosa, ma sono sicuro che in realtà non dire a nessuno che, per paura del successivo domanda di essere " non riesco a ottenere la mia stampante al lavoro, si può risolvere questo per me? "

* e il 62% di tutte le statistiche sono costituite in loco

Se oggi si guarda al software, attraverso la lente della storia dell'ingegneria, è certamente l'ingegneria di una specie, ma è il tipo di ingegneria che le persone senza il concetto di arco fatto. La maggior parte del software di oggi è molto simile a una piramide egizia con milioni di mattoni accatastati l'uno sopra l'altro, senza integrità strutturale, ma appena fatto con la forza bruta e migliaia di schiavi. -Alan Kay 2004

l'intervista completa: http://queue.acm.org/detail.cfm?id=1039523

Non sono un settore veterinario; Al contrario, io sono un neo-laureato, ma da una scuola superiore CS negli Stati Uniti, ma la mia sensazione istintiva è che il modo in cui stiamo costruendo il software è sbagliato. Piuttosto che colpire il pulsante di pausa e riesaminando i fondamenti di come si programma che abbiamo appena si precipitò in avanti con fuori modelli datati dagli anni '50, '60 aggiungendo continuamente un po 'di zucchero sulla parte superiore. Se continuiamo avanti così non otterremo mai passato dove siamo a. Gli esseri umani solo non può gestire la complessità delle cose che sono la dimensione del codice di base MS Windows. Abbiamo bisogno di un modo nuovo. Non so di cosa si tratta.

Credo che questa è la ragione di fondo per la sensazione che grandi e piccoli negozi di software sembrano rendere il software per l'hacking insieme, senza alcuna comprensione profonda dei principi fondamentali.

I non ha ottenuto una laurea, ma ho preso un po 'presso le biblioteche e laboratori di college e università.

  • Big Iron - Le tecnologie erano insegnamento erano principalmente mainframe e minicomputer. Il decano del collegio uno mi ha detto che non sarei in grado di ottenere un lavoro perché non sapevo nemmeno cosa fosse un masterfile. Non avevo alcuna intenzione di lavorare su mainframe poiché non potevo permettere, ma non avevo intenzione di essere così sciocco da non essere un po 'preparati. VAXen erano fresche, e non vedevo l'ora di essere pagati per il codice per conto mio Micro VAX nel mio cubicolo. Che peccato che mercato totalmente imploso. (Come si è scoperto che avevo due posizioni di lavoro con mainframe ... come un imprenditore per IBM.)

  • Ingegneria del Software - Sulla scia della programmazione strutturata, SASD, e altre metodologie di progettazione, si potrebbe avere pensato che stavamo andando a essere veri e propri ingegneri. L'ho fatto. Ma gli insegnanti davano molto poco indicazioni sulle tecniche di progettazione che ho letto nella biblioteca. Gli studenti sono stati lasciati in balia di se stessi e micros reso troppo facile flail nel codice finché non ottengono una risposta erano felici con. Non mi rendevo conto di quanto di peggio è stato nel mercato del lavoro. In qualche modo ho avuto modo di fare un po 'di nuovo codice, quindi non era così noioso. Ma ho anche preso su un sacco, ed erano già abbastanza grave era come un nuovo progetto, perché ho dovuto sistemare un sacco di codice. E 'stata una combinazione di ricerca funzionalità esistenti e la creazione di nuovo codice (la sua sostituzione); la scrittura strumenti per semplificare il processo e istituendo una migliore gestione del progetto.

  • High-tech Carriera - E 'una cosa quando le scuole hanno edifici e attrezzature (apparecchiature schede perforate è stato sostituito il semestre prima ho iniziato ... nel 1984) vecchi, ma quando sei lavora in un magazzino poco illuminati o per un capo che si blocca sui clienti chiamando la linea di supporto, si inizia a capire la descrizione del lavoro non è in grado di includere la cottura popcorn con un laser a 5 megawatt.

  • Lo sviluppo è principalmente il lavoro di squadra. Ciò significa che la comunicazione (parlato e leggere), la lettura di codice di altre e riutilizzo dei moduli precedenti (sia in interni ed esterni) è qualcosa di faccia quasi tutti i giorni. Nel mio collegio, almeno ho dovuto codice con più persone in pochissime occasioni, così ho pensato che la parte principale del lavoro è stato quello di codice da solo, nel deserto. Non è.
  • spiegare le cose ai non-sviluppatori è difficile (anche coperti per il primo punto), ed è vostra responsabilità di fare i vostri punti (non del restante 99% della popolazione mondiale).
  • La prova di buona è la prova che non riesce. (per la prima volta, almeno) E, naturalmente, non v'è alcuna cosa come un codice di bug-free. Tu non sei un programmatore male se si dispone di bug. I bug sono solo una parte (molto importante e che richiede tempo) del tuo lavoro.
  • Non ci sono pallottole d'argento. Ogni tecnologia ha i suoi vantaggi e svantaggi.
  • College non ti insegnano tecnologie state-of-the-art. , ma anche, il 90% delle opere usi piuttosto vecchie tecnologie. Che, tra l'altro, a volte è ciò che è necessario.
  • persone non tecniche prendere decisioni su soluzioni tecniche , per lo più per motivi esoterici come la manutenzione, collaborazione, la disponibilità del lavoratore ...
  • Stai solo iniziando , giovane padawan .

Ho iniziato a capire da allora circa il fatto che la codifica è un lavoro che si fa in concomitanza con più persone, specialmente ora che l'open source è più prominente. Ma quando ero al college (fine degli anni novanta), ero convinto che stavo andando a fare le cose da zero e non mai guardare in codice di altri o di dover coordinare con gli altri ...

Guardando indietro, per me una delle parti migliori è apprendimento e altri che insegnano .

  • Programmazione informatica non è fisico e non intuitivo.
    • Quando un costruttore di casa termina la sua / il suo lavoro, lui / lei può andare in giro e vedere immediatamente / pensa che se c'è qualcosa di sbagliato. Un bug di programmazione di computer non può essere scoperto nello stesso modo, e può annidarsi nel sistema per mesi, o addirittura decenni.
    • Mentre un programmatore può guardare / sentire un pezzo di codice sorgente attraverso la revisione del codice, non è garantito da individuare ogni errore contenuta nel codice. Un computer, tuttavia, sarebbe in grado di riprodurre esattamente l'errore ogni volta che eseguendo il programma con certi input. Così, la comprensione umana di un pezzo di codice sorgente è sempre un modello imperfetto l'essenza di esso che è le istruzioni per un computer.
  • E 'molto facile da codice di un programma che gestisce i casi più comuni, ma completamente non riesce a gestire i casi limite.
    • In altre discipline, è relativamente facile da applicare un'azione correttiva dopo-il-fatto. Ci può essere anche una conoscenza del corpo-di-specificamente dedicato alle azioni correttive. Non v'è nulla di simile nello sviluppo di software.
    • Per fortuna, lo sviluppo test-driven aiuta codificare i casi limite che il codice si suppone da gestire.
    • Aggiunto D'altra parte, alcune metodologie di sviluppo software sembrano suggerire che possiamo estrarre valore di business (time to market, ecc) consapevolmente scegliendo di non casi limite maniglia, e di comunicare tali decisioni ai clienti.
  • I clienti possono trovare i valori di business in un software che gestisce solo il maggior numero di casi comuni, quindi, i fornitori di software non sono troppo preoccupato per la gestione dei rari casi.
    • I clienti semplicemente imparare a evitare i bordi grezzi.

Aggiunto

  • L'eleganza del codice sorgente non è valutato.
    • I clienti non vedono l'eleganza del codice sorgente. Vedono solo l'eleganza dell'interfaccia utente e le interazioni.
    • Programmatori, d'altra parte, di solito non apprezzano l'eleganza dell'interfaccia utente, e di solito non rimangono in un unico progetto per un tempo abbastanza lungo per cominciare ad apprezzare un design software elegante.
    • Poiché né i clienti né i programmatori apprezzano l'eleganza del codice sorgente, né saranno oggetto valutate da parte delle imprese.

Aggiunto

I miei due centesimi:. Solo abituarsi ad esso

Immagini di processi ISO, risme di documentazione tecnica, ogni caratteristica e bug di essere rigorosamente documentato, e un ambiente generalmente professionale descrive la mia azienda abbastanza bene. Facciamo i prodotti software di infrastruttura / hardware critici, però, così, bene, la pressione è su per la qualità (siamo ISO 9001, per esempio).

ho pensato dopo la laurea che i responsabili sarebbero stati in grado di riconoscere un buon lavoro dal cattivo lavoro. Dopo essere stato consegnato la copia milionesimo di "veramente grande codice nostro coder superiore mettere insieme" e averlo simile a questa:

def lf(p, q, r):
    x = 4
    xx = 4.5
    t = {1:p, 2:p+2, 3:p*4} #I think there's a bug in here but I don't know
    .
    .
    .

ho quasi rinunciato a cercare di capire ciò che accade tra le orecchie a punta del boss dai capelli. significa "grande" maintainence incubo "buoni" significa si blocca in una brezza leggera, e significa "orribile pasticcio" Uno che o una base di codice ben strutturato i cui ingegneri hanno palesemente rifiutato di rispettare le scadenze osceni solo per mantenere la loro sanità mentale.

Ho sentito sostenere che tutto l'ingegneria del software dopo la prima riga di codice è manutenzione. E che sembra certamente per abbinare la mia esperienza. L'unico codice che ho scritto che non finiscono per avere la maggior parte del suo costo essere maintaince era il codice che è stato così unsuccesful che non è mai o solo per breve tempo utilizzato.

Credo che si possono trovare i team di progettazione disiplined che sviluppano e seguire i processi forti che portano al rilascio di codice robusto, che la squadra può avere un alto livello di fiducia in (anche se non sarebbe convolute che con grandi quantità di documentazione) . Credo che io lavoro in una squadra del genere in questo momento. Anche se ho sicuramente vissuto l'altro tipo di sviluppo.

La cosa che io sia venuto ad apprezzare però, è che la sfida non è sempre trovare l'algoritmo perfetto o la soluzione più pulita al problema. Ma spesso trading off tutti i tipi di vincoli (risorse, conoscenze, denaro, tempo, competenze, rischi, pre-esistenti la formazione degli utenti, ecc, ecc) più adeguati per svolgere il più alto ritorno per l'investimento disponibili. Che sta costruendo un sistema che è più adatto per tutti quei fattori e non solo le influenze tecniche.

Un sacco di software semplicemente non rendono al punto in cui si abitua / acquistato abbastanza. Quando si rende, tende a restare ed è solo "disordine" con in manutenzione.

Le aspettative degli utenti sono in aumento ogni giorno per caratteristiche, ma in molte aree, essi sono più bassi nelle aree di ingegneria. Supponiamo che il software di transazione bancaria è solido e professionalmente progettato come un automobile moderna. La gestione di volume è una meraviglia moderna, ma che cosa Abouut l'affidabilità di ogni transazione? Non così tanto. Il tuo post sulla prima stronzate del vostro cucciolo sul tappeto è stata abbandonata, così che cosa. E 'più come i piccoli sacchetti di plastica al supermercato. Fanno miliardi di loro, strappare e lacrimogeni e vengono gettati via. La maggior parte delle persone non si preoccupano abbastanza per chiedere una borsa migliore.

Credo software di qualità viene fatta, alla fine. Alcuni di che colpisce il mercato prima di quanto la maggior parte dei prodotti comemercial. Chi ottiene di guidare un auto a Beta?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top