Comments on: Programmeerijad ja rähnid http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/?utm_source=rss&utm_medium=rss&utm_campaign=programmeerijad-ja-rahnid Tarkvarast, tarkvaraprojektidest, tarkvaratööstusest ja muust seonduvast Wed, 30 Oct 2024 19:10:00 +0000 http://wordpress.org/?v=2.9.2 hourly 1 By: http://Www.Vouchercode.io/hsamuel.co.uk http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-142399 http://Www.Vouchercode.io/hsamuel.co.uk Sat, 27 Feb 2016 08:59:07 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-142399 <strong>http://Www.Vouchercode.io/hsamuel.co.uk...</strong> Targo tarkvara » Programmeerijad ja rähnid... http://Www.Vouchercode.io/hsamuel.co.uk...

Targo tarkvara » Programmeerijad ja rähnid…

]]>
By: Targo http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-23680 Targo Sun, 12 Feb 2012 15:56:45 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-23680 e, ülesande püstitusel puudus kontekst. Esiteks, loomulikult ma ei öelnud inimesele "Bzzzzzt", ma suhtlen enamasti ikka normaalselt ja selgitan, mis värk on. Aga oma peas ma mõtlesin nii. Peamine emotsioon oli siinjuures pettumus, sest võimekaid inimesi on vähe ja iga intervjueeritava puhul hoian ma salajas pöialt, et ole nüüd ometi tubli ja saa ülesandega hakkama. Teisalt olen võtnud inimesi enamasti küllaltki nõudlikele positsioonidele, kus läheb vaja asjadest sügavuti aru saamist ja iseseisva mõtlemise oskust. Pikalt käehoidmist seal lubada ei saa ja ainult mutrikeeramisest tavaliselt ei piisa. Konkreetne situatsioon oli reklaamitud ka küllaltki nõudlikuna (ja ei leidnud üldse Eestis aset), eeldades korralikku fundamentaalteadmiste sügavust. Kas tegemist on tudengiga või eluaeg töötanuga, ei mängi antud küsimuse juures isegi mingit rolli. Mõlemal juhul on võimalik aru saada, mida ja miks inimene teeb, või siis mitte aru saada. Ja kui arusaamist ei ole, siis mine tea, võibolla pole karjäärivalik tõesti õige? e, ülesande püstitusel puudus kontekst.
Esiteks, loomulikult ma ei öelnud inimesele “Bzzzzzt”, ma suhtlen enamasti ikka normaalselt ja selgitan, mis värk on. Aga oma peas ma mõtlesin nii. Peamine emotsioon oli siinjuures pettumus, sest võimekaid inimesi on vähe ja iga intervjueeritava puhul hoian ma salajas pöialt, et ole nüüd ometi tubli ja saa ülesandega hakkama.
Teisalt olen võtnud inimesi enamasti küllaltki nõudlikele positsioonidele, kus läheb vaja asjadest sügavuti aru saamist ja iseseisva mõtlemise oskust. Pikalt käehoidmist seal lubada ei saa ja ainult mutrikeeramisest tavaliselt ei piisa.
Konkreetne situatsioon oli reklaamitud ka küllaltki nõudlikuna (ja ei leidnud üldse Eestis aset), eeldades korralikku fundamentaalteadmiste sügavust. Kas tegemist on tudengiga või eluaeg töötanuga, ei mängi antud küsimuse juures isegi mingit rolli. Mõlemal juhul on võimalik aru saada, mida ja miks inimene teeb, või siis mitte aru saada. Ja kui arusaamist ei ole, siis mine tea, võibolla pole karjäärivalik tõesti õige?

]]>
By: e http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-23678 e Sun, 12 Feb 2012 13:36:05 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-23678 Üldiselt on Sinu artiklid üsna põnevad, loen hea meelega. Aga siin oli tegemist tüüpilise "Mul on 15-aastane programmeerimiskogemus ja Sina, nolk, astu minema" suhtumisega. Tõenäoliselt oli tegemist noore tudengiga, kellel puudub kogemus ning IT-alane karjäär alles algamas. Sellise roll ongi kuskil ettevõttes väikese palga eest väikeste asjade kallal nokitseda ning vaadata üle tegijate õla, kuidas asjad käivad. Eks 1-2 aasta pärast jõuab ka tema arvestatavale tasemele. Eesti IT-alase hariduse tase ei soodusta olukorda, kus ülikoolist tulnud nooruk on kohe võimeline head koodi kirjutama. Vaatame, kas või 45-minutilise lennu kaugusele. Õppimine TTÜ-s või IT Kolledžis on nohu võrreldes õpingutega KTH-s või Chalmersis. Aga meie ei saagi oma ülikoolide õppekoormust karmistada, sest muidu ei suuda Eesti tudeng töö kõrvalt õppida. Ja keskmine Eesti tudeng ongi sunnitud mingisugustki tööd tegema, et elus midagigi endale lubada. Aga nüüd tagasi artikli sisu juurde. Kuidas Su "Bzzzzzt, järgmine, palun." peaks seda inimest motiveerima? Oli siis tõesti nii keeruline formuleerida paari lausega omapoolne visioon "heast" lahendusest? Võid talle "Ei" öelda, kuid näpunäited ja sõbralik suhtumine kindlasti motiveeriks teda. Ehk läheks ta koju asju uurima. Sinu vastuse peale, ta tõenäoliselt läks sõpradega õltsi jooma ning mine sa tea, äkki kõlaski fraas: "Fuck IT, ma lähen haldusjuhtimist õppima" = miinus üks kaotsiläinud tulevane IT tegija. Üldiselt on Sinu artiklid üsna põnevad, loen hea meelega. Aga siin oli tegemist tüüpilise “Mul on 15-aastane programmeerimiskogemus ja Sina, nolk, astu minema” suhtumisega.

