Per cominciare, Microsoft è un'azienda enorme, abbastanza grande che i grandi team all'interno di Microsoft hanno qualcosa che si avvicina alla propria cultura. È difficile fare delle affermazioni sul lavoro di ingegneria del software in Microsoft che siano vere ovunque. Ho lavorato su Microsoft Office per circa 7 anni, quindi le mie risposte saranno basate su questa esperienza.
Molte persone immaginano Microsoft come una burocrazia senza nome dove droni di sviluppatori lavorano in cubicoli fino a tutte le ore della notte.
Nulla potrebbe essere più lontano dalla verità. Microsoft una volta era un'azienda piena di giovani che effettivamente lavoravano fino a tutte le ore. Tuttavia, hanno fatto un buon lavoro nel trattenere i loro dipendenti (fino a poco tempo fa) e molte di quelle stesse persone sono ancora in azienda - solo che ora sono di mezza età, sposati e hanno figli in età scolare. Risultato: l'azienda si sente molto meno come una startup e molto più come una tipica azienda.
Non ho mai lavorato da nessuna parte dove si è prestata così poca attenzione al mio orario di lavoro. Uno può avere un successo pazzesco alla Microsoft senza rompere 35 ore alla settimana; uno può anche fare male anche quando ne mette 70. Quando si lavora (e in misura minore dove si lavora) è irrilevante. Microsoft è una meritocrazia, e i risultati - in particolare la visibilità di questi risultati - sono fondamentali. Se lavorate in modo efficiente e non volete scalare la scala aziendale, potete lavorare settimane molto ragionevoli (~40 ore) senza sacrificare la vostra carriera.
Il codice è sorvegliato abbastanza da vicino a causa del fatto che abbiamo avuto molte fughe di notizie, e l'azienda è così grande che si è destinati ad avere qualche mela marcia se abbastanza persone hanno accesso alla fonte. Per impostazione predefinita è probabile che abbiate pieno accesso al codice per ciò a cui state lavorando e a qualsiasi progetto associato, e c'è un processo di approvazione abbastanza facile se avete bisogno di vedere il codice di altri team.
È immensamente soddisfacente lavorare al codice che è usato da milioni di persone. Come sviluppatore, la responsabilità si ferma davvero a te - le persone ti diranno come dovrebbe essere l'interfaccia utente, le persone faranno a pezzi il tuo codice e le tue caratteristiche e ti diranno di fare dei cambiamenti, ma alla fine sei tu quello nella stanza che ha più potere - perché stai effettivamente costruendo i pezzi che finiranno nelle mani dei clienti. Molti sviluppatori (passivo-aggressivi) hanno usato il "veto tascabile" per impedire che un cambiamento avvenisse, o hanno codificato una caratteristica nel fine settimana anche dopo essere stati informati che non c'era tempo per farlo. Questo tipo di tecniche di cowboy-coding sono ufficialmente disapprovate, ma vi danno un'idea di quanto potere possa avere un singolo sviluppatore su ciò che finisce per diventare codice di spedizione.
Microsoft è stata fondata da uno sviluppatore, ed è ancora un'azienda molto sviluppatore-centrica. Sentirete lamentele su riunioni senza fine e sulla politica. Queste probabilmente non vengono dagli sviluppatori. Le persone che hanno iniziato l'azienda capiscono che gli sviluppatori vogliono solo scrivere codice. Gli sviluppatori sono generalmente liberati dalle distrazioni (gli uffici privati avvengono molto presto nella vostra carriera), dalla raccolta dei requisiti e dalla progettazione (di solito gestita dalla gestione del programma con qualche collaborazione da parte vostra), dal laborioso lavoro di test e automazione (c'è un team di test), e in alcuni casi anche dal lavoro di manutenzione. Si arriva a passare un sacco di tempo nel codice. C'è qualche buona discussione sul fatto che questo abbia creato o meno un eccesso di specializzazione, e c'è ancora una quantità abissale di spese generali coinvolte nello scrivere codice che è usato in così tanti contesti per così tanti scopi, ma nel complesso è un posto molto felice per qualcuno che vuole solo scrivere codice.
(È un po' dura per i non-dev, onestamente. I tester, in particolare, spesso mostrano un interesse a spostarsi in un ruolo di sviluppo e a scrivere codice di spedizione a causa della sensazione di essere cittadini di seconda classe.)
Mentre gli sviluppatori hanno voce in capitolo su ciò che accade a livello di funzionalità, l'azienda è abbastanza grande che è molto difficile avere un impatto al di fuori del proprio team. Cambiare team è possibile, ma comporta un sacco di attrito (in genere si deve completare lo stesso ciclo di interviste di un giorno intero che farebbe un nuovo assunto) e c'è un'infrastruttura molto piccola creata per gli sviluppatori per contribuire ai prodotti di altre parti della società.
La più grande sorpresa per me qui è ed è stata la cultura giovanile nonostante la reputazione della società come un colosso noioso. Ci sono ancora guerre di nerf nei corridoi. La gente è ancora molto, molto entusiasta del software. Abbiamo il nostro laboratorio di incubazione per il software e l'hardware (The Garage, cercatelo) ed è piuttosto impressionante. Ci prendiamo in giro da soli probabilmente più di quanto faccia la stampa (uno dei nostri valori aziendali dovrebbe essere "autocritico" ed è probabilmente quello a cui aderiamo di più). La gente ama ancora questo posto. Non c'è davvero nessun posto come questo.