laacz.lv

Kaspara F. neoficiālā mājaslapa (Anno 1997)

Ko uzdot programmētājam kandidātam?

Teiksim, Tu meklē sev kolēģi. Programmētāju. Viens no viņa kvalifikācijas izvērtēšanas punktiem ir praktiskais darbs. Ko Tu esi kādam uzdevis? Va varbūt Tev ir uzdevuši?

Piemēram, iesniegt kodu, kruš aprēķina π 3948. ciparu aiz komata? Iesniegt aplikāciju, kura ļauj manipulēt ar koka tipa izvēlni (treeview)?

Parādīt jau strādājošu projektu vai produktu neskaitās. Sagriezt vairāk vai mazāk sarežģītu HTML kodu neskaitās (tā nav gluži tā programmēšana, kura mani interesē). Pie kam uzdevums vēlams – valod- un platformneatkarīgs. Nav tā, ka man ir kāds jāpieņem vai pārskatāmā nākotnē atkal tas būs jādara, tomēr interesē, jo, kad bija nepieciešams, ilgi lauzīju galvu un beigās pēc konsultācijām nonācu pie treeview :)

Starp citu, pāris labas idejas var pasmelties no ellīgi senā smejmoon uzorganizētā latvian language shootout.

Vilx-

Btw – viena lieta, kas man pašam ienāca pirms kāda laika prātā: Uzdod apgriest stringu otrādi. T.i. “ABCDE” par “EDCBA”.

Bonuspunkti, ja strādā uz Unicode. Dubultbonuspunkti, ja korekti strādā uz Unicode arī visos eksotiskajos gadījumos (ja UTF-8, tad nekorekti koda punkti; ja UTF-16, tad surogāt-pāri; utml.)

Delfins

nu LOL… pacēli adresi, kur arī esmu kaut ko submitējis.. man bij pārsteigums :)
Imho, uzdevums jādod konkrētai vakancei atbilstošu uzdevumu novienkāršoto daļu. Vislabāk dot tādus uzdevumus, kur varētu noteikt, cik tad smuki (gan vizuāli, gan `pārdomāti`) raksta kodu.

Kaitnieks

“Bonuspunktu” sakarā ir svarīgi pateikt, par ko būs bonuspunkti, jo citādi var sanākt smags aplauziens abām pusēm (piemēram, ja es redzētu ka kandidāts taisa kaut kādu unicode detektēšanu vienkāršā uzdevumā “apgriez stringu”, tad tas būtu mīnuss manās acīs, jo netaisa pēc specifikācijas – ar tādiem mēdz būt pēc tam baigā noņemšanās; bonuspunkts ir tad, ja kandidāts paprasa, vai to vajag darīt (precizē detaļas)).

Bet par uzdevumiem runājot, tur tiešām neko sarežģītu nevajag. Man savulaik bija 3 uzdevumu komplekts, no kuriem divi daudz pateica par kandidātu – viens bija atrast vidējo vērtību masīvā (daudzi nepārbaudīja tukšo masīvu un dalīja ar nulli, tātad, paviršība) un otrs bija iepriekš sagatavots masīvs (tipa [id: 1, parent: 0, name: aaaa], [id:2, parent: 1, name: bbbb], …) un to vajadzēja izvadīt lapu koka formātā (nu, kā vairāklīmeņu izvēlni) – līdzīgi kā jūsu treeview ideja. Bija viens kandidāts, kas stundu šitos pildīja, es nejokoju.

deni2s

Inbox.lv kandidātiem dod teorētiskus uzdevumus pildīšanai uz vietas (rakstīt programmas uz papīra, meklēt kļūdas, pārvērst visādus stringus, binārās darbības utt.), tāpat arī iedod mājasdarbu – praktisko darbu, kur var izvēlēties sev tīkamāko / spējām atbilstošāko uzdevumu.

Lai gan varu pateikt, ka visticamāk mājasdarbu labāk spēs izpildīt kāds nestrādājošs cilvēks, kuram ir daudz laika, nekā praktizējošs programmētājs, kuram pietiek jau ar savu darbu, tāpēc šo faktoru vajadzētu ņemt vērā.

Jānis

Es parasti dodu programmēšanas olimpiāžu uzdevumus (vienkāršos). no http://acm.timus.ru/ un http://www.lio.lv/olimps/
Intervijā divus, un prasu, lai stāsta, kā risinātu šādu problēmu. (Gribu viņu domu gājienu). Viens ir vairāk algoritmisks otrs vairāk matemātisks.