Tõenäoliselt oli tegemist noore tudengiga, kellel puudub kogemus ning IT-alane karjäär alles algamas. Sellise roll ongi kuskil ettevõttes väikese palga eest väikeste asjade kallal nokitseda ning vaadata üle tegijate õla, kuidas asjad käivad. Eks 1-2 aasta pärast jõuab ka tema arvestatavale tasemele. Eesti IT-alase hariduse tase ei soodusta olukorda, kus ülikoolist tulnud nooruk on kohe võimeline head koodi kirjutama.

Vaatame, kas või 45-minutilise lennu kaugusele. Õppimine TTÜ-s või IT Kolledžis on nohu võrreldes õpingutega KTH-s või Chalmersis. Aga meie ei saagi oma ülikoolide õppekoormust karmistada, sest muidu ei suuda Eesti tudeng töö kõrvalt õppida. Ja keskmine Eesti tudeng ongi sunnitud mingisugustki tööd tegema, et elus midagigi endale lubada.

Aga nüüd tagasi artikli sisu juurde.
Kuidas Su “Bzzzzzt, järgmine, palun.” peaks seda inimest motiveerima? Oli siis tõesti nii keeruline formuleerida paari lausega omapoolne visioon “heast” lahendusest?

Võid talle “Ei” öelda, kuid näpunäited ja sõbralik suhtumine kindlasti motiveeriks teda. Ehk läheks ta koju asju uurima. Sinu vastuse peale, ta tõenäoliselt läks sõpradega õltsi jooma ning mine sa tea, äkki kõlaski fraas: “Fuck IT, ma lähen haldusjuhtimist õppima” = miinus üks kaotsiläinud tulevane IT tegija.

]]>
By: Targo http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-12375 Targo Fri, 13 Nov 2009 13:19:12 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-12375 uudishimulik, vaata minu vastuseid Juri kommentaarile ülal, seal on seda teemat käsitletud. uudishimulik, vaata minu vastuseid Juri kommentaarile ülal, seal on seda teemat käsitletud.

]]>
By: uudisimulik http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-10536 uudisimulik Tue, 27 Oct 2009 11:17:44 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-10536 Aga, kas selline kood lahendaks selle probleemi, kui tahetakse lihtsalt massiivis punased ja rohelised pallid sorteerida(p ees ja rohelised taga) kui teada et pallide arv ei ulatu miljonitesse vaid piirdub paarisajaga. Sry vbl rumal küssa see, aga olen alles avastamas seda sorti maailma. public static void Main(string[] arg) { ArrayList pallid = new ArrayList(); pallid.Add("Punane_pall"); pallid.Add("Roheline_pall"); pallid.Add("Punane_pall"); pallid.Add("Punane_pall"); pallid.Add("Roheline_pall"); pallid.Add("Punane_pall"); pallid.Add("Punane_pall"); pallid.Sort(); for (int i = 0; i < pallid.Count; i++) { Console.WriteLine(pallid[i]); } } } Aga, kas selline kood lahendaks selle probleemi, kui tahetakse lihtsalt massiivis
punased ja rohelised pallid sorteerida(p ees ja rohelised taga) kui teada et pallide arv ei ulatu miljonitesse vaid piirdub paarisajaga.
Sry vbl rumal küssa see, aga olen alles avastamas seda sorti maailma.

