Egy diák támogatási jegyet készített a Rec Room támogatási rendszerében, és feltett néhány kérdést a programozás alapjairól. Azt hittem, hogy ezek néhány nagyszerű kérdések, és felfedtem néhány olyan meglátást is, amelyekről úgy gondolom, hogy a programozás során nem beszélnek elég gyakran. A kérdéseikre adott válaszaimat ide tettem fel. Remélhetőleg te is értelmesnek találod őket!

Miért döntött úgy, hogy szoftverfejlesztő lesz?

Kiskorom óta ez volt az álmom! Megkérdeztem a szüleimet, hogy milyen ember készít videojátékokat, és azt mondták, hogy egy „programozó”, azóta megszállott vagyok. Még főiskolára is jártam, és egy teljesen más programra iratkoztam be, és az első programozói tanfolyam elvégzése után informatikára váltottam. Azt hiszem, ez a családomban is működik, és van eszünk + szokásaink a jó programozáshoz. Mindkét szüleim mérnökök, és ez az enyém és a nővérem életére is kiterjedt. Mindannyiunkban megvan a természetes kíváncsiság a dolgok működése iránt, és sok időt töltünk ennek megismerésével.

Milyen programozási nyelveket kell ismerned ahhoz, hogy fejlesztő legyél?

Bármilyen programozási nyelv is segít a legkönnyebben megtanulni az alapokat! Tudom, hogy ez egyfajta nem válasz, de van egy titok: a nyelv nem számít annyira, mint ahogy azt sokan hiszik. Miután megértette a programozás alapjait – a logikát és a számítógépes gondolkodás megtanulását –, az új nyelvek elsajátítása sokkal könnyebb. Olyan ez, mint amikor először tanulunk beszélt nyelvet, szemben egy második nyelv tanulásával. Ha megérted, hogyan kommunikálnak az emberek, könnyebben elsajátíthatod a többi nyelvet, mert tisztában vagy a beszédünk szabályaival. Természetesen ezek egy része nyelvenként eltérő, de minden nyelvben vannak olyan közös szálak, amelyekre az agy támaszkodhat, hogy megkönnyítse a tanulást!

Elkezdtem programozni egy PHP nevű szerver szkriptnyelven. A PHP egy furcsa nyelv, amely megszeg mindenféle konvenciót és szabályt, amelyek ma programozóként a mindennapi életem részei. Visszatekintve összességében azt mondanám, hogy több okból is rossz nyelv volt. De volt egy nagyon jó előnye: könnyű volt telepíteni, és azonnal látni a munkám eredményét. Szerintem ez a kulcsa a programozás tanulásának. Sok általunk használt nyelv őszintén szólva rejtélyes szintű beállítással rendelkezik a dolgok működéséhez. Egyes hibák, amelyeket a dolgok nem megfelelően vannak beállítva, használhatatlanok egy új programozó számára.