Mājas darbs vēl viens.
Parasti dodu šito: http://acm.timus.ru/problem.aspx?space=1&num=...
Uzdevums ir elementārs, mani galvenokārt interisē divi faktori, kā tiek realizēts + kāds izskatās kods (stils).

Olimpiāžu uzdevumi man patīk, jo viņiem (vismaz tiem, ko es esmu piemeklējis) ir vairāki risinājumi, līdz ar to nav tā, ka es sagaidu vienu konkrētu atbildi.

Vēl man patīk intervijā pajautāt, ja būtu uzdevums uzrakstīt funkciju, kas sakārto 10^6 naturālus skaitļus, kādu algoritmu izvēlētos un kāpēc. Galvenokārt, jo negribu laist cilvēkus pie sistēmas, kas nezin elementāras lietas. Esmu pārsteigts, cik daudz cilvēku nevar nosaukt nevienu kārtošanas algoritmu.

adrians

Piekrītu #3 atbildei Delfins.

Ja tas ir cilvēks kurš strādās komandā un nodarbosies ar programmu/koda rakstīšanu — ar software development — tad pats svarīgākais, manuprāt, ir tas, cik saprotams ir viņa kods, cik lielu uzmanību viņš pievērš koda kvalitātei. Visas tās lietas par ko raksta grāmatā cc2e.

me

Man pēdējā laika favorite ir pāru progrmmēšanas sesija (1,5-2h) iepriekš sagatavotas problēmas/uzdevuma risināšanā. Ļoti daudz var spriest par potenciālo kolēģi pēc šādas aktivitātes.

Gints

Dažas pārdomas par šo:
– Pirmkārt, kā liecina pieredze, uzdevumiem ir jābūt, jo ar pārrunām vien sanāk smagi aplauzties.
– Otrkārt uzdevumiem jābūt atbilstoši meklējamam cilvēkam un viņa pieredzei un maksimāli pietuvinātiem reāliem uzdevumiem, kas būs jāveic ikdienas darbā.
Ja vien nemeklē mega džeku, kas atrisinās visu pārējo vidējo programmētāju neatrisināmās problēmas, tad (vismaz manā pašreizējā darba vietā, attiecība uz DB programmēšanu) viņam ir jāmāk:
1) precīzi lasīt specifikācija. Diemžēl kā liecina prakse gan ar jau esošajiem darbiniekiem, gan tiem kuriem tiek dots tests, tas nebūt laikam nav tik vienkārši, jo atlasa ne to, skaita ne to utt. Tātad ir problēmas ar koncentrēšanos un spēju izlasīt nebūt ne īpaši sarežģītu un/vai sapiņķerētu uzdevumu.
2) Uzrakstīt kodu tā, lai tas izskatītos kaut cik pieņemami un arī citi cilvēki (un pats autors) to pēc tam spētu uzturēt. Arī šī lieta reizēm mēdz būt ar lieliem trūkumiem, pat atgādinot uzdevuma tekstā, ka jābūt komentāriem un paskaidrojumiem par netriviālām konstrukcijām.
3) Uzrakstīt kodu tā, lai tas strādātu kaut cik normāli arī pie lielāka datu daudzuma, nevis tikai izstrādes DB ietvaros. Arī ļoti tipiska problēma ļoti daudziem.

Un tas ko mēs dodam ir nosacīta maza prasībiņa, kuru vajag implementēt PL/SQLā. Gana tuvu tām prasībām, ar ko nākas sastapties šeit. Man neinteresē vidējā programmētāja spēja risināt olimpiāžu atjautības uzdevumus vai spēja uzrakstīt elegantā SQL teikumā vienu sarežģītu atskaiti. Priekš pirmā uzdevuma mums ir mums pāris cilvēku, priekš otrā esmu es ;), bet vidējam programmētājam ir jāspēj veiksmīgi tikt galā ar ikdienas darbu nevis jāspēj atrisināt mega sarežģīti uzdevumi un ikdienas darbos nepārtraukti jāpielaiž kļūdas, jo cilvēks, piemēram, ir gudrs, bet neuzmanīgs vai viņam vienkārši uzdevumi nav absolūti interesanti. Par .NET programmētājiem es īpaši neinteresējos, bet arī viņiem ir tests, kurā ir jāpilda vairāk vai mazāk reālai dzīvei pietuvināti uzdevumi.
OK un rezumējot visu šī garā palaga tekstu – manuprāt uzdevumiem jābūt maksimāli atbilstošiem potenciāli veicamajam darbam.

