window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() OPETUSKISKOT - The Codest
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2018-11-05
Ohjelmistokehitys

OPETUSKISKOT

Michal Begejowicz

Ensin muutama sana itse kurssista. Ennen kurssin alkua oppilaille annettiin "ennakkotehtävä", joka sisälsi ohjeita ja harjoituksia, jotka oli suoritettava ennen kurssia. Heidän tehtäviinsä kuului Linuxin asentaminen, päätelaitteeseen tutustuminen sekä HTML:n, CSS:n ja Gitin perusteet.

Laskelmat

Seuraavien neljän kuukauden aikana tapasimme kahden viikon välein, ja askel askeleelta löysimme Rubyn ym. mahtavan maailman. Kurssilla käsiteltiin Rubyn kieltä, Ruby on Rails, Javascript ja joitakin suosittuja RoR-sovellusten työkaluja, kuten Devise, Pundit, Sidekiq tai Carriewave.

Jokaisella opiskelijalla oli myös mentori, jonka tehtävänä oli motivoida opiskelijoita ja tarkistaa heidän työnsä kokousten välillä.

Hyökkäyssuunnitelma

Opettajana olin valmistautunut 3 vuoden kokemuksella Ruby on Rails:stä, 10 vuoden kokemuksella ohjelmoinnista yleensä ja muutamilla esityksillä, joissa esiteltiin kysymyksiä ja harjoituksia.

Minulla ei ollut mitään kokemusta opettamisesta, lukuun ottamatta lyhyttä Linux-hallintakurssia, jonka olin käynyt aiemmin. Opiskelijoista tiesin vain, että heitä oli kymmenen ja että he olivat hyvin erilaisista lähtökohdista - joillekin heistä tämä oli ensimmäinen kerta ohjelmoinnin parissa, kun taas toiset yrittivät opetella C:tä tai Rubya omin päin ennen kurssille ilmoittautumista.

Päätin tehdä kaksi lupausta: aion olla kärsivällinen ja selittää kaiken tarvittaessa (ei "me käsiteltiin jo kaikki"). Ensimmäinen päätös on kestänyt ajan hammasta, mutta toinen - aivan ilmeisesti - ei. Päätin olla valmistautumatta erityisesti niihin asioihin, joita aioin opettaa - työskentelen Ruby/Railsin parissa joka päivä ja tunnen olevani melko varma taidoistani tällä alalla. Korkeintaan luin esityksiä, joita minulla oli.

Kaksi ihmistä kannettavien tietokoneiden edessä

Haaste

Yksi ensimmäisistä asioista, jotka tulivat minulle täysin selväksi heti kurssin alettua - kaikkea ei voi selittää. Se on hyvin surullinen oivallus kaltaiselleni henkilölle, joka haluaa syventyä ja selvittää, miten asiat toimivat, mutta yhden tapaamisen rajallisessa ajassa voi opettaa vain rajallisen määrän asioita, jotka oppilaat voivat muistaa. Kävi ilmi, että voit olla erittäin hyvä Ruby-ohjelmoija tietämättä tarkalleen, miten Arrays todella esitetään muistissa tai miten Devise toimii.

Oppitunteja pidettiin lauantaisin ja sunnuntaisin klo 9-17. On tärkeää ymmärtää, että opettaminen on melko uuvuttavaa työtä - materiaalin selittämisen lisäksi on oltava aina valmis vastaamaan aiheeseen liittyviin (tai ei niinkään aiheeseen liittyviin) kysymyksiin ja ratkaisemaan erilaisia ongelmia, joita oppilailla on.

Kahvi on ystäväsi, mutta tärkeintä on edellä mainittu kärsivällisyys. Ihmisille, jotka eivät ole aiemmin koodanneet, on opeteltava käsitteitä, jotka ovat ohjelmoijille itsestään selviä - kuten silmukoita, tyyppejä tai jopa muuttujia - eikä se tapahdu hetkessä. Jos olet ohjelmoinut XX vuotta, pidät matematiikkaa helppona ja osaat luetella kaikki tunnetut ohjelmointiparadigmat keskellä yötä, voi olla vaikea asettua sellaisen henkilön asemaan, joka ei ole aivan varma, kummalle puolelle yhtäsuuruusmerkkiä muuttujan nimi kuuluu. On kuitenkin elintärkeää, että teet sen. Peruskäsitteet, kuten muuttujat, silmukat tai matriisit, tulevat niin luonnollisiksi, että on vaikea käsittää, miten joku ei voi ymmärtää niitä heti, mutta ne ovat vaikeampia kuin miltä ne näyttävät "meille ohjelmoijille".

