Udviklerens kant: Hvordan man bliver seniorudvikler

Klatre op på den videnstige. Hipster sko ikke påkrævet.

Dette er del 2 af en serie artikler for programmerere, der ønsker at opgradere deres evner. Del 1 bragte os igennem de allerførste stadier, hvor vi satte os for at finde den mest effektive måde at gå fra nul til en ansættelig udvikler. I dag tager vi tingene meget videre. Jeg har lige udgivet to online-kurser for udviklere: The Complete Web Developer i 2019 og The Complete Junior to Senior Web Developer Roadmap

Denne artikel er til alle udviklere, kodere, programmerere derude, der søger at tage et spring i deres karriere efter at have haft et par år i branchen (eller du er måske lige i gang, men vil gerne se den slags sti du skal fortsætte). Denne artikel er til dem med et simpelt ønske: Du ønsker at blive betragtet som en seniorudvikler og du vil udmærke dig inden for dit felt. Ved afslutningen af ​​læsningen af ​​dette har du en sæt sti med en liste over de bedste ressourcer, du kan niveau op og blive en seniorudvikler. Woaa! dristig erklæring. Håber jeg fik dig tilsluttet. Lad os dykke ind.

Ansvarsfraskrivelse: Som med alle ting i livet, kan du altid sætte din egen vej. Selvom det ikke er meningen, at det er den eneste måde, er det en metode, som jeg har opdaget i min egen karriere, og gennem mange samtaler og interviews, jeg har haft i det forløbne år med mennesker, betragter jeg som senior og respekterede programmerere i samfundet. Jeg har samlet alle fællesheder i dette indlæg. Under alt dette er ikke kun en artikel om, hvordan man bliver en bedre udvikler. Det er en vejledning i, hvordan du optimerer din tid med effektive og nyttige værktøjer, så du får mest muligt ud af dit liv. Du kan tage denne slags læring hvor som helst i fremtiden.

Hvad ønsker vi?

Vi stræber alle efter at være bedre til vores job. Hvad det specifikke ved denne erklæring kan være, er op til den enkelte person. De fleste mennesker kan dog være enige om et par almindelige ting:

  • Vi ønsker ikke at gennemgå livet, der bliver betragtet som 'inkompetente'
  • Vi ønsker at blive respekteret af vores kolleger
  • Vi vil føle os smarte og dygtige
  • Vi vil føle os værdsat

For at opnå ovenstående kan vi ikke bare hvile på vores laurbær og forvente, at ting kommer til os. Især i en verden af ​​programmering, hvor teknologien altid ændrer sig, og mængden af ​​information, der er tilgængelig for os, er overvældende, ønsker vi at fokusere vores opmærksomhed på at vokse og lære uden at brænde ud. Med flere og flere udviklere, der kommer ud af colleges og bootcamps, er vi nødt til at holde vores færdigheder skarpe, og måden at skille dig ud fra er at være smart og effektiv, når vi lærer. Nok tale, lad os dykke ind. Som altid vil vi forsøge at tage den bedste tilgang.

Hvad er en seniorudvikler?

Nej, at være en polyglot, der kan kode på 10 forskellige programmeringssprog og har bygget deres egen version af Jarvis, gør dig ikke til en seniorudvikler (selvom du er meget talentfuld). Dette skyldes, at en seniorudvikler er en person, der bringer en trinvis fordel til bordet. Det er nogen, der gør mennesker omkring ham eller hende bedre, og er nogen, der er i stand til at have en langsigtet vision, levere og konsekvent producere forretningsværdi. Du kan kende alle de seje funktionelle programmeringsteknikker i verden, men hvis du ikke er i stand til at kommunikere godt med dit team, eller du ikke er i stand til at fokusere på at levere faktisk værdi til en kunde, er du ikke en seniorudvikler. Dette er det vigtige punkt: Hvilken værdi bringer du til din virksomhed / opstart / virksomhed? Hvis du er en af ​​de få mennesker, der kan bringe størrelsesorden (nogle mennesker elsker ideen om 10x) værdi for din virksomhed eller virksomhed, er du en seniorudvikler. Senior Developer er ikke kun endnu en jobtitel, men snarere evnen til at bruge dine oplevelser til at give reel fordel for interessenterne.

Forstået. Hvordan bliver jeg en?