public static void Main(string[] arg)
{
ArrayList pallid = new ArrayList();
pallid.Add(“Punane_pall”);
pallid.Add(“Roheline_pall”);
pallid.Add(“Punane_pall”);
pallid.Add(“Punane_pall”);
pallid.Add(“Roheline_pall”);
pallid.Add(“Punane_pall”);
pallid.Add(“Punane_pall”);

pallid.Sort();
for (int i = 0; i < pallid.Count; i++)
{
Console.WriteLine(pallid[i]);
}
}
}

]]>
By: Targo http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-2546 Targo Thu, 11 Sep 2008 10:35:37 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-2546 Hi Juri, sorry for not replying earlier, these days have been super busy. First, I don't think we have any disagreement about the fact that code reuse is good. Obviously, you should use as much of the framework functionality as you can, *as long as you don't sacrifice any other important tenets*. As long as you've only got 6 balls to sort, and swapping them takes a microsecond, who cares how you do it. In this particular interview I had with this guy, he failed on multiple counts though: - First, when someone asks you to create an algorithm for something and doesn't provide much extra information, you should never, ever just jump into coding. You should always ask the critical questions about the data and the expected behavior. In this super-simplified problem, the obvious questions are: how many balls are we talking about? If you have one hundred million balls, the difference between the optimal algorithm and Array.Sort() is huge and your solution will fail miserably. What is the nature of the balls? In code, things usually look simple, but if we are actually programming an industrial robot that is physically sorting some physical balls, every operation we save counts. Asking these questions is one of the things that separates developers from coders :) - Second, it's absolutely critical to know how your underlying algorithms behave. We can usually assume that framework providers use good algorithms, but there are countless components and methods where this is not the case. And even when the algorithm is good, it might have some quirks that make it unsuitable for your particular problem. For example, do you know if Array.Sort is <a href="http://en.wikipedia.org/wiki/Sorting_algorithm#Stability" rel="nofollow">stable</a> or not? It doesn't matter in this case, but it might in some others (Array.Sort uses QuickSort, which is not stable). cheers, Targo Hi Juri, sorry for not replying earlier, these days have been super busy.
First, I don’t think we have any disagreement about the fact that code reuse is good. Obviously, you should use as much of the framework functionality as you can, *as long as you don’t sacrifice any other important tenets*. As long as you’ve only got 6 balls to sort, and swapping them takes a microsecond, who cares how you do it.
In this particular interview I had with this guy, he failed on multiple counts though:
- First, when someone asks you to create an algorithm for something and doesn’t provide much extra information, you should never, ever just jump into coding. You should always ask the critical questions about the data and the expected behavior. In this super-simplified problem, the obvious questions are: how many balls are we talking about? If you have one hundred million balls, the difference between the optimal algorithm and Array.Sort() is huge and your solution will fail miserably. What is the nature of the balls? In code, things usually look simple, but if we are actually programming an industrial robot that is physically sorting some physical balls, every operation we save counts. Asking these questions is one of the things that separates developers from coders :)
- Second, it’s absolutely critical to know how your underlying algorithms behave. We can usually assume that framework providers use good algorithms, but there are countless components and methods where this is not the case. And even when the algorithm is good, it might have some quirks that make it unsuitable for your particular problem. For example, do you know if Array.Sort is stable or not? It doesn’t matter in this case, but it might in some others (Array.Sort uses QuickSort, which is not stable).