Sokan azt mondják, hogy C-vel vagy C++-val kezdjük, én pedig nem értek egyet. Amikor a C/C++ kód meghibásodik, látványosan haszontalan módon kudarcot vallanak, ami a fontosnak az útjába áll: megtanulni úgy gondolkodni és cselekedni, mint egy számítógép. Ehelyett azt javaslom, hogy válasszon egy felhasználóbarát szkriptnyelvet, például a JavaScriptet vagy a Pythont. Meg kell tanulnod egy C-család nyelvét (C, C++, C#, Java), mivel ennek a nyelvcsaládnak a mintái nagyon elterjedtek az iparban, és sok modern programozási munka alapja. De mikor kezdi először? Válasszon egy könnyen megtanulható nyelvet, és gyorsan megkapja az eredményeket. Válassz olyat, amivel bíbelődhetsz, és nem kell terminált előhúznod/várnod a hosszadalmas fordítási folyamatot az IDE-ben.

Ha ezt megtudta, a másik fontos programozási nyelv, amelyet meg kell tanulnia, egy lekérdezési nyelv: SQL, MySQL, MongoDB. Manapság a modern szoftvereknek gyakran sok-sok adattal kell együttműködniük egyszerre. Ennek megoldására találták ki ezeket a nyelveket! Bárcsak sokkal korábban megtanultam volna az adatbázisok működését a karrierem során.

Végül tanulja meg a legfontosabb nyelvet: hogyan beszéljen másokkal. Ezt nagyon elhanyagolják a képzési programokban. Szinte minden szoftverfejlesztő másokkal dolgozik együtt, még akkor is, ha csak más szoftverfejlesztőkről van szó. Tudni, hogyan kell beszélni az emberekkel, hogyan kell dolgokat kérni, és mikor és hogyan kell segítséget kérni, ezek mind fontos dolgok, amelyekre nem volt osztályom az egyetemen. Ezeket „puha készségeknek” nevezik, és őszintén szólva sértőnek tartom ezt a fajta. Ezt a „nyelvet” éppúgy használom, mint bármely más programozási nyelvet, amelyet valaha is használtam, és a munka során el kellett sajátítanom. Bárcsak lennének órák erről, mert úgy gondolom, hogy ezáltal a programozás sokkal barátságosabb iparággá tenné a munkát.

Szükségem van diplomára, hogy a Rec Roomban dolgozhassak?

Nem! Íme egy másik titok: nincs szükség diplomára ahhoz, hogy a legtöbb cégnél dolgozhasson, függetlenül attól, hogy mit mondanak az álláshirdetéseik. A főiskolai képzési programok két dolgot csinálnak:

  1. tanúsítványt adni arról, hogy rendelkezik alapszintű ismeretekkel a programozásban és
  2. mutasd meg, hogy hajlandó vagy hosszú ideig programozási projekteken dolgozni (2-8 évig, diplomától függően)

Ez az, amit keresünk. A fokozatok csak egy nagyon egyszerű módja annak, hogy kipipáljuk ezeket a négyzeteket. Ha rendelkezik ezzel a tapasztalattal, és ezt egy interjúban be tudja mutatni, nem utasítjuk el. Ez azt jelenti, hogy a munkaerő-felvétel automatizálása egyre általánosabbá válik. Nem lepődnék meg, ha egyes munkahelyeken automatikusan elutasítanák azokat a jelentkezéseket, amelyeknek nincs főiskolai tapasztalatuk. Tehát nem mondanám, hogy minden cég nem „követel meg” diplomát, amennyiben a diploma megléte feltétele ennek a szűrőnek. De tapasztalatra van szükségük. És ez a diploma!

Nekem személy szerint a főiskola adott struktúrát a tanulásomhoz. Nem hiszem, hogy a programozást közel sem tanultam volna olyan hatékonyan, ha önképzésre lenne szükségem. Nem mindenkinek van szüksége erre a szerkezetre, de nekem határozottan.

Véleménye szerint mi a legjobb módja a csapattagokkal való együttműködésnek?

Együttműködve! Szeretek erről gondolkodni: minden csapattag tud valamit, amit én nem. Mindenki mással töltötte az életét. Amikor egy csapat jól működik, kihasználjuk ezeket a különbségeket, és összefogunk, hogy valami olyat alkossunk, ami szakértelmünk összessége. Ez gyönyörű. Szerintem ez az alapja annak, ami az embereket egyedivé teszi. Ezért fontos, hogy nyitottak legyünk erre. Légy alázatos és határozott. Add hozzá, amit tudsz, hallgass, ha nem tudod. Főleg, ha valaki olyasmi iránt szenvedélyes, ami te nem vagy!

Személy szerint az agyam működése amolyan mesterkévalóvá tesz engem. Szeretek tanulni a játékkészítés minden aspektusáról, ezért gyakran van véleményem olyan dolgokról, amelyek kívül esnek a programozáson. A Rec Room társaságként nagyon jót tett nekem ebből a szempontból. Sokan nagyra értékelték „véletlenszerű” közreműködéseimet, és hálás vagyok, hogy olyan környezetben lehetek, ahol az emberek fogékonyak rájuk.

Milyen feladatok vannak a Rec Room-ban végzett munka során? Milyen módokon menedzselheti a projektet?

Előre kell mondanom, hogy vezető szoftvermérnök vagyok, és sokkal nagyobb szabadságom van abban, amit csinálok, mint egy belépő szintű mérnök. De azt hiszem, amiről most beszélni fogok, az vállalatunk minden szintjére kiterjed:

Megkérdeztem az alapítókat egy nagy találkozón, amelyet „minden kéz”-nek neveztek: „Ha a Rec Room új vállalati értéket venne fel, mi lenne az?” A válasz elég gyorsan érkezett: „High Trust, High Autonomy”. Néhány hónapja itt vagyok, ezt határozottan látom. Bízunk egymásban, hogy megtalálják a megfelelő munkát, és jól csinálják. Nagy szabadságot élveztem abban, hogy hogyan állok hozzá a feladataimhoz, és még azt is, hogy milyen feladatokat vállalok el. Ezek lehetnek olyan apróságok, mint néhány új részlet hozzáadása bizonyos nyomon követett adatokhoz, vagy olyan nagyok, mint Alexa-stílusú hangátírás hozzáadása csevegőrendszerünkhöz. Mindvégig én mondtam, hogyan bontsuk szét ezt a munkát, milyen feladatokból álljon össze, és milyen gyorsan végezzük el.

Akkor boldogulok, ha a feladataim kicsik és könnyen értékelhetőek: „Ha megnyom egy gombot, egy animáció játszik le”, „Ki tudok mondani szavakat, és megjelennek egy szövegdobozban”. Így papíron sok feladatom elég unalmasnak vagy alapvetőnek tűnik. De ha egyszer összejönnek, ott történik a varázslat. Az is fontos számomra, hogy olyan apró feladatokat készítsek, amelyeket a szoftvermérnökök tréfásan „buszproblémának” neveznek, azaz: „Ha holnap elütne egy busz, akkor is szállíthatnánk ezt a funkciót?” Kicsit morbid, de komoly aggodalomra ad okot! Az emberek folyamatosan megbetegednek, vagy nem tudnak dolgozni. Nagyon fontos számomra, hogy megbizonyosodjak arról, hogy egy csapattársam bele tudjon jönni abba, amin dolgoztam, és folytatni tudja. A világos kommunikáció és a világos célok ennek alapvető részét képezik.

Hol dolgozol és tudsz otthonról dolgozni?

Seattle a főhadiszállásunkon! De a Rec Room nagyon rugalmas otthoni munkavégzési politikával rendelkezik (és az ezt támogató kultúra és technológia, ami kevésbé gyakori, mint gondolnád!). Valójában egészen otthonról dolgoztam Raleigh-ben, NC néhány hónapig, miután felvettem. Az irodában való tartózkodás nem igazán más (kivéve az összes finom harapnivalót, amit raktárunkban tartunk, nam!)

Milyen módokon tarthatom meg a képességeimet?

  • Oldja meg azokat a problémákat, amelyek érdeklik vagy hajtanak.
  • Légy kíváncsi és alázatos.
  • Ismerd fel, hogy tapasztalati szinttől függetlenül mindenkinek van mit tanítania neked. Használja ki ezt, amikor csak teheti
  • Csinálj játék jameket/hackathonokat! Imádom ezeket!!

Ez a legfontosabb megjegyzés, amit elmondhatok:

  • Tarts szüneteket.

Komolyan. Úgy érzem, hogy a „minden idő alatt minden programozás” erős kultúrája áthatotta iparágunkat. Vannak, akik boldogulhatnak ebben. Ebben boldogulok. És néhány évet beleégettem a karrierembe is emiatt. Fontos, hogy egyensúlyt teremts az életedben, és szánj időt a programozáson kívül más dolgokra is.

Menj és tapasztald meg a világot. Tanulj meg új készségeket, amelyeknek semmi közük a programozáshoz. Meg fogsz lepődni, hogy a pihenés és a szünetek, valamint az általad megszerzett készségek vissza fognak segíteni, amikor visszatérsz hozzá. A programozás során felhasználtam azokat a tudást, amelyeket akkor szereztem, amikor tanultam vagy részt vettem: zene, kötés, DJ-zés, hátizsákkal, túrázás, koncertre járás, videojátékok. Az agyad egy hatalmas relációs gépezet. Ez olyan dolog, amely következtetéseket von le az ötletek közötti kapcsolatok azonosításával. Minél több ötleted és tapasztalatod van, annál termékenyebb talajt teremtesz magadnak az új ötletek és problémamegoldások számára. Ne töltse az egész életét programozással.

Melyik a leggyakoribb kódolási nyelv, amelyen írsz?

C#! Ez csak azért van, mert ez a Unity választott nyelve. Ha Unreal fejlesztő lennék, valószínűleg C++-t mondanék helyette. Ennek ellenére szeretem a C#-t, és szerintem ez egy fantasztikus nyelv, amelyet folyamatosan fejlesztenek. Ha komolyan szeretne foglalkozni a szoftverekkel, ez egy nagyszerű kiindulópont.