Dette er det afsnit, som I alle har ventet på (eller så jeg forestiller mig… måske er der ingen, der læser dette… I så fald fortsætter jeg bare med at tale med mig selv). Lad os grave dig ind og se, om vi kan klare det gennem alt. Følg ressourcerne nedenfor og brug lidt tid på at lære om hvert emne. Hvis du er i stand til aktivt at arbejde på nedenstående færdigheder, vil du være mil foran alle andre. Jeg kalder dette udviklerens kant: der vil altid være mennesker med mere erfaring end dig inden for et felt, men du kan arbejde smartere og på en mere effektiv måde at samle forskellige kombinationer af færdigheder til at adskille dig. Dette gør dig ikke kun til en bedre udvikler, det øger også din samlede lykke, fordi du leverer reel værdi til mennesker.

Et ofte overset aspekt af læring er, at du er nødt til at specialisere dig og kun fokusere på en ting. Det er dog ikke sådan, hvordan livet fungerer. Det er meget sjældent i livet, at du kun har brug for en færdighed. Især inden for et felt som teknologi, hvor tingene ændrer sig (hvem ved hvad maskinlæringsingeniører vil gøre om 5 år?), Skal du have et forskelligt sæt overførbare færdigheder, der kan oversætte til, at du kan tilpasses.

Dette er de 6 kernefærdigheder, du har brug for for at blive betragtet som en seniorudvikler:

1. Tekniske færdigheder

Dette er normalt den første færdighed, der kommer til at tænke for de fleste mennesker. Forhåbentlig er du overbevist om, at det er en lille skive af en meget større cirkel. Forkert mig ikke, du har brug for denne færdighed, og du kan ikke forfalde den. Du kan dog være smart om, hvad du fokuserer på. Senior udviklere bruger tid på at forstå HVORFOR en teknologi. Hvorfor findes dette problem? Hvorfor findes denne ramme? Hvilket problem løser dette bibliotek? Som udvikler skal du have en god fornemmelse af alle de værktøjer og ideer, der kan gavne udviklingslivscyklussen og vælge de værktøjer, der får den største positive gevinst på et projekt. I stedet for at fokusere på hver eneste nye udgivelsesfunktion i denne super fancy testramme, fokuserer de på fordele og ulemper ved hver testramme, når de prøver at løse et reelt problem for virksomheden. De stiller spørgsmål som ‘Hvad kan forbedres i vores kontinuerlige leveringsproces for at give et bedre produkt? '

De forstår også, HVORDAN ting er forbundet. For at komme i gang med at tænke sådan er tankekort et godt værktøj at blive fortrolig med. Det er hovedsageligt et værktøj, du kan bruge til virkelig at skubbe læring til det næste niveau (Her er et godt eksempel på tankekortlægning for Javascript-udviklere). Dette tankekort hjælper din hjerne med at oprette forbindelse mellem forskellige ideer og teknologier.

Et eksempel: Hvis jeg var en Javascript-udvikler (som jeg er, så lad os ikke spille foregive her) er dette kursus af Cory House et godt eksempel på de ting, du har brug for at vide for at forbinde prikkerne i javascript-miljøet. Når du først har fået et godt greb om værktøjet og teknologien i din branche, skal du oprette et tankekort over, hvilke problemer produkter står overfor, når de skaleres, og når for tidlig optimering er en dårlig ting. Ved at have denne forbindelse i hovedet af alt det ovenstående, er du i stand til at fokusere din virksomheds ressourcer på de ting, der betyder mest ved at have et bredt syn i stedet for et snævert fokus.

Hvis du er kommet ud af en kodende bootcamp, eller du ikke har en datalogi-grad, skal du begynde at lære om datastrukturer, algoritmer og andre computervidenskabelige emner. Hvorfor? Fordi selvom rammer og teknologier ændres, forbliver de vigtigste principper inden for datalogi (for det meste) de samme. Ved at forstå disse emner på højere niveau er du igen i stand til at se, at de fleste softwareproblemer og god praksis generelt er konstante gennem forskellige sprog og tid. Denne bog (Rob Conery) og denne bog (Gayle Laakmann McDowell) er sandsynligvis de bedste værktøjer, jeg har fundet for at udjævne dine evner i dette. Selvom de kun ridse overfladen, vil det sætte grundlaget for mere læring i fremtiden.

Begynd at lytte til podcasts som Software Engineering Daily af Jeff Meyerson, så du kan holde dig opdateret om de aktuelle problemer og fremtidige syn på hele branchen.