cheers,
Targo

]]>
By: Juri http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-2539 Juri Tue, 02 Sep 2008 10:59:48 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-2539 No, I am not supporting laziness in programming. I just don't like some places at this article. You doing punishment of this man without improvements. Next code snippet improve part of truth at his solution. i don't need know how to Sort() function work. I think this is the good framework reuse. class Program { static void Main(string[] args) { Ball[] balls = new Ball[] { new Ball(Color.Green), new Ball(Color.Red), new Ball(Color.Green), new Ball(Color.Green), new Ball(Color.Green), new Ball(Color.Red), }; Array.Sort(balls); foreach (Ball b in balls) { Console.WriteLine(b.Color.ToString()); } Console.ReadLine(); } } public enum Color : int { Red = 1, Green = 2 } public class Ball : IComparable { public Color Color { get; private set; } public Ball(){} public Ball(Color color) { Color = color; } #region IComparable Members public int CompareTo(Ball other) { return this.Color.CompareTo(other.Color); } #endregion } No, I am not supporting laziness in programming. I just don’t like some places at this article. You doing punishment of this man without improvements. Next code snippet improve part of truth at his solution. i don’t need know how to Sort() function work. I think this is the good framework reuse.

class Program
{
static void Main(string[] args)
{
Ball[] balls = new Ball[]
{
new Ball(Color.Green),
new Ball(Color.Red),
new Ball(Color.Green),
new Ball(Color.Green),
new Ball(Color.Green),
new Ball(Color.Red),
};
Array.Sort(balls);

foreach (Ball b in balls)
{
Console.WriteLine(b.Color.ToString());
}
Console.ReadLine();
}
}

public enum Color : int
{
Red = 1,
Green = 2
}

public class Ball : IComparable
{
public Color Color
{
get;
private set;
}

public Ball(){}

public Ball(Color color)
{
Color = color;
}

#region IComparable Members

public int CompareTo(Ball other)
{
return this.Color.CompareTo(other.Color);
}

#endregion
}

]]>
By: Targo http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-2531 Targo Thu, 28 Aug 2008 12:41:22 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-2531 Hi Juri, thanks for commenting. As an advocate of <a href="http://www.targotennisberg.com/tarkvara/?p=108" rel="nofollow">laziness in programming</a>, I'm a big time believer in code reuse, and I cringe every time when I see people reinventing the wheel. However, I also believe that it is very important to pick the right tool for the job, and understand the properties of these tools well. In this particular case the data had a very powerful constraint on it, as there were only two types of items in the array. Also, the way I phrased the problem to the interviewee implied that switching the balls was a costly operation, and we wanted to save as much time as possible. The idea here was that he would recognize these two special circumstances, and adapt his approach accordingly, as opposed to using a hammer to drive in a screw. Regarding whether it's better to ask about the sorting algorithms, I think the time for such questions is in school. Once we are in real life, our customers don't care about algorithms, they care about whether we can take their data and apply the best approach to it. So I tend to ask somewhat vague, open-ended questions in interviews, because this is the nature of problems we face every day. cheers, Targo Hi Juri, thanks for commenting. As an advocate of laziness in programming, I’m a big time believer in code reuse, and I cringe every time when I see people reinventing the wheel.
However, I also believe that it is very important to pick the right tool for the job, and understand the properties of these tools well.
In this particular case the data had a very powerful constraint on it, as there were only two types of items in the array. Also, the way I phrased the problem to the interviewee implied that switching the balls was a costly operation, and we wanted to save as much time as possible. The idea here was that he would recognize these two special circumstances, and adapt his approach accordingly, as opposed to using a hammer to drive in a screw.
Regarding whether it’s better to ask about the sorting algorithms, I think the time for such questions is in school. Once we are in real life, our customers don’t care about algorithms, they care about whether we can take their data and apply the best approach to it. So I tend to ask somewhat vague, open-ended questions in interviews, because this is the nature of problems we face every day.

cheers,
Targo

]]>
By: Juri http://www.targotennisberg.com/tarkvara/2008/05/14/programmeerijad-ja-rahnid/comment-page-1/#comment-2530 Juri Tue, 26 Aug 2008 08:12:59 +0000 http://www.targotennisberg.com/tarkvara/?p=113#comment-2530 And you write sort method each time when you need sort array? Why did you take existing site template and adapt it for your? Write site by your self :). The main purpose of class or class library it is reusing in future! Maybe you question was wrong and question should be: what is the better sort algorithm? What algorithms do you know? And you write sort method each time when you need sort array?
Why did you take existing site template and adapt it for your? Write site by your self :) . The main purpose of class or class library it is reusing in future!

Maybe you question was wrong and question should be: what is the better sort algorithm? What algorithms do you know?

]]>