deni2s

Pieļauju, ka svarīga īpašība būtu arī spēja iedziļināties problēmā, un vajadzības gadījumā spēja atrast palīdzību/risinājumu kaut vai ar Google palīdzību.

Varbūt es uz sitiena nevaru nosaukt visu kārtošanas algoritmu priekšrocības un trūkumus, jo pēdējā laikā nav bijusi praksē nepieciešamība ar tiem saskarties, taču es zinu, kur meklēt šo informāciju un vajadzības gadījumā izkodīšu visu cauri un izvēlēšos labāko. Tā ka, es domāju svarīga ir spēja arī uztvert dokumentāciju un spēja noskaidrot nezināmo.

Kaitnieks

Intuīcija nepalīdzēs, ja pretī sēdošais kandidāts pats ir 100% pārliecināts, ka ir īsts programmēšanas eksperts. It īpaši, ja viņam ir kaut kāda tehniskā augstākā izglītība – tās skolas iedveš pārliecību par sevi, bet ne prasmes (tas nenozīmē, ka mācoties tādās nevar gūt prasmes – var, tikai pašam ar sevi jāstrādā).

deni2s

Par intuīciju – man šķiet, ka bija kaut kāds pētījums, ka reāli darba ņēmējs zemapziņā pieņem lēmumu apmēram 20 sekundžu laikā, kopš ierauga darbinieku. Pazīstu diezgan daudz uzņēmuma vadītājus, kuri ir teikuši, ka viņiem vajag tikai paskatīties uz cilvēku un parunāties 5 minūtes, lai pieņemtu lēmumu, un ka parasti intuīcija nepieviļ. Un ka iemeslu darba uzteikšanai vai pieņemšanai darbā var atrast vienmēr.

Ja tu nespēj saskatīt uz kā balstās tava intuīcija, tad protams, ka argumentu atrašana būs problemātiska.

Ne par intuīciju:
“And just how do you get people to share your values? Short answer: find those who already do. Look at hell’s angels or Greenpeece. “We hire attitudes,” says Herb Kelleher of SouthWest Airlines. The logic is that you can make positive people into good pilots, but turning great pilots with attitude problems into charming servers of customers is close to impossible. Funky Inc. recruits people with the right attitude, then it trains them in skills – not the reverse. We can no longer bring in smart people and then brainwash them at training camps. Ideally, of course we try to attract people who are smart and share our values. But, if you are forced to choose, go for attitude. Lenin was right again. Find the revolutionaries. Do not try to change people.” – iz Funky Business grāmatas.

gg

Izskatās ir progress, kādreiz nekādus uzdevumus Latvijā neprasīja.
Papildus jautājums, kā tagad ar algām, ir atbilstošas atlases prasībām, jeb joprojām bola acis un stāsta, ka tik daudz tikai valde drīkst pelnīt, kad prasi 1k+ naudiņas.

Jānis

To Gints:
Par tiem olimpiāžu uzdevumiem – kā jau teicu – iet runa par vienkāršiem uzdevumiem.
No tiem, ko dodu intervijā – pirmajām visvienkāršākais risinājums, kuru uzreiz arī var pamanīt ir rekursīvs. Diemžēl aptuveni 25% to neredz, 50% redz, bet kad palūdz uz papīra uzrakstīt kodu (aptuveni 10-20 rindiņas), tad apstulbst, un ar 25% tiek turpināta saruna par iespējām nooptimizēt algoritmu, jo rekursija ir diezgan lēns variants.
Mājas darbs – ir uzdevums, kur ir jāveic divas lietas – jāuzbūvē binārs koks un jāapstaigā. Ja negrib bināro koku, tad var ar masīviem spēlēties. Varianti ir un tie ir vienkārši.
Manā uztverē, ja kandidāts nevar uzrakstīt elementāru rekursiju un koka struktūru, tad tas nav vidējā līmeņa programmētājs.

To deni2s – es arī nenoliedzu, ka tas ir pieņemami, ja cilvēks māk atrast informāciju un nepatur visu galvā. Bet elementārām teorijas zināšanām vajadzētu būt. Nosaukt vismaz vienu kārtošanas algoritmu vajadzētu varēt. Ja cilvēkam, kurš ir beidzis bakalaurus/maģistrus datorzinībās nav aizķēries prātā ne quicksorts, ne bubblesorts, tad arī tas nav vidējā līmeņa programmētājs.