Lisävaikeutena, erityisesti kurssin alussa, oli näiden käsitteiden selittäminen niin, että ne ymmärretään hyvin. Mielestäni ei ole mahdollista oppia Railsia oppimatta Rubya - vaikka tiedänkin, että jotkut väittävät, että näin ei ole. On totta, että Railsissa on omat mallinsa ja paljon asioita voi ennemmin muistaa kuin oppia alussa. Olen kuitenkin sitä mieltä, että ollakseen tietoinen RoR-kehittäjä, kohtuullinen ymmärrys Rubysta, OOP:sta tai SQL:stä on välttämätöntä. Ohjelmoinnin opettaminen on aivan eri asia kuin Railsin opettaminen - kun Railsin kanssa voi odottaa, että paljon asioita vain hyväksytään tai uskotaan (kenenkään ei tarvitse alussa tietää, miten callbackit toimivat - vain mitä niillä voi tehdä), ohjelmoinnin käsitteet pitäisi selittää tarkemmin.

Voiman käyttäminen

Miten se tehdään?

Kärsivällisesti.

Tuntuu varmaan siltä, että toistan itseäni koko ajan, mutta en voi tarpeeksi korostaa, miten tärkeää kärsivällisyys on. Jopa kaikkein motivoituneimpien oppilaideni tiedetään tekevän syntaksivirheitä silloin tällöin - se on osa normaalia oppimisprosessia, eikä opettajalle ole oikeastaan muuta tehtävissä kuin näyttää, mikä virhe on ja miten se korjataan. Ajan myötä he oppivat korjaamaan ne itse, mutta siihen tarvitaan paljon enemmän kuin yksi tai kaksi virhettä.

Toinen huomioitava asia on se, että Ruby ei ole niin helppoa kuin miltä se näyttää. Jos aloitit Rubyn opettelun C/Java/Python:n tuntemuksella, kaikki näytti luultavasti niin puhtaalta, mukavalta ja yksinkertaiselta. Yritä kuitenkin ajatella asiaa, niin huomaat sen:

  1. Miksi suluissa? Pitäisikö minun käyttää niitä? Eikö pitäisi?
  2. Mikä tuo on? itse juttu? Joskus minun on käytettävä sitä (esim. attr_writer – self.variable = ...), joskus en (attr_reader – muuttuja) ja joskus en voi! (private def some_method – self.some_method heittää virheen)
  3. Lohkot. Lyön vetoa, että jopa jotkut kokeneet ohjelmoijat (eri kielillä) tarvitsisivat hetken enemmän kuin odotetaan ymmärtääkseen seuraavat asiat. #inject

Virheiden korjaamisen ohella on myös kysymys siitä, miten siirrät ymmärryksesi asioista oppilaillesi. Tätä varten tarvitset paljon joustavuutta. Jotkut oppilaat tyytyivät siihen, että Array oli vain järjestetty luettelo elementeistä. Toiset tarvitsivat enemmän visuaalista analogiaa, kuten hylly, jossa on numeroituja paikkoja, joihin voi laittaa asioita. Huomasin selittäväni samoja asioita useita kertoja eri tavoin - mikä on varsin haastava harjoitus!

Mutta kuten sanoin aiemmin, kaikkea ei voi selittää. Kun selitin relaatioita Railsissa, se oli enemmänkin "näin se tehdään, ja sen avulla voi tehdä sitä ja tätä. Jos haluat tuon, se on mahtavaa". Onneksi kukaan ei kysynyt minulta, miten tämä toimii - en usko, että juniorikehittäjien tarvitsee tietää heijastuksista.

Tilannekohtainen paikannus

Kurssimme muodon vuoksi (kokoukset joka toinen viikonloppu ja pitkät tauot) meidän oli varmistettava, että näiden viikonloppujen väliset ajanjaksot ovat tuottavia opiskelijoillemme - ilman, että he harjoittelevat tuona aikana, kurssi ei toimisi lainkaan.

Jotkut työtoverini suostuivat toimimaan kurssin opiskelijoiden mentoreina. Mentoreiden tehtävänä oli tarkistaa viikonloppukokouksissa annetut harjoitukset ja auttaa niitä tehdessä ilmenneissä ongelmissa. Opiskelijat olivat yhteydessä mentoreihin Slackin kautta.

Olin mentorina kahdelle oppilaalleni. Se oli merkittävästi erilainen opettamisen muoto - ja täynnä omia sudenkuoppiaan. Yksi asia, jonka tajusin hieman liian myöhään, on se, että hyvän ohjelmoijan on oltava itsenäinen - hänen on ainakin yritettävä ratkaista ongelmia itse ennen kuin hän pyytää apua. Ja se, että olin koko ajan tavoitettavissa Slackissa, ei ainoastaan vienyt paljon aikaani, vaan ei myöskään innoittanut tällaiseen itsenäisyyteen.