Til sidst skal du læse denne fantastiske artikel, der gennemgår nogle undergruppes færdigheder fra et rent teknisk synspunkt.

2. Holdfærdigheder

Dette er en ofte overset færdighed. Hvordan arbejder du med teammedlemmer? Er du overvældende og vurderet med PR-anmeldelser (pull request) og bidrager til en giftig kultur? Eller er du hensynsfull, samarbejdsvillig og opmuntrende for dine teammedlemmer? Seniorudviklere har ikke store egoer. De ved, at de er gode, og behøver ikke at bevise sig for andre. De skriver ren forenklet kode snarere end kode for at prøve at vise deres færdigheder, som er ulæselige for de andre teammedlemmer. De er villige til at hjælpe andre, og de er villige til at stille spørgsmål, når de ikke ved noget.

Det er her, følelsesmæssig intelligens kommer ind. Socialpsykologi er et vigtigt værktøj til at forbedre denne færdighed, og der er ikke noget bedre end den berømte Sådan vinder du venner og indflydelse mennesker. Husk: hvordan kan du gøre dem omkring dig bedre? Hvis du har 5 personer på dit hold, skal 1 + 1 + 1 + 1 + 1 være større end 5, fordi du gør dem omkring dig bedre (Jeg får onde øjne fra matematik purister nu ... Jeg skal gå videre).

Hvis du er den type person, som ethvert projekt, du får sat på, eller ethvert hold, som du er en del af, er du i stand til at komme sammen med dine holdkammerater og få andre til at arbejde godt sammen, er du allerede mil foran de fleste mennesker . Du gør også ledere, direktører, scrum-mestre og CTO's liv lettere. Det er de mennesker, der bliver forfremmet, og endnu vigtigere er, at det er de mennesker, der giver den mest værdi til et firma.

3. Klient / bruger færdigheder

Kan du tale med en klient eller bruger og tydeligt se, hvad deres behov er? Når de foreslår noget for dig, forstår du, hvilke problemer de står overfor? En seniorudvikler er nogen, der kan stå alene med en klient og kan være en god lytter, og derefter tilbyde råd om, hvad de bedste skridt er at komme videre. De er gode til at skabe relationer. De er ikke en pushover, men de skubber ikke deres meninger på klienten. De forstår, at målet er et ikke-nul-sum-spil, hvor både klient og udviklere får fordel af interaktionen. Læs gennem denne bog for at arbejde på denne færdighed.

Endelig skal du være i stand til at forklare komplekse programmeringskoncepter til en ikke-teknisk person. Begynd at udvikle denne færdighed ved at se gode instruktører nedbryde komplekse emner. Her er min yndlingsinstruktør og min anden favorit. Selvom de underviser i vanskelige emner, kan du observere nogle fælles forhold mellem dem, der gør dem begge til store instruktører.

4. Vækstfærdigheder

Seniorudviklere lærer altid noget nyt hver dag. Det betyder ikke, at de bruger 14 timer om dagen på at sidde foran en computer med at læse artikler. De er mere effektive end det. De er altid på udkig efter at tale med andre udviklere, stille spørgsmål eller udforske nye emner. De fokuserer ikke på kun et færdigheds sæt. Du kan være den bedste i verden til at lave en ting, men hvis du ikke kender hele spektret eller har en generel forståelse af, hvilket problem du løser, er du ikke længere den bedste.

De har en væksttænkning (mener, at intelligens er formbar), og de tror på bevidst praksis (bare klik på linket. Det er guld). De forstår, at det er umuligt at lære alt, og de valgte at bruge deres tid på ting, de nyder, og ting, der betyder mest.

De siger ikke bare ”Åh, jeg hader dette bibliotek!” Det meste af tiden er folk, der siger denne slags ting, hader noget, fordi de ikke helt forstår det. For eksempel siger ikke bare ”Jeg hader jQuery. Kun dårlige udviklere bruger stadig jQuery ”og lyder pompøs. Seniorudviklere siger, at "jQuery var medvirkende til udviklingen af ​​internettet og populariteten af ​​javascript". De har meninger, der kan ændres, fordi de nyder at lære af andre, og de prøver nye koncepter, før de beslutter, at de ”hader” noget.

5. Salg / interviewfærdigheder