Par rezultātiem.
Pie sistēmas, kurā ir implementēti dažādi matemātiskie modeļi, vēljoprojām strādā 2 no 4 cilvēkiem, kas tika veiksmīgi cauri šim procesam. (Vienam pēc pārbaudes laika palūdza aiziet, bet ne tehnisko zināšanu dēļ. Un vienam pārbaudes laikā piedāvāja darbu citur, kas viņam likās interesantāk – līdz ar to pats aizgāja).

m

Pēc augsskolas vai studējot pēdējos kursos visus šos matemātiskos uzdevumus bez problēmām varēja rēķināt un atkost. Tagad gan saprotu, ka daudz kas ir aizmirsies, jo reāli dzīvē tā īsti to visu nemaz nevajag izmantot, bet ja vajag, tad vienmēr var atrast kur paskatīties, lai atsvaidzinātu atmiņu.

deni2s

Jāni, bubblesorts un quicksorts ir zināms, taču atzīšos, ka uzrakstīt uz sitiena prasīto kārtošanas algoritmu, kura sarežģītība būtu O(n) nespēju :). Bet vispārīgi tādā “intervijā” sajutos tiešām kā informātikas olimpiādēs skolas laikos :) Patiesībā, foršākais bija, kad aprunājos ar intervētāju, parādot, par ko man ir šaubas vai kas man pietrūkst kāda uzdevuma atrisināšanai, vai ko kur varētu nooptimizēt – kā tu saki – lai redz domu gājienu.

Galvenais ir precīzi noformulēt uzdevumus, jo citreiz arī nevar saprast, kas ir domāts, piemēram, ar programmas optimizāciju – īsāks kods/ātrāks kods/kods, kas prasa mazāk atmiņas/kods, kas prasa mazāk procesora resursus.

Ja nemaldos, binārā koda apstaigāšana bija viens no parastajiem mājasdarbiem LU fizmatos.

m

deni2s : “Ja nemaldos, binārā koda apstaigāšana bija viens no parastajiem mājasdarbiem LU fizmatos.”

Tā arī bija. Binārie koki tur bija jāveido un jāstaigā visvisādos veidos :)

laacz

deni2s. Darba devēja mērķis ir atrast kvalificētāko darbinieku. Un darbinieks, kurš ir teorētiski labi sagatavots un arī praksē prot savu teoriju pielietot, būs daudzsološāks par tādu, kuram gūgle nepieciešama, lai atsauktu atmiņā, kā savā pref valodā realizēt kārtošanu, maigi sakot, nav sevišķi glaimojoši potenciālajam darba ņēmējam.

Uzdevums nav obligāti jāformulē precīzi. Viena no izstrādātāja teju vai obligātajām īpašībām ir spēja precizēt darba uzdevumu, ja tas nav pilnīgs vai nav 100% skaidrs.

--

Programmētājs vairs nav tikai koda rakstītājs. Vienlīdz svarīgi ir novērtēt cilvēcisko aspektus – vai spēsi ar viņu sastrādāties, un vai viņš spēs sastrādāties ar komandu. Attieksme un patiesums, dažreiz ir lielāks pluss nekā pareiza atbilde :)

e-remit

laacz, te nu gan tev nepiekrītu par daudzsološākiem darbiniekiem – tas, labākajā gadījumā, strādā uz zaļiem gurķiem tūlīt pēc skolas sola. Praksē ir bijuši gadījumi, kad teorētiski labs darbinieks, praksē ir nespējīgs sastrādāties un brīnās, kā var uz viņa nepilnībām norādīt. Toties ir laba pieredze ar darbiniekiem, kuri ir atvērti un viņu trūkumus ļoti labi kompensē pareizā attieksme.
Piekrītu tam, ko saka Gints un deni2s, bet olimpiādes uzdevumi būtu izvelkami tikai tad, ja iz vienu vakanci gāāāra rinda ar kandidātiem.

bazvans