Älkää käsittäkö minua väärin - monet kysymykset, joita minulta mentorina kysyttiin, olivat päteviä, ja niihin vastaaminen oli opiskelijoiden tietojen levittämistä. On kuitenkin hyvin helppoa siirtyä "opettajamoodiin" - ja selittää uudelleen kaikki viikonloppukokouksissa käsitellyt asiat. Nykypäivän näkökulmasta mentorin tehtävänä on mielestäni luoda yleiskatsaus, tarjota hyödyllisiä linkkejä ja esittää kysymyksiä, jotka voivat auttaa ratkaisun löytämisessä. Silloin tällöin voi tapahtua selittämistä, mutta sen ei pitäisi olla suurin osa siitä.

Tiedustelun käyttö

Jokainen oppilas on erilainen. Yksi suurimmista vaikeuksista oli mukauttaa kurssin tempo siten, että se sopisi parhaiten kaikille opiskelijoille. Koska opiskelijoiden taustat ja yleinen taso ottaa uusia ideoita vastaan vaihtelevat, se on lähes mahdoton tehtävä.

Aikataulumme oli 9 kokousta - kertaa 2 päivää kertaa 8 tuntia, joten meillä oli 144 tuntia aikaa siirtyä 0:sta Ruby-heroon. Oli ensiarvoisen tärkeää tehdä koko opetusohjelma tässä ajassa - mikä jo itsessään pakotti meidät melko nopeaan tahtiin. Kolme ensimmäistä kokousta käsitteli Rubya - sitten yksi kokous SQL:ää, sitten RoR:ää ja yksi kokous JS:ää.

Opettajana minun oli aina tiedettävä, kuka enemmän tai vähemmän ymmärtää osan esittelemästäni materiaalista. Joskus riitti, että kysyin, onko asia ymmärretty, joskus tein pieniä testejä. Pyysin esimerkiksi kaikkia oppilaitani lähettämään minulle omat määritelmänsä Ruby-käsitteille, kuten luokka, itse, menetelmä, muuttuja jne., Slackissa. Jos jokin asia oli erityisen epäselvä, palaisin takaisin ja yrittäisin selittää sen uudelleen.

Illuusio ja todellisuus

Yhteenvetona voidaan todeta, että opettaminen oli vielä vaikeampi tehtävä kuin luulin sen olevan. Se voi olla myös hyvin palkitsevaa. Siitä huolimatta se on kovaa työtä ja sen vaikutukset eivät riipu pelkästään opettajasta - oppilaan oma ponnistus on vielä tärkeämpää hänen oppimisessaan. Tämä tekee opettamisesta hyvin erilaista kuin ohjelmoinnista, jossa yleensä voi omistaa kaikki onnistumiset ja epäonnistumiset. On tärkeää muistaa tämä ero.

Se myös pakottaa ajattelemaan asioita, joita ei yleensä ajattele - asioiden selittäminen antaa myös paremman käsityksen niistä. Tällä tavoin opettaminen voi myös tehdä sinusta paremman ohjelmoijan.

Aiheeseen liittyvät artikkelit

Ohjelmistokehitys

Tulevaisuuden web-sovellusten rakentaminen: The Codest:n asiantuntijatiimin näkemyksiä

Tutustu siihen, miten The Codest loistaa skaalautuvien, interaktiivisten verkkosovellusten luomisessa huipputeknologian avulla ja tarjoaa saumattomia käyttäjäkokemuksia kaikilla alustoilla. Lue, miten asiantuntemuksemme edistää digitaalista muutosta ja liiketoimintaa...

THECODEST
Ohjelmistokehitys

Top 10 Latviassa toimivaa ohjelmistokehitysyritystä

Tutustu Latvian parhaisiin ohjelmistokehitysyrityksiin ja niiden innovatiivisiin ratkaisuihin uusimmassa artikkelissamme. Tutustu siihen, miten nämä teknologiajohtajat voivat auttaa nostamaan liiketoimintaasi.

thecodest
Yritys- ja skaalausratkaisut

Java-ohjelmistokehityksen perusteet: A Guide to Outsourcing Successfully

Tutustu tähän keskeiseen oppaaseen Java-ohjelmistokehityksen onnistuneesta ulkoistamisesta tehokkuuden parantamiseksi, asiantuntemuksen saamiseksi ja projektin onnistumiseksi The Codestin avulla.

thecodest
Ohjelmistokehitys

Perimmäinen opas ulkoistamiseen Puolassa

Ulkoistamisen lisääntyminen Puolassa johtuu taloudellisesta, koulutuksellisesta ja teknologisesta kehityksestä, joka edistää tietotekniikan kasvua ja yritysystävällistä ilmapiiriä.

TheCodest
Yritys- ja skaalausratkaisut

Täydellinen opas IT-tarkastustyökaluihin ja -tekniikoihin

Tietotekniikan tarkastuksilla varmistetaan turvalliset, tehokkaat ja vaatimustenmukaiset järjestelmät. Lue lisää niiden merkityksestä lukemalla koko artikkeli.

Codest
Jakub Jakubowicz teknologiajohtaja ja toinen perustaja

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

    fiFinnish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fiFinnish