Seniorudviklere er i stand til at få sig selv i seniorroller, fordi de er i stand til at kommunikere og sælge sig selv til folk, der træffer disse beslutninger. Du kan se dine arbejdsgiveres eller virksomheds behov, og du kan skabe tillid til dem, at du er den person, der løser det. Du er selvsikker, men ydmyg. Seniorudviklere er også tillige nok til at påtage sig disse roller og være i stand til at udføre under pres. De ved også, at hvis du aldrig spørger svaret altid er nej, så de beder om forfremmelser eller roller, der udfordrer dem, fordi de mener, at de er den rigtige person til jobbet. Selvom salg og forhandlinger kan ses som svag for nogle, er det en værdifuld færdighed, som du har brug for at erhverve. Ramit Sethi har en god artikel til at komme i gang. Selvom det taler om lønforhandling, kan nogle af principperne anvendes til andre scenarier.

6. Fællesskabsfærdigheder

Senior udviklere bidrager til udviklerfællesskabet. Uanset om det er ved at gennemføre teknologiske samtaler, tale ved mødet ups, bidrage til open source eller endda skrive artikler. De er den type mennesker, der deler information med branchen. I stedet for at være i en lukket boks med kun deres arbejdsplads, går de ud og kommunikerer med mennesker i andre samfund, hvilket giver dem mulighed for at udvide deres horisont. Det er som om at rejse: Jo flere kulturer du møder og snakker med, jo mere forstår du lighederne og forskellene mellem mennesker, og jo mere begynder du at sætte pris på det.

Et sidste ting

Hvis du er i stand til aktivt at arbejde på ovennævnte færdigheder, skiller du dig ud med det samme. Jeg har dog forladt det vigtigste emne fra denne liste: Du nyder, hvad du laver. Hvis du ikke nyder at lære hver dag om computervidenskab og softwareudvikling, bliver du aldrig en seniorudvikler, fordi du ikke har drevet til at være bedre på lang sigt. Hvis du nogensinde har læst så gode, at de ikke kan ignorere dig, forstår du, at lidenskab er blevet overhyped. Den ægte lidenskab kommer efter, at du har mestret en færdighed. Du har arbejdet hårdt for at blive dygtig og førende inden for et felt. Du har udviklet disse færdigheder, og nu presser respekten og fordelen, du giver andre, dig til at blive bedre og bedre til at få flere af disse gode følelser. Sådan udvikler du lidenskab for arbejde, som du gør.

Konklusion

Hvis du har lært at kode og leder efter det næste trin i din karriere, skal du tænke anderledes. Hvordan kan du skille dig ud? Hvordan kan du vokse? Hvordan kan du hjælpe folk med at løse reelle problemer og give værdi? Du bliver en seniorudvikler ved ikke at gøre de lette ting. Du gør de ting, der skubber og udfordrer dit sind og komfortniveau. Du lærer, og du tilpasser dig dag for dag, ligesom du gjorde første gang, du skrev det første stykke kode. Hvert trin vil være lille, men i en levetid spænder et lille trin til miles. Stop aldrig med at læse og ophør aldrig med at lære, men ved også, hvad der er en værdifuld brug af din tid, og hvad der ikke er.

En sidste ting…

Jeg oprettede to onlinekurser: The Complete Web Developer i 2019 og The Complete Junior to Senior Web Developer Roadmap. I den første leder jeg dig gennem alle de trin, jeg nævnte ovenfor, hvis du vil have alt på et sted, ekstra hjælp, eller hvis du vil støtte mit arbejde. Hvert kursus har over 100 HD-videoer og 30 timers indhold. De tog et vanvittigt antal timer at lave. Men jeg er virkelig stolt over, hvordan alt viste sig. Jeg frigiver det til verden i dag, og da det er feriesæsonen, kan du bruge kuponkode RELEASEYA77, og kurset er kun $ 10 (Tilgængelig for de første 100 personer OPDATERING: Udsolgt)

Opdatering: Vi har bestået 40.000 studerende fra over 180 lande, der har tilmeldt sig i 6 måneder. Jeg vil stadig støtte læringsånden, så brug kuponkoden KHDKA7166 for en dejlig rabat.

Tak, fordi du læste så langt. Undskyld for det lange indlæg, men hvis du nød dette indlæg, så del, kommenter og tryk på det et par gange. . .Måske vil det inspirere nogen til at springe ind i en ny karriere.

Følg mig på Twitter og Medium, hvis du er interesseret i mere dybdegående og informative opskrivninger som disse i fremtiden!

1. Den komplette webudvikler i 2019

2. Komplet køreplan for junior til senior webudvikler