On Thu, Jul 23, 2015 at 4:51 PM, Esteban A. Maringolo <emaring...@gmail.com> wrote:
> When I talk to "new programmers" (20-25 years old), almost all of them > don't get attracted by it. > Why? I couldn't tell. Mainly because they can't use the few tools/patterns > they already learnt how to, barely, use. > As someone who (still) falls into this range I see several (unrelated) reasons why they might not like it. For me personally I encountered Pharo in University in "Conceptual modeling" class, where it was introduced pretty much as "Oh, by the way, here is this completely new environment that you've never seen nor worked with that we will use, but we will not tell you much about it"... so my first experience was quite awful. I mean... I couldn't even write the code in my favorite text editor and I had to use this weird browser where system code and my own code were mangled up. Image crashing meant I lost my work. Now I know I can just replay changes but I didn't know it back then (the focus of the class was modeling, not Pharo). Bugs (this was Pharo 2 (and 3 beta)) were commonplace and since I had no experience I couldn't tell whether it was my fault or the system's fault... it was overall very unpleasant. I later (after the course) basically foced myself to look at Pharo again because I didn't understand why would people bother to use it... so clearly there must have been some value I've missed. And I don't regret that decision a bit, but I had to go look for it. So statistically speaking from the year I did the class only two or three students (to my knowledge) kept their interest out of 119 (so 2-3% maybe). Other years were no different. Next year there will be a dedicated class for Pharo so I'm curious if this will change somehow. But there may be other reasons why students may not like it... (looking again from my experience) >From university experience perspective, the previous year (for us, and from what I talked with people it's not that different also for other universities) was a heavy massage in C and C++ where we were implementing very basic concepts (hashtables, and other data structures). A year where your main concern was to pass a automated checking system... so mostly memory management and creating write-only code. Plus warped concepts of OOP (so to use actual student quotes: "C++ is great for explaining OOP", "You can do OOP in pure C", or "OOP is useless, long confusing code, full of getters and setters, .. and slow. Inline assembler is much faster"). So with such concepts it's hard to give them OOP language, because they already made up their mind. Yet another reason I can see might be that when you are young you are more inclined to follow what's cool and modern and popular and shit (or has the word "game" in its name). So if today's world revolves around connectivity, internet, JavaScript and whatnot, then giving them a isolated environment with non-mainstream technology and a dead language they've never heard of (I thought that Smalltalk was an obscure language that died in '80s, before I found that actually it's alive and doing quite well) will not be met well with appreciation. But no reason to stop there... there market for Smalltalk is arguably small, so people will prefer language that is in demand by the market (after all, I pay my bills with JavaScript/PHP/webstuff, and not Pharo; because it's much easier to find a job; with Pharo I would have to basically start my own business to be profitable and then I would be doing business and not programming). And last (but not least), finding support for it is much harder, since the community is smaller. So it's almost all or nothing scenario. Also some of the arguments here can be applied also for functional programming (which I haven't (shame on me) even engaged with, besides messing with Haskell in XMonad (and multi-paradigm languages that have some functional concepts). Finally I don't think that you should expect the same behavior from young people (<26) as from adults. They will have different values, views, and whatnot... I mean that's the point of growing up and acquiring experience. All you can do is offer this alternative option and provide support. Being mainstream or non-mainstream is akin to self-fulfilling prophecy. (Of course exceptions happen, JavaScript was raised to glory because the language happen to be in the right place (browser) at the right time (boom of modern web)). Hmm... and this post ended up being much chaotic and longer than I intended to... but whatever. Peter p.s.: I like the music analogy since I was listening to k-pop while working (webtech), and now I am listening to ambient music when writing about Pharo :p