Da labi onkas. Praksē bija gadījums, kur uz vienu vietu nāca divi potenciāli spējīgi darbinieki. Tika paņemti uz pārbauds laiku. Viens bija laborants ar ļoti (ļoti labām) teorētiskajām zināšanām pār tēmu, ko apliecināja arī iegūtie sertifikāti, otrs bija otrā kursa students. Gan vienam, gan otram tika uzdots apmēram vienādas sarežģītības un apjoma reāls darbs projektā. Jau darba veikšanas procesā bija redzams, ka pirmais kandidāts dzīvē labāk jūtās akadēmiskajā jomā, jo zināšanas reālā darbā pielietot nepadodas. Kāpēc šo rakstu, a tamdēļ, ka šajā dzīvē viss ir apmēram pa vidu… Bet tam gan ir jāpiekrīt, ka potenciālajam darba ņēmējam ir jāprot izdarīt vienkāršs uzdevums jomā kurā tas tiek meklēts (ir redzēti sludinājumi, ar aprakstu, kur meklē iznīcinātāja pilotu ar adabas zināšanām darbam taksometru firmā, ironizēju, bet pēc būtības apmēram tā).

cilvēks

Olimpiādes uzdevumus var iedot kā m.d., bet nu ne jau uz vietas pildīt.
Es esmu aizmirsis daudzas lietas no augstākās matemātikas, un nezinu no galvas. Toties tiktu galā ar googles palīdzību. Es nedomāju norakstīšanu no googles, bet gan izprašanu.

Un tie kuri liktu kodēt uz papīra vai bez googles. Tas arī, manuprāt, nav pareizi. Jo darba uzdevumi tak nav identiski tādi, ar kādiem cilvēks pirms tam strādājis. Līdz ar to nezin no galvas nianses.
Jā, lietas ko ikdienā kodēju, zinu no galvas. Bet kolīdz kaut kas “jauns”, tā uzreiz jāielūkojas manuālī/googlē. Un manu produktivitāti tas nesamazina.

BigUgga

Visai labs variants ir iedot spagetti kodu bez identiem un likt, lai potenciālais kandidāts saved to kārtībā – sakārto pa f-ijām, saliek pa moduļiem, saformatē, izmet lieko, padara kodu lasāmu, ja tas ir PHP, dabūt, lai darbojas bez kļūdām un noticēm ar error_reporting(E_ALL), utmldz. Šādi pārbaudītu spēju strādāt ar svešu kodu.

Komplektā ar augstāk minēto un spēju uzrakstīt kādu tail recursion f-iju un paskaidrot, kas tur darās (lai nav copy/paste), tādu kandidatūru varētu izskatīt jau sīkāk.

Aizdomājos par kodēšanu uz vietas uz sveša datora, kur “nekā nav” un kad kāds lūr aiz pleca kā arī par Google un risinājuma meklēšanu. Jāatzīstas, ka personīgi es esmu stipri izlaidies un ļoooti bieži ir ērtāk uzsist Googlē un paskatīties, kāda nu tur bija str_repeat, in_array, utt parametru secība, nekā mēģināt mežģīt to no galvas.

Domāju, ka pašam uz vietas būtu šādas-tādas problēmas implementēt kādu vispārzināmu algoritmu, jo tas viss sen ir piemirsts pateicoties “gatavām” f-ijām, nemaz nerunājot par katra algoritma speciālgadījumiem (0,1 elementu masīvs, utmldz)

modric

Veidu ir daudz un dažādi, kā te jau rakstījuši pirms manis.
Tad nu arī my two cents vai me-too…
Labs programmētājs būs tāds, kam ir “programmētāja domāšana”, kam tās nav, to neglābs ne enciklopēdiskas zināšanas, kuras viņš nemāk pielietot, ne fenomenāla atmiņa, ne, tieši otrādi, tante Gūgle jebkurā gadījumā.
Kas īsti ir šī “programmētāja domāšana”, to neviens gan nav skaidri definējis, tas ir tāpat kā ar ir/nav mākslas darbs vai ir/nav pornogrāfija – atšķirt spēj (gandrīz) visi, bet pamēģiniet definēt tā īsi un “juridiski precīzi” :)
Viena no sastāvdaļām, kas vēl nav pieminēta iepriekšējos komentāros, ir spēja netradicionāli skatīties uz vispārzināmām lietām.
Piemēram:
– uzrakstīt funkciju, kas atgriež 1, ja parametrs ir 0, un otrādi, pie tam nav būtiska input validation, kas ir vismaz 95% no šīs funkcijas koda.

– CASE boolean=TRUE PRINT(‘ok’)
CASE boolean=FALSE PRINT(‘nope’)
OTHERWISE PRINT(‘pasniedzeejs = mudax’), jautājums vai šī rinda kādreiz var tikt izpildīta, pasniedzējam pārbaudot programmu

