Käyttöliittymä- ja taustakehittäjien välillä käydään ikuisuustaistelua: kumpi taito on tärkeämpi? Lisäksi miksi kenenkään pitäisi välittää riitelystä, kun sen sijaan voimme käyttää jäljellä olevan arvokkaan ajan koodin virheenkorjaukseen?
Mahdollinen vastaus tähän kysymykseen olisi yksinkertaisesti: Fullstack. Fullstack- insinöörit voivat kaiken muun lisäksi ratkaista mitä tahansa back- ja front- endin, eli tausta- ja käyttöliittymäkehityksen välillä.
Full- stack ammattilaiset ovat kuitenkin kalliimpia ja vaikeampia löytää. Pysytään siis toistaiseksi taustasovelluskehityksen käsitteessä ja yritetään ratkaista se sellaisenaan.
Eli yritän vastata seuraaviin tiedusteluihin:
- Mistä löytää laadukkaita back- end- kehittäjiä;
- Kuinka testata heidän taitojaan;
- Kuinka valita useiden laadukkaiden ehdokkaiden välillä;
- Kuinka hallinnoida heitä mahdollisimman tehokkaalla tavalla.
Aloitetaanpa.
Mitä back- end- kehitys on?
Back-end- eli taustaohjelmistokehitys, joka kattaa kaiken työpöydästä ja webistä pilvi- ja tietokantahallintaan, on tärkein taito, joka toimii koko verkossa. Se tekee tämän niin saumattomasti, että useimmat käyttäjät eivät todellakaan ole tietoisia taustajärjestelmän kehitysprosessista–juuri tämän IT- projektin johtaja haluaakin kuulla.
Jos taustajärjestelmässä, eli back- endissä asiat katkeavat, käyttäjät huomaavat nopeasti, että jokin on mennyt pieleen. Tai kohtalon omituisena käänteenä: niin kauan kuin keskivertokäyttäjä ei ole tietoinen kulissien takana (verkkosivustolla) tapahtuvista mutkista, sitä parempi käyttäjäkokemus on.
Taustakehittäjä (tunnetaan myös nimellä back- end- insinööri) on pääasiassa vastuussa verkkosivuston perustan rakentamisesta ja sen toimivuuden varmistamisesta. He keksivät koodin, rakentavat rakenteen ja varmistavat, että sovelluslogiikka toimii tarkoitetulla tavalla.
Useimmat vierailijat eivät edes ole tietoisia sovelluksen tehostavasta tekniikasta; loppukäyttäjät eivät koskaan näe sitä suoraan.
Taustateknologiaan kuuluvat palvelimet, sovellukset, tietokannat, ohjelmointikielet, puitteet ja paljon muuta.
Kuinka suosittua taustaohjelmistokehitys on?
Back-end ei ole vain suosittua–se on ehdottoman välttämätöntä verkon toiminnalle. Ilman back-endiä ei olisi käyttöliittymän ohjelmistokehitysryhmiä, käyttöliittymäkehittäjiä eikä yksinkertaisesti verkkoa.
Jotkin taustaohjelmointikielet ovat kuitenkin suositumpia kuin muut kielet.
Tämä on asian laita tällä hetkellä:
Mistä löytää back- end- kehittäjiä
Taustakehittäjiä ei ole vaikea löytää. Laadukkaiden taustakehittäjien löytäminen on kuitenkin kokonaan toinen tarina.
Jotta voit palkata oikeat taustakehittäjät (mukaan lukien projektipäälliköt, verkkokehittäjät, ohjelmistosuunnittelijat ja koodaajat), tarvitset joko seulontatyökalun tai alustan, joka seuloo ja testaa heidän hakijansa laajasti.
Budjetistasi, omistautumisestasi ja hermoistasi riippuen jompikumpi näistä vaihtoehdoista on toteuttamiskelpoinen. Ensimmäinen vaihtoehto vaatii kuitenkin enemmän aikaa, kun taas toinen vaihtoehto on budjettiriippuvampi kuin ensimmäinen.
Löydät korkealaatuisia taustakehittäjiä käymällä millä tahansa seuraavista alustoista:
- Upwork
- Toptal
- Fiverr
- Turing
- Askelkivi
- Proxify (tämä olemme me!)
Tarjoamme huipputason taustakehittäjiä, jotka hallitsevat tämän hetken suosituimmat stackit, mukaan lukien PHP, JavaScript, Java, .NET, Ruby, Ruby on Rails ja paljon muuta.
Pakettimme sisältävät sekä osa- että kokoaikaisia mahdollisuuksia, ja olemme jopa 50 % kustannustehokkaampia kuin muut markkinoiden freelance- työpaikat.
Miten haastatella back- end- kehittäjiä
Sellaisten hakijoiden haastattelu, joilla on taustaohjelmistokehitystaitoja, edellyttää ehdokkaiden arviointia kahden erityyppisten taitojen osalta:
- Pehmeät taidot (kommunikaatio, englannin kielen taito, avoimuus, luovuus, itsevarmuutta)
- Kovat taidot (koodaus, virheenkorjaus, ongelmanratkaisukyky, tekniset tiedot, kyky oppia ja soveltaa uusia trendejä ja paradigmoja tarpeen mukaan)
5 parasta teknistä taitoa, jotka jokaisella taustakehittäjällä tulee olla
Tullakseen monipuoliseksi taustakehittäjäksi, joka kykenee työskentelemään useiden projektien parissa ja ratkaisemaan ongelmia niiden ilmaantuessa, hänen on hallittava useita eri ohjelmointikieliä.
Nämä pitävät sisällään:
Java: Se on kirjoitettu IDE: ssä (Integrated Development Environment), ennen kuin se on käännetty matalan tason kielellä, jota ohjelmistotulkit voivat ymmärtää. Java on erittäin arvokas taito jokaiselle lupaavalle taustakehittäjälle, lähinnä sen korkean suorituskyvyn, vankan laadun (ohjelmointihaasteiden ratkaisemisen kannalta) ja todistetusti mukautuvuuden vuoksi.
PHP: Se on yleisimmin käytetty palvelinpuolen komentosarjakieli verkkosivustojen kehittämiseen maailmanlaajuisesti. Tällä hetkellä on yli 20 miljoonaa verkkosivustoa käyttää PHP: tä, ja määrä jatkaa kasvuaan (tosin hitaammin). Lisäksi PHP mahdollistaa myös MySQL- integroinnin ja -tuen, mikä ratkaisee kaksi asiaa yhdellä iskulla.
Python: Vaikka Pythonilla ei ole juurikaan tekemistä samannimisen käärmeen kanssa, jonka mukaan se nimettiin, se on nykyään yksi tärkeimmistä taustakehityksen kielistä. Itse asiassa vuoden 2019 StackOverflow- tutkimuksessa havaittiin, että Python oli yksi nopeimmin kasvavista kielistä maailmanlaajuisesti, ennen Javaa ja hävisi vain Rustille. Python käyttää toiminnallisia, proseduureja ja oliopohjaisia ohjelmointikonsepteja helposti. Se on myös suhteellisen helppo oppia, mikä tekee siitä ihanteellisen valinnan, sekä aloittelijoille, että kokeneille taustaohjelmoijille.
SQL: Niin kutsuttu "Structured Query Language" tai SQL näyttää jatkuvan useiden vuosikymmenten ajan kaikkia kertoja vastaan. Sen avulla ohjelmoijat voivat helposti syöttää, poistaa ja käsitellä tietokantamerkintöjä sekä luoda uusia taulukoita ja jopa määrittää käyttöoikeuksia samoihin taulukoihin. Ammattimainen taustaohjelmistokehittäjä joutuu jossain vaiheessa käsittelemään tietokantoja. Tätä varten SQL on taito, joka heidän on ehdottomasti tiedettävä.
Git: Uusien ominaisuuksien lisääminen sovellukseen tahallaan ei vie ketään minnekään. Tehdäkseen sen oikein kehittäjillä on oltava vankka versionhallintajärjestelmä, joka seuraa muutoksia ja dokumentoi koodin sitoumukset vastaavasti. Sitä varten on Git. Git on avoimen lähdekoodin versionhallintajärjestelmä, joka käsittelee kaikenlaisia projekteja mittakaavasta ja koosta riippumatta. Lienee tarpeetonta sanoa, että kokeneen taustakehittäjän pitäisi tuntea Git ulkoa.
Sillä välin minulla oli joitain kysymyksiä taustakehityksestä, ja olin kiinnostunut tietämään, kuinka laaja Proxify- kehittäjien verkostomme voisi ratkaista ne.
Kysymykseni olivat:
- Mitkä ovat tärkeimmät erot tausta- ja käyttöliittymäkehityksen välillä?
- Mitkä ovat suosikkikielesi (nopein, optimoiduin, suosituin) taustakehitykseen, kehyksesi ja työkalusi?
- Mikä on taustaohjelmistokehityksen tulevaisuus?
Bahaa Mashtoub vastasi haasteeseen. Mitä tulee ensimmäiseen kysymykseen, hänen oli sanottava seuraavaa:
"Tausta- ja käyttöliittymäkehitys ovat osa ohjelmistosovelluskehitysprosessia. Front- end- kehityksen tavoitteet poikkeavat back- end- tavoitteista ja siksi ohjelmointikieliä/kehyksiä on suunniteltu jokaiselle niistä. Mitä tulee käyttöliittymään, työstettävänä on useita alueita, mutta enimmäkseen se pyörii UI/UX: n ympärillä eli käyttöliittymässä ja käyttökokemuksessa.”
Bahaa jatkoi vielä kommentoimalla seuraavasti.
"Tästä huolimatta käyttöliittymäkehityksessä on kyse sellaisen koodin kehittämisestä, joka tulee voimaan asiakkaan selaimessa/sovelluksessa, ja jonka kanssa käyttäjä on vuorovaikutuksessa", hän sanoi.
Mitä tulee haasteisiin käyttöliittymän ja taustajärjestelmän kehityksen välillä, Bahaa hahmotteli useita keskeisiä eroja näiden kahden välillä.
"Microsoftin teknologioiden lisäksi on kehitetty ja suunniteltu useita puitteita yksinkertaistamaan ja turvaamaan tätä asiakaspuolen/käyttöliittymän kehitystä, kuten Angular, React, Vue ja muut", hän huomautti. Tämän lisäksi Bahaa sanoi myös, että käyttöliittymän kanssa työskentelyssä on ainutlaatuiset haasteensa, kuten responsiivisen käyttöliittymän suunnittelu, jossa suunnittelu pysyy yhtenäisenä, jos näytön resoluutiot muuttuvat.
"Toinen haaste", hän lisäsi, "on turvallisuus, koska tietojen tallentaminen käyttöliittymään perustuu evästeisiin ja paikalliseen/ istuntotallennustilaan."
"Taustaratkaisun osalta pääpaino on monikerroksisten, itsenäisten/skaalautuvien, turvallisten ja nopeiden, palvelimella toimivien palveluiden kehittämisessä. Nämä taustapalvelut voivat kommunikoida keskenään ja olemassa olevien tietokantojen kanssa, suorittaakseen toimintoja ja käsitelläkseen käyttöliittymän pyyntöjä ja antaakseen vastauksia takaisin."
"Joten", Bahaan ensimmäinen vastaus oli lähestymässä loppuaan, "päätoiminto on luoda vahva ja turvallinen taustajärjestelmä, joka pystyy käsittelemään käyttäjien pyyntöjä ja suorittamaan toimintoja tarpeen mukaan."
Hän huomautti, että taustajärjestelmän kehitysprosessiin liittyy useita haasteita, jotka ovat muun muassa seuraavat:
- Turvallisuus
- Skaalautuvuus
- Todennus
- Valtuutus
- Suorituskyky
- Ja muut
"Yksi yleisimmistä monien yritysten kohtaamista ongelmista on se, mitä kutsun taustakoodin kehittämisen monoliittiseksi tapaksi. Viimeaikaisessa kehitystavassa on otettu käyttöön mikropalveluarkkitehtuuri, joka auttaa rakentamaan skaalautuvia ja turvallisia sovelluksia”, Bahaa päätti ensimmäisen kysymyksen.
Entä Bahaan suosikkityökalut taustakehitykseen? Hän listasi muutaman:
- C# (kieli)
- Microsoft Asp.net -kehys
- ASP.NET Core
- Entity Frameworks
- Linq
- Postman
- Visual Studio 2022
- Rider
- Web Apis
- Ocelot
- Microservices
- Unit tests
Lopuksi halusin saada hyvän yleiskatsauksen taustaohjelmistokehityksen tulevaisuudesta. Miltä se näyttää kokeneen kehittäjän näkökulmasta?
”Uskon, että tulevaisuudessa tarjotaan yhä enemmän työkaluja nopeamman, skaalautuvamman, uudelleenkäytettävän ja muokattavamman taustakehityksen saamiseksi, joka auttaa edesauttaa toimintojen sujuvuutta. Luulen, että monien yritysten tulevaisuus on mikropalveluarkkitehtuuri, varsinkin jos ne haluavat skaalata sovelluksiaan maailmanlaajuisesti.”
Suosituimmat laajat käsitteet, jotka taustaohjelmistokehittäjien tulisi tuntea
Huippuluokan tekninen persoona on varmasti toivottava ominaisuus, mutta tämän ainoan ominaisuuden omaavan henkilön palkkaaminen on resepti katastrofiin.
Teknisen osaamisen lisäksi laadukkaan taustakehittäjän tulee myös olla erinomainen kommunikoimaan ideoistaan tiiminjohtajalleen, työtovereilleen sekä yrityksen ylempään ryhmään (toimitusjohtaja, COO).
Vakiintuneiden viestintätaitojen ansiosta on helpompaa tehdä yhteistyötä yrityksen kaikkien kanssa, mukaan lukien työtoverit, jotka eivät osaa ohjelmointikieliä, ja jotka eivät tunne ohjelmistokehityksen hienouksia.
Muita pehmeitä taitoja, jotka jokaisen kehittäjän tulee ottaa huomioon, ovat:
Proaktiivisuus: Soveltuvin osin ongelmien ratkaiseminen itse sen sijaan, että odotat jonkun muun käskevän sinua ratkaisemaan ne.
Itsevarmuutta: Osallistuminen aktiivisesti projektin kehittämiseen sen sijaan, että seuraisi passiivisesti tehtäviä ja käskyjä.
Joukkuepelaaja: Sinulla on kärsivällisyyttä selittää monimutkaiset käsitteet yksinkertaisesti ihmisille, jotka eivät välttämättä tunne koodia.
Täsmällisyys: Rajallisilla resursseilla työskentely ja asioiden ajallaan tekeminen on MUST.
Luovuus: Jokaisen täytyy silloin tällöin lähestyä ongelmaa lintuperspektiivistä; toisin sanoen näkökulman muuttaminen johtaa usein optimoituihin ratkaisuihin missä tahansa tehtävässä.
Back- end- haastattelukysymykset
Tässä on joitain taustakehittäjien kysymyksiä keskustelun käynnistämiseksi haastatteluprosessin aikana:
1. Back- end- haastattelukysymykset
- Odotettu vastaus: Tässä on joitain taustakehittäjien kysymyksiä keskustelun käynnistämiseksi haastatteluprosessin aikana:
2. Miten lähestyt virheenkorjausta?
- Odotettu vastaus: Suhtaudun virheenkorjaukseen tieteellisellä menetelmällä. Ensin teen hypoteesin. Sitten luon kokeen sen kumoamiseksi. Lopuksi toistan vaiheet, kunnes vika löydetään ja korjataan.
3. Mitä on "korkea koheesio"?
- Odotettu vastaus: "Korkea koheesio" on ohjelmoinnin käsite, jossa luodaan luokka, jolla on hyvin määritelty tehtävä. Toisaalta "matala koheesio" viittaa luokkaan, joka tekee monia töitä, joilla on vähän yhteistä.
4. Mitä on "kytkentä"?
- Odotettu vastaus: Kytkentä mittaa, missä määrin eri ohjelmistomoduulit ovat toisistaan riippuvaisia. Hyvässä sovelluksessa on alhainen kytkentä.
5. Mikä on NoSQL- tietokanta?
- Odotettu vastaus: NoSQL- tietokannat eroavat SQL- tietokannoista siinä, että ne tallentavat (ja hakevat) merkintöjä asiakirjoihin relaatiotaulukoiden sijaan. Asiakirjojen käytön lisäksi NoSQL-tietokannat voivat myös tallentaa tietoja avainarvoihin, leveisiin sarakkeisiin ja kaavioihin.
Miksi sinun pitäisi palkata taustakehittäjiä?
Back-end on ehdottoman välttämätöntä sovelluksen onnistumiselle. Sovelluksen rakentaminen ilman taustakehittäjiä on kuin yrittäisi neuloa villapaita ilman neuloja!
Tutustu joihinkin vaihtoehtoihimme ja varaa lyhyt puhelu keskustellaksesi lisää tarpeistasi.
Täydellinen työntekijäsi odottaa!