– visi ir rakstījuši Pascal programmu, kas atrisina kvadrātvienādojumu, es to darīju pirms 25 gadiem, mana meita to rakstīja univeritātē, arī laikam visi te komentējošie to ir darījuši. Tad nu tā – ir vispārzināms šis optimālais kods, to ir rakstījuši tūkstošiem studentu, bet tikai VIENS uzrakstīja to par vienu rindu (precīzāk, operatoru) īsāku, un neizmantoja hidden features vai pat compiler bug, kas bija populāras metodes “padomju laiku” programmētāju vidū. Es tagad vairs neatceros, kā tas tieši tika izdarīts, bet pasniedzējs toreiz viņam iedeva ieskaiti semestra sākumā un pateica, ka arī eksāmenu viņš jau ir nokārtojis uz 5 (tagad būtu 10).

Med vennlig hilsen fra Norge,
P.S. starp citu, šeit un arī citur vecajā Airõpā kandidāta profesionalitāti vērtē TIKAI pēc uzrādīto diplomu/sertifikātu daudzuma, kurien te tic kā kristieši Kristus otrajai atnākšanai, tāpēc bieži iegrābjas ar indusiem, kas tos pērk kāliem, vai iekaļ no galvas exam braindumps. Protams, arī citi “parametri” tiek ņemti vērā, jau minētās spējas komunicēt kolektīvā utt

deni2s

Darbā ar kolēģiem aprunājāmies par teoriju un praksi – ka nevienam pēc augstskolas praksē reāli nav bijusi nepieciešamība rakstīt kaut kādus kārtošanas algoritmus – tam ir iebūvētas f-jas, kuras varam izmantot jau gatavas. Nesaku, ka zināt kārtošanas algoritmus ir lieki, taču, galvenais jau tomēr ir izpratne. Ja būs izpratne, tad tādi sīkumi kā parametru secība kādai funkcijai, vai pat funkcijas precīzs nosaukums vairs nav tik būtiski, jo tos tiešām var apskatīt Googlē. Laacz, nezinu, kā tu, bet man ir nācies rakstīt programmas dažādās valodās un ar dažādām valodu versijām – basic, pascal, vbasic, delfi, javascript, java, php, varbūt vēl kādu neesmu pieminējis (papildus vēl darbojos ar CSS, jquery, html, mysql). Un jā, visas funkcijas uzreiz no galvas neatceros, bet arī neuzskatu, ka man tās būtu jāiekaļ. Pietiek praksē mazliet atsvaidzināt zināšanas mazāk lietotajām, un viss ir atkal čikeniekā :)

Īsāk sakot, es par pareizo attieksmi un izpratni :) Ilgtermiņā tas atmaksātos. Un man drīzāk nebūtu vajadzīgs darbinieks, kurš nespēj izgūglēt trūkstošo informāciju :) Un labāk parunājieties ar cilvēkiem par kaut kādiem risinājumiem, un redzēsiet, vai atrodat kopēju valodu un spējat saprast viens otru no pusvārda vai nē, un vai jums vispār ir pieņemama pretējās puses attieksme pret dzīvi kopumā.

modric

Vēl vienu netradicionālo risinājumu piemēru atcerējos, bet tā ir matemātikas, ne programmēšanas klasika, kad tas notika, programmēšanas kā tādas vēl nebija.
Skolotājs uzdeva kādam nogrēkojušamies skolniekam pēc stundām par sodu saskaitīt visu veselo skaitļu no 1 līdz 100 summu, ātrāk mājās netikšot. Atbildi sev par izbrīnu viņš dabūja pēc pāris minūtēm. Izrādījās, ka (1+100)*50 ir pareizā atbilde, bija vien jālaiž… Leonards Eilers :) mājās daudz ātrāk, nekā skolotājs bija cerējis.

Jānis

To: #29. cilvēks
Par olimpiāžu uzdevumiem – nav jādod uzdevumi, kas ir no pasaules kārtu fināliem, kura vajag baigo matemātiku un algoritmu teoriju. Runa iet par vienkāršiem uzdevumiem, kur ir jānorealīze kāda no elementārām datu struktūrām vai algoritmiem. (Man liekas, ka nevajadzēja tos saukt par olimpiāžu uzdevumiem. Jā, viņi ir ņemti no lapām, kur tādi apkopoti, bet reāli viņi atbilst LU mājasdarbiem vai arī sagatavošanās uzdevumiem pirms olimpiādēm).
Par kodēšanu uz papīra – ja es kaut ko prasu uzrakstīt, piemēram rekursiju, tad to var rakstīt pseido kodā, un tur nevajag nekādas speciālas zināšanas. Piemēram uzrakstīt rekursiju – dažas rindiņas – funkcijas definīcija, pāriešana uz nākamo līmeni, lieta, ko funkcija dara un beigu kritērijs. Es nevaru iedomāties, kas tur būtu jāgūglē. Neiet jau runa, ka kandidāts tiks noraidīts, ja būs aizmirsts kāds semikols.

to: deni2s. Tu ieminējies par LU. Atcērējos, ka vismaz trīs priekšmetos tur prasīja binārā koka apstaigāšanu: programmēšana, datu struktūrās un pamatalgoritmos :)

Ēriks

Mjā.. pārlasot komentārus radās sajūta, ka kolēģa meklēšanas mijas ar paniskām bailēm, ka tas kolēģis varētu izrādīties gudrāks par pašu meklētāju :)
Nezinu, par kādām NASA tehnoloģiju programmēšanām iet runa, bet webprojektos, manuprāt, jābūt gana plašs redzējums un algoritmu zināšana / lietošana var būt tikai kā bonuss, tieši tāpat kā iemaņas darbā ar konkrētiem frameworkiem, db, utt.
Kandidāts var būt nenormāls ģīks, bet ja šamais nev sociāls (t.s. koda komentāru rakstišanā), jebkuram standarta risinājumam mēģina izveidot “optimizēto” variantu, domāju, nekas labs nav. Ij ko darīt, ja šāds kolēģis projekta vidū izdomās aiziet prom?
Līdz ar ko: viegls/vidējs/sarežģīts (uz programmēšanu nevis matemātiku orientēts) uzdevums, spēja saprast dokumentāciju, koda kvalitāte.

lupus

Neticu teorijai ka var noveerteet iespeejamo koleegji tajaas 1-2h kuras parasti tiek atdaliitas darba intervijaam. Un jaa, viss reduceejaas uz intuiiciju. Ir cilveeki kuriem ir lieliskas idejas bet ir gruutiibas taas noformuleet – kas prasa nedeeljas lai vinju domu uztvertu, sagremotu un paarveerstu par kaut ko kas ir realizeejams – un lielisks. Ir cilveeki kas uz jebkuru testa jautaajumu atbildees 100%, bet – kad nonaaks liidz esoshaa koda uztverei un savu domu integraacijai buus dzilja … nu… ne paaraak veiksmiigi.
Un ja godiigi – kursh no mums darbaa neskataas googlee/API dokumentaacijaa/atbilstoshos keywords prieksh situaacijas. Dotu priekshroktu straadaat kopaa ar cilveeku kursh zina kur mekleet nevis nespeet paarveerst savu kopu teoreemas pieraadijumu reaalaa kodaa.

Didulis

Es piekrītu BigUgga. Svarīgi, ka koderis, prot darboties ar svešu kodu. Esmu saskāries ar koderiem, kas nespēj ievērot vadlīnijas un raksta lineāru haotisku kodu ar greiziem indent`iem. Pēc tam tādu kodu maintain`ot ir ļoti grūti.
Bez googles ir problemātiski, jo īpaši PHP, kur līdzīgām funkcijām, dažādiem datu tipiem ir atšķirīgas parametru padošanas secības. Personīgi es regulāri jaucu, kādā secībā ir parametri funkcijām in_array(); un strpos();, taču zinu, ka abām ir “identiski” parametri, bet atšķirīgās secībās (nepiekasieties sīkumiem, jo zinu, ka trešais optional abām funkcijām ir pilnīgi atšķirīgs).

blabla

Burtiski paris nedelas atpakal interveju aptuveni 20 cilvekus. Tas, ko mekleju intervija:
1. Speja piegadat rezultatu;
2. Speja macities un PIEGADAT;
3. Speja darboties komanda.

Ciest nevaru visus algoritmus, atjautibas uzdevumus utt. Iemesli tam ir dazadi:
1. Iespejams, kandidatam ir loti labi attistita logiska domasana, bet man nevajag driver developer;
2. Iespejams, kandidats ir gatavojies sadiem testiem. Vairuma gadijumu visi atrodami interneta. Kadreiz labi draugi teica, ka London 80% graduates ir geniji! Vini zin IQ testus no galvas!
3. Iespejams, kandidata CV un attieksme man izsaka vairak ka uzdevumu risinajumi.

Nav vienota modela, bet no 20 cilvekiem panemam tikai 2 (bija nepieciesami 5), parejos parpirkam izmantojot pazinu loku.

cuu508

Kārtošanas algoritmu utml. lietu pārzināšana noteikti nav jāizvēlās kā vienīgā pareizā mēraukla, tomēr tā ir svarīga un noderīga pazīme. Algoritmus nevajag, galvenais zināt freimvorkus un bibliotēkas? Tagad iedomājies cilvēku, kas piesakās darbā par automehāniķi, esot braucis ar 20 dažādu marku mašīnām un trijas novākojis, bet, teiksim, ātrumkārbu no iekšpuses redzējis nav.

Problēmu risināšanas spēja ir ļoti, ļoti svarīga (jo, godprātīgā gadījumā, programmētāja darbs no arvien jaunu problēmu risināšanas taču vien sastāv, nevis no jau zināmu risinājumu štancēšanas). Tomēr ir starpība, vai tev jau ir plašs pārbaudītu zināšanu un izmēģinātu paņēmienu arsenāls, vai arī tu katrā neskaidrības gadījumā ķeries pie pirmā gūgles meklēšanas rezultāta.

daGrevis

Ļoti interesants raksts! Pats vēl tikai domāju meklēt darbu, bet programmējot mājās jau ir radies kāds priekšstats par to, kas ir svarīgi. Tātad:

1) Ir labi (vienkārši labi, nevis ģeniāli) jāzina to, ko Tu ikdienā darbā darīsi. Nevar būt tā, ka Tev būs vajadzība (kā jau lasīju, ka viens tepat komentēja) sadalīt masīva elementus stringā un atpakaļ, bet Tu pirmo reizi dzirdi par funkcijām kā explode() un implode(),
2) Ir labi jāmāk izmantot internetu; citiem vārdiem sakot, ir jāmāk runāties ar Gugles tanti. Ir patiešām augsta iespējamība, ka tas, ko Tu centies panāk, bet tev nesanāk, arī kādam citam nav sanācis, bet Viņš to ir atrisinājis. Automātiski – problēma risināta,
3) Komunikācija. Tu vari būt ģēnijs, bet ja nemācēsi Savu domu skaidri pastāstīt citiem… nekas tur nebūs. Ir jāspēj skaidri definēt jautājumu un arī lūgt pēc palīdzības. Tas, protams, nav tā, kā esmu novērojis, piemēram, php.lv/f – kāds pasaka, ka Viņam “neJiet” tas un tas – iedod 1000 rindiņas garu kodu un pasaka: “Tiek parādīta tukša lapa. Ko Man darīt?”,
4) No punkta #3 arī izriet punkts #4. Pieredze. Uzskatu, ka pirms Tu ej kur meklēt darbu, ir pašam jāpastrādā kāds laiciņš kaut vai kā “freelancer’am”. Iedomājieties situāciju, ka lūk… programmētāju grupa strādā ar kopēju “framework’u” un programmētājam ir jāizmanto metode foo( bar ). Metode pieņem vienu argumentu un tam ir jābūt integrālim, bet Viņam mainīgais ir kā strings. Nu būtu stulbi, ja viņš nezinātu, kas ir “type-casting’s”! P.S. Uz PHP šis te neattiecas, jo tur ar mainīgo datu tipiem valda vēl neredzēta brīvība,
5) Domu gājiens un redzesloka platums. Liels, liels plus ir tas, ka Tev ir pieredze ar citām valodām. PHP ir funkcija sort() un Tev pat nav jāzina, ka ir vairāki kārtošanas algoritmi (piemēram, “Bubble sort” un “Quicksort”), kas izmantojot savādāku paņēmienu efektīvāk katrā situācijā veic kārtošanu.

Iesniegt savu viedokli Atcelt atbildi.

Atruna par moderāciju. Daži vārdi, var gadīties, ka ir iz melnās listes (viagra and stuff). Tādi komentāri tiek aizturēti, pirms parādās lapā. Ja Tavs komentārs neparādās uzreizi, būs vien jāpagaida, līdz es jamo izlasīšu. Protams, ka paturu tiesības sev netīkošos komentārus dzēst, iemeslu neminot.