Forgot your password?
typodupeerror
Open Source Software Linux

Why Linux Is Not Attracting Young Developers 742

Posted by Soulskill
from the beards-are-going-out-of-style dept.
judeancodersfront writes "Jonathan Corbet recently pointed out at the Linux Foundation Collaboration Summit that the Linux kernel team was getting older and not attracting young developers. This article suggests the Linux kernel no longer has the same appeal to young open source developers that it did 10 years ago. Could it be that the massive code base and declining sense of community from corporate involvement has driven young open source programmers elsewhere?"
This discussion has been archived. No new comments can be posted.

Why Linux Is Not Attracting Young Developers

Comments Filter:
  • reverence and awe (Score:5, Interesting)

    by LordHatrus (763508) <slashdotNO@SPAMclockfort.com> on Sunday April 18, 2010 @12:37PM (#31888206) Homepage
    I've seen a lot of promising college-aged open source devs that seem to have an overwhelming reverence and awe towards the kernel, thinking it far too complicated for them to work on with their own programming abilities. In reality, most of them could pick up the kernel and figure it out quite quickly, but they'll never convince themselves of that.
  • by itsybitsy (149808) * on Sunday April 18, 2010 @12:38PM (#31888212)

    Could it be that the Linux Kernel isn't state of the art anymore? Linux is boring... it's bloated... it's no wonder that young blood aren't interested in developing it, they want to do something really cool and cutting edge to light their careers on fire!

  • by Zurk (37028) <zurktechNO@SPAMgmail.com> on Sunday April 18, 2010 @12:41PM (#31888248) Journal

    linux should become more modular ... dare say like HURD where individual contributors can own their own slice completely and implement it the way they want as plugin modules rather than monolithic blocks. yes i know about the whole kernel wars but linux grown up. its time for it to be a microkernel and attract developers for long term viability. a monolithic block of code was fine to bootstrap it but not anymore. we have multicore processors with fat pipes ... things microkernels were built for. ipc overhead is negligible if your ipc is your L3 cache.

  • by nhytefall (1415959) on Sunday April 18, 2010 @12:42PM (#31888264) Journal

    Could it be that the massive code base and declining sense of community from corporate involvement has driven young open source programmers elsewhere?

    Nah, they have all just decided to get paid, rather than work for free... (end.sarcasm)

    In all seriousness, a lot of the new generation of programmers are starting out in large corporations, as a means to repay student debt, get themselves established - and are able to do that code work in the open-source world, as corporate acceptance and utilization of OSS for application development grows. This, unfortunately, comes with a flipside - those same developers are not available to do the work the hobbyists were doing a few years back, leading to the perception that the OSS movement is losing developers. The movement actually isn't losing developers - more and more of them are just being absorbed by NDA's :)

    Either that, or they have all decided to start writing flash games for Adult Swim.

  • by adosch (1397357) on Sunday April 18, 2010 @12:43PM (#31888278)

    I agree with that. I've noticed a big divide in developers of the 21st century coming out of college; there's a lot less focus on lower-level development and hardware interaction in schools/colleges than there were in the 80's and 90's. I think there's a more general focus on high level languages at best (e.g. python, web frameworks, al la .Net, java-this-and-that, ect.) that work 'on' an hardware/development architecture, not 'with' it.

    I also wouldn't say there is a lack of support for the Linux kernel, but Linus is still a full-time driver of changes/additions in the kernel and with him, comes his ego and experience. Rightfully so, but we've seen it drive away brilliant maintainers and contributors in the past decade.

  • by Anonymous Coward on Sunday April 18, 2010 @12:44PM (#31888288)

    Linux is now mature and nearly unchanging. A young programer isn't going to be able to leave any mark on it. Mobile is the active space where new things are being designed and developed. In enough time that will mature and they will move somewhere else.

  • Complexity. (Score:3, Interesting)

    by Anonymous Coward on Sunday April 18, 2010 @12:56PM (#31888418)

    I'm an intermediate-level programmer, with more than 4 years of practical experience coding C, even more experience learning theoretical computer science concepts, have been using linux for 9 years, AND my top leisure-time activity is to devote time and energy towards learning more about computers and important software systems.

    The linux kernel is super complex. This is not due to poor design (comparatively to other popular OS's, anyway) but a programmer must still contend with this. The level of uberness one must achieve (still considerably above my capacity) to participate in kernel hacking is intimidating to say the least.

    Documentation, while plentiful, is almost always in ascii form (vastly inefficient to illustrate such things as dependencies and the form and use of data structures) and mostly found in the code. There are decent enough books, but most of those I've read always provide a narrow window into individual concepts, as opposed to bird's eye views, or surveys of overall architecture. Maybe I'm out of the loop with the best books (pretty likely) but the interest has certainly been there, and every time I've bent towards the possibility of playing around with the kernel, the sheer complexity of the task and difficulty in finding information to answer my questions has made me shy away and towards simpler things. It's not 'too' hard, but it certainly is 'definitely' hard, even for enthusiasts with a healthy mind and great curiosity.

    If effort was as widespread in making documentation as it is in making top code, I'm sure many more people would dabble, and talk about it.

  • by Angst Badger (8636) on Sunday April 18, 2010 @01:09PM (#31888560)

    Could it be that the Linux Kernel isn't state of the art anymore? Linux is boring... it's bloated... it's no wonder that young blood aren't interested in developing it, they want to do something really cool and cutting edge to light their careers on fire!

    I can't speak for the "young blood", being about to turn 40 in a few months and well past the age when I thought "lighting my career on fire" was a worthwhile goal, but I'd certainly agree that the kernel is boring. Part of it is definitely the emphasis on business applications; my interest in free software was always driven by what I wanted to do with it on my own time for my own edification, not to pursue wealth for myself or my employer. An even greater part of it, though, is that operating systems just aren't that damn interesting by themselves as long as they do what they're supposed to do, which is to provide a platform for actual applications. No one owns a computer to run an operating system any more than anyone owns a car to use tires. The OS is incidental to what users (and most programmers) want to use a computer for.

    To be perfectly frank -- and to expand the scope beyond the operating system -- the thing that I have found increasingly unattractive about FOSS in general is that it all too often becomes an exercise in cliquishness and faddishness to the exclusion of actually serving users, to say nothing of just plain rudeness. The lkml is notorious for its rudeness (though it's a garden of civility compared to its OpenBSD counterpart). Any number of application projects are focused more on being proving grounds for a particular design methodology and/or programming language of the week than on delivering a good application to end users -- witness the gazillion projects whose name prominently features its implementation language, a detail that only the developers or would-be developers could possibly care about.

    The end result is that FOSS projects all too often go out of their way to diminish their value and degree of interest to anyone outside their current circle of developers. Add to this the other common flaws of FOSS -- lack of decent (or any) documentation and poor or eccentric user interfaces -- and it's no wonder that, despite considerable strides over the last twenty years, most FOSS projects, Linux included, remain niche products at best.

    Scratching an itch is fine, but when that itch is so narrowly defined as to be your itch and no one else's, no one else can be blamed for not giving a hoot. Follow that with an insistence that it would scratch someone else's itch if only they were hip and smart enough to itch like you, and you have a perfect methodology for achieving irrelevance.

  • Re:bad attitudes (Score:2, Interesting)

    by AdmiralXyz (1378985) on Sunday April 18, 2010 @01:14PM (#31888612)
    Current college student ("young developer") speaking: I second this absolutely. I've contributed to a few open-source projects and once thought about getting involved with the kernel, but took one look at lkml and said "Fuck that". Maybe I just need to approach it again with an open mind, but it seemed to me like an endless battle of egos to get $PET_SEGMENT_OF_CODE approved. The fact that the kernel has a very poorly designed set of interfaces and is a nightmare to program for (at least, this is what I've heard- feel free to enlighten me if I'm wrong) doesn't help.
  • Re:Talent (Score:2, Interesting)

    by JKDguy82 (692274) on Sunday April 18, 2010 @01:25PM (#31888708)

    It's true. I hate programming in C, much less moving down to assembly. On top of that, kernel programming is just not that interesting to me.

    Sure, poo-poo PHP and JS. They have their place, and some really interesting stuff is being built with them (especially with PHP >= 5.3, or server-side JS). Quite frankly, I'll program in any language that gives me the tools to *easily* create what I've constructed in my head.

    And if something I build happens to run slowly to the point where I have to drop down and code something in C, I'll pay one of you "cranky old men" to do it for me. But most of the time it's just an architectural problem that wouldn't have been created any differently with a different, lower level, language (for example, caching). After all, it's not like I'm crunching the latest numbers that come out of CERN.

    Not that I don't value kernel development, trust me, I do.

  • Re:reverence and awe (Score:1, Interesting)

    by Anonymous Coward on Sunday April 18, 2010 @01:29PM (#31888744)

    I've seen some dev threads which make me think it's not very fun dealing with the existing priesthood of maintainers, so I could sympathize with any young developer who would just say "f*ck it, I'll work on something where I can determine commit access myself rather than spending weeks trying to convince somebody who thinks they're god on earth that they should accept my humble patch to 'their' project."

    While not technically the kernel, I think this [aurel32.net] might illustrate some of the issues (I like Linux a lot and use it, but Linus himself has been like this at times as well.)

  • by SexyKellyOsbourne (606860) on Sunday April 18, 2010 @01:30PM (#31888750) Journal

    One only has to remember what things were like with Linux 10 years ago, in the year 2000, to know why the interest just isn't as strong today.

    At the time, it had a massive advantage over the Windows 98 platform, which was the common desktop at the time -- it crashed constantly and required formatting every few months, and was vulnerable to total crap like TCP/IP flooding, running unlimitedly powerful .vbs scripts, typing "con con" into a console, and giving IE basically Admin access to your system through ActiveX. Doing anything from zipping a file to hex editing to writing code to making simple video and sound files required outright piracy and the use of horrible freeware -- friendly, open source, cross-platform apps and web apps weren't common. Winamp was a shining example of a great, free program back then, and it wasn't open source and came bundled with AOL crapware.

    Linux, on the other hand was rock solid. It didn't crash, it had anything you needed readily available and installable. Need a web server, an IDE, a hex editor, an image editor more advanced than mspaint, PERL, an audio player, an IRC client or anything else? It was there, no running keygens or installing adware. Same with using existing things like ICQ, IRC, the web, usenet, etc. And they were actually competitive in terms of friendliness compared to what was on the Windows platform. You could also script them no problem from a totally OP command line.

    But it was a terrible pain to install for a young amateur compared to just popping a LiveCD today. Have fun partitioning your HD with raw fdisk (cfdisk if lucky) and setting up XFree86 by hand to see any graphics. Try setting up non-PNP ISA devices with screwy drivers -- often you had to go hardware swapping for something specific, like a $10 Crystal Sound card. Try rebuilding the Kernel with an ALSA patch to get that to run. Try not using a packaging system for anything -- RPM was terrible at the time, you were better off just compiling things.

    But socially, if you could pull it off, you were pretty elite. You had a solid, invulnerable, insanely powerful OS with every tool you'd want at your hands. It was rebellious against the suits and it had the promise of an open source world. The programming was much better -- OpenGL was way, way easier to write for than DirectX 6, which was just nasty, and was cross-platform to boot. The internet population was far more technical at the time and also respected it. Social networking / multimedia was years away from being mainstream at the time. Anyone who ran Linux wasn't a 'n00b' or a 'lamer' on primitive web forums, Usenet, IRC, etc.

    Today? Windows XP/Vista/7 has been comparatively stable and isn't nearly as vulnerable, unless you're just stupid. There's mountains of OSS software out there for every task that runs under Windows, if it wasn't built to run under Windows. No one cares that you run Linux, and will just get frustrated if you can't run the 10% of things a PC can. Ten years ago, the biggest PC game -- Quake 3 -- ran great under Linux, but try getting MWF2 to run under it today.

    So there's no real motivation to get into it now -- it doesn't have the appeal comparatively it did 10 years ago.

  • by jandersen (462034) on Sunday April 18, 2010 @01:31PM (#31888760)

    I don't think it is Linux as such - it is just that programming no longer new and exciting. When I was young, computers were "electronic brains" far beyond the reach of common people; making electronics was exciting back then. I learned programming in high school - and it was incredibly exciting to sit up a whole night transferring a BASIC program to cards with a pencil. Programming Windows 1.x and 2.x was exciting because it was, again, something new and inspiring. Then finally Linux introduced a lot of what computing was all about - preemptive multitasking, full access to all aspects of the system etc etc, which you've never had in Windows.

    But now, I think we have come to the end of the new and exciting things, at least in programming. It is a bit sad, but it had to come to an end, eventually. I've enjoyed it, but it is no longer the hottest of the hot.

  • Re:bad attitudes (Score:4, Interesting)

    by AdmiralXyz (1378985) on Sunday April 18, 2010 @01:41PM (#31888828)
    I know I shouldn't be feeding the troll (who is showing exactly the kind of attitude I try to avoid), but in case anyone is genuinely confused by what I said before, I want to clarify: I've taken a look at only small portions of the kernel code, and have not (yet) make a concentrated effort to know more about it. The interface complaints are just what I keep hearing from programmers on various tech sites, including Slashdot, every time a story comes up regarding filesystems or somesuch. If kernel development doesn't, in fact, suck, then maybe there needs to be a better PR campaign to get the word out, because I've heard nothing but bad things.
  • Re:Talent (Score:5, Interesting)

    by b4k3d b34nz (900066) on Sunday April 18, 2010 @01:45PM (#31888860)

    Back when that kernel was first written, it was done by a bunch of young coders that learned kernel development by developing the kernel. They didn't have some huge insight right off the bat, they learned from experience, like the rest of us. As the kernel became mature, coding maturity and experience became more of a requirement (in theory) as well.

    There are plenty of young coders with a lot of passion, intelligence, and problem solving abilities that haven't been spoiled by the admittedly poor quality formal education system. Are they developing a Linux kernel? No, but they're in the garage tinkering with their language of choice, becoming smarter.

    As the field of software development has opened up, there are a lot more dummies that joined the ranks that need their hands held, but that certainly doesn't preclude very smart developers from joining in.

    P.S. I've met a lot of really stupid old coders twice my age that can't answer basic problem solving and programming questions during interviews.

  • Re:Linux is new? (Score:5, Interesting)

    by corychristison (951993) on Sunday April 18, 2010 @01:54PM (#31888946)

    Anyone notice Linux share the same syntax of UNIX?

    Yup.

    Do you know how old UNIX is?

    Yup. Developed in 1969; making it 41 years old. Linux was developed in 1991.. Linux today is a far cry from Linux back then.

    To start Linux even old people like me need to know some history of XENIX, UNIX, SCO, NFS ... some of those things remain unformatted text base, console type (not VT100). GUI is good, but the back is still those things, that why Mac OSX hide them all. Linux need to clean up those history and simplified those things.

    I don't know if you are referring to using a Linux distro or programming on the Linux kernel.

    I use Gentoo Linux every day. I use the tools provided in portage daily to do the computer-y things I like to do. I use XFCE for my desktop environment, Firefox (mostly) for web browsing, various text editors, etc. etc... but my favorite tool is the command line. I can do so many more things in a lot less time at the command line than with a GUI - even web browsing (love [xfce.org]links [sourceforge.net]).

    I was born in 1988; 21 years of age. I've been using Linux since 2001 or so.

    My fiancee also uses Gentoo Linux, as I got fed up with supporting WinXP and all the junk that accumulated on it. She's been using it fine for the past few years, running a very similar setup to mine. We are the same age.

    I don't do any kernel programming, however I do various application- and web-level programming. Never anything past user-space... and that is simply because that is where my interests lay... I've always been more into building programs that do stuff for me, rather than kernel programming / hardware interfacing (at the kernel level).

  • by Magic5Ball (188725) on Sunday April 18, 2010 @02:24PM (#31889170)

    The unfortunate reality is that a graduate who only knows Java or previous flavours of the week (I've seen resumes where the candidate was apparently able to do an entire CS program in Pascal...) but not how to program will get shoved into a helpdesk position. But neither the graduate nor the company wants that since individuals smart enough to grok enough of the mechanics of one language to get a degree usually want more stimulation shortly after they've received 3-6 months of (expensive to the company) training. My preference has always been to throw demonstrated adaptable individuals (not necessarily CS or any kind of graduate) into situations where their main challenge is to learn and grow the business as opposed to having to struggle to think outside their previous tools. But YMMV since headhunters and HR seek specific, often meaningless to actual business, words on paper for CYA purposes.

    Separately, I have a dream where CS departments stop teaching industry tools from a decade ago, and where industry doesn't have to teach information theory, BA, maths, and computability.

  • by Digana (1018720) on Sunday April 18, 2010 @02:27PM (#31889190)

    If it's anecdotes you want, I can provide a counteranecdote.

    My mom runs Debian. She learned how to use a mouse about a year and a half ago. She was getting pretty fed up with Windows, antivirus popup this, ad over here, Sony Vaio crapware all over the place.

    With Debian, her experience has been much more pleasant, in her own words "a lot less bullshit", and she doesn't miss the ads I adblocked for her in Iceweasel.

    Sure, she didn't install or configure Debian... I did that for her, but someone else took the chore of installing and configuring OS X for the hardware it's running on. If you were to install a half-assed version of OS X on some unfamiliar hardware, your user would have the same experience. I chose what the default apps would be, I chose default formats that would be the least hassle for her, I was her one-time sysadmin, and have forgotten about it since. She now uses her Debian laptop mostly for Facebook, email, and opening MSFT Office attachments her friends send her. All works without a hitch. If you or someone else had taken the time to config Ubuntu for your friend, I think your anecdote would be different.

    You could argue that it should just work "out of the box" for all possible hardware, but given the scope of Linux and free software in general, this is an impossible task. There are too many boxes out there.

  • Re:bad attitudes (Score:5, Interesting)

    by turgid (580780) on Sunday April 18, 2010 @02:33PM (#31889252) Journal

    To be fair, in the real world (i.e. working for a living), if you come across an obscure function written in a "clever" way it is sometime a far better use of everyone's time to ask the person that wrote it what it does.

    Otherwise you risk missing some subtlety about why it needed to be that way (and not another) and spending lots of time and effort writing a solution to the problem in hand that may work superficially but not in detail.

    The Linux kernel isn't fun any more. It's corporate now. It's mature. It has nowhere left to go. We need something new.

  • My best guess [and I am not trying to be facetious] is that unless you were in on kernel development in the very early days [so that you had some hope of learning it when it was still tractable], then the thing has gotten so big now [what is it - like 20,000 files which get compiled in the basic kernel?], and the learning curve has gotten so steep, that no new developers have any realistic hope of grokking it anymore.

    Not to mention the lousy documentation. The kernel docs for Linux are stunningly poor, verging on non-existent --- most of the design appears to live only in people's heads.

    I have a project that involves lots of grubby work with the Linux system call interface (<plug> LBW [sf.net], a tool for running Linux binaries on Windows <plug/>). The man pages are of very little use here. Not only do they not go into enough detail, but they're frequently horribly out of date. futex(2) now bears very little resemblance to what the futex man page actually does. I eventually had to resort to groping through the Linux kernel code simply to try and figure out how what structures were used where --- and to determine the layout of struct stat I actually had to start comparing hex dumps to find the binary layout (tip: gcc's alignment attribute does not work the way you think it does).

    What's worse is that there appears to be very little recognition that this is a problem. Asking on the newsgroups about futex(), for example, I just got pointed at a years-old PDF entitled 'Futexes are tricky'. I don't believe that any proper spec for what futex() does actually exists. Without prescriptive and definitive documentation, how do you know if it's working correctly?

    Compare to BSD culture: OpenBSD's man pages are a joy to behold --- everything is documented in copious detail, including internal kernel functions!

  • by Gorobei (127755) on Sunday April 18, 2010 @02:55PM (#31889430)

    Weird, I've got 10+ headcount open for hard-core CS guys. I'm lucky to see one candidate/month who is even in the ballpark. 95% fail when asked the basics, e.g:

    1. What is a hash table, why would I use one, what's the expected cost to insert/find/delete, how might you implement it?
    2. Write a bug-free binary sort in the language of your choice.
    3. Here's real-world problem XXX, sketch out a solution and describe the algorithms+data structures involved.

    Had to tell HR to stop filtering resumes: they are set up to look for specific skills, not talent. Also had to explain to them they are not in the compensation package deciding business: we do that, HR gets the process working smoothly. It's no wonder that if HR talks to college placement folks, pretty soon the college profs start feeling the pressure to teach the wrong stuff.

  • by unity100 (970058) on Sunday April 18, 2010 @02:59PM (#31889448) Homepage Journal

    I see it everywhere, in every aspect of life. Back when i was a teenager (18-20 ish years ago) there was still the illusion that you could 'make it' if you pushed it hard enough. you know, good education, good career, a decent, higher middle life etc. and it was true by then here too (turkey). there were many career paths open, there was a demand for many high profile jobs in many sectors. it was good back then.

    but naturally, after 20 years, the market saturated. there isnt a noticeable demand for any high profile engineering, computing etc jobs. not enough to meet the supply that is being pumped out. youth was noticing that as time went by in that two decades. salaries got lower, evened out, promotions and management positions lessened. they also discovered that everyone couldnt be managers, or entrepreneurs and so on.

    so, they have increasingly let go. they are trying to find ways to 'make it' or live a life that will not necessitate them to exert themselves too much while getting little back.

    from what i see, this is no different in other countries in the west too. similar situations, as dog eat dog corporatism pushes forth and sectors are consolidated, more work is being done by less people. and ironically, people who are employed are made work more and more - back 20 years ago it was natural for workday to end at 17.30 or 18.00, now everyone is being worked until at least 19.00 even in top profile jobs. working on saturday became a norm, with the exception of europe - weekends still a reality in usa though.

    so youth see these prospects, and get disillusioned. noone wants to slaver away their life with pitiful number of management jobs, promotion opportunities with little time to spare for themselves.

    this is a direct result of the system we are in and its irreversible for any sector, unless system and our approach changes.

    one exception though, is scandinavian countries. in these countries where there is strong reassurances of future due to a solid social security system working for over 40 years, youth are going for whatever they want to chase. and they are productive too. leaving aside the ones that go to africa or similar places to volunteer for feeding the people etc for u.n., there is a good deal of contribution to both linux kernel and other open source projects from these countries. there are a lot of web apps that are coded and released open source too.

    the contrast clearly proves history right again ; back near the end of roman republic, big farm holders consolidated farm sector by flooding market with produce by employing slave labor, lowering prices, and causing the small farm holders to go into debt. in the end these small farmers had to sell their farms to big farm holders and move to cities. since they didnt have anything to root for in life, any aims, middle class of the society wasnt so keen on the country anymore, they just let it go for free bread and circus games. in the end rome declined and declined in culture, leading to many weaknesses that led to its downfall.

    today is no different. big companies consolidate sectors and make people work for endless hours for slavering wages. in the end, youth either let go, or just refuse to enter the system and become drones in the first place.

  • by Cyberax (705495) on Sunday April 18, 2010 @03:01PM (#31889460)

    Yeah, sure.

    Recently, I was able to rewrite a piece of SHIT in several days which an 'old school' developer wrote in VIM for half of year. It was absolutely unstructured (all files in a same package), full of commented-out 'print' statements used for debugging and generally ugly (who needs a debugger?).

    Modern development tools _really_ give a productivity boost. If you know how to use them.

  • by straponego (521991) on Sunday April 18, 2010 @03:26PM (#31889694)
    I wish I had mod points right now; this is the most interesting post I've seen in a long time. It gives credit to social networks and current 20-somethings in a way I hadn't quite considered... thanks. Now that I think about it, this "conscious slacker" slacker attitude is a very green one as well. It fits with current realities (concentration of wealth, resource exhaustion) while turning many of its downsides to advantages.

    Kudos, kids.
  • by tftp (111690) on Sunday April 18, 2010 @03:58PM (#31889934) Homepage

    Nowadays ? *ALL* system are either closed , or too complicated to really go on

    It's nowhere that bad, you just have a case of selective memory. Recall "Hello, World!" in Windows 3.1? It's 100+ LOC, with derived window classes done by hand, in C. Remember RS-232? You had to do it *all* by hand, probably in assembly language. Sure, a simple console application was easy - but it's still easy today; it's just nobody wants them.

    And recall how marvelously easy was it back then to put together a multithreaded UI with shaped windows and dockable/floating toolbars. Windows 3.x had only one thread for everything, and had no RAD tools; VB was the first one, IIRC - you had to code pixels and create your widgets programmatically. Today - in WPF or in Android - you do that in XML.

    What happened is that the inner workings of the computer are farther away, better hidden. Libraries got developed that changed software from an individual, unique, handcrafted project to a generic, common, and heavily automated process. For example, if you need an application that receives a challenge over the network, shows it to you, gets your response and sends it back, it could be put together (not even written!) in minutes. So things changed indeed, but not all that change is for worse.

  • Re:bad attitudes (Score:5, Interesting)

    by martyros (588782) on Sunday April 18, 2010 @04:48PM (#31890298)

    Frankly and depressingly I find closed source developers to be much more helpful and even willing to accept suggestions and help than elitist open source jerks.

    Every time you ask a question, you are asking someone to donate time to you. A lot of people are either volunteers, or they're working for a company with their own priorities and schedule. So turn it around. Why do you expect people to just give you time for free?

    If you'd ever seen e-mail after e-mail of someone wanting to contribute something / get into coding on a project, and spent hours of your life (via e-mail) trying to help them hobble along, only to find out that they are completely incapable of doing simple debugging, or sometimes even of interpreting a very plain gcc warning ("It says, variable X may not be initialized." [I glance at the 20-line function.] "What happens if Y is false? What will variable X be set to?" "Oh, good catch!") you'd understand why people are short on mailing lists.

    I genuinely want to help people become developers for my project. But I don't have the time or emotional energy to teach basic OS primitives (like, what a spinlock is and how to use it), much less teach people basic debugging skills. Often you'll spend a lot of effort trying to describe something (say, 20-30 minutes writing an e-mail) and the person asking for help will only write 2 lines back asking for more, without any evidence of having spent at least 20-30 minutes trying to get it working themselves. So where I am now is this: spend no more than 5 minutes, and give them just enough hints to get them to the next question. If they manage to sort out how to do X on their own, and to ask the next question, I'll give them another 5 minutes. If they've shown evidence that they're really stuck and have tried a bunch of different things, I'll spend more time, but not more time than I think they've spent.

    But the fact is, the vast majority of time, the interaction eventually shows that the person is not (at this point, perhaps ever) capable of contributing to the project. And rarely does the person asking acknowledge the time they're asking me to commit to helping them. I'm a natural optimist, and I naturally love to teach people. So at the moment, hope (plus a handful of positive interactions) keeps me trying, even in the face of overwhelming defeat. I can easily understand why people of a different character come to despise those kinds of questions.

    My experience is, if you make it clear that you respect someone's time, and have spent a reasonable amount of effort trying to figure it out yourself before asking for help, people are more than willing to give you a hand.

  • Re:reverence and awe (Score:4, Interesting)

    by IamTheRealMike (537420) <mike@plan99.net> on Sunday April 18, 2010 @05:11PM (#31890456) Homepage

    Trust me. It's not that.

    I celebrated my 26th birthday yesterday. Some years ago I was involved with Linux and open source, so I guess that made me a "young developer". I mostly worked on Wine, because it was a technically demanding project but which had a pretty mature and ego-free set of developers who were willing to tutor me (even though I didn't have a good grasp of C when I started).

    I wrote a kernel patch once too. It was a waste of time. The code wasn't too hard to figure out, but the general nature of kernel development with its constant reboots was annoying. And the patch I sent predictably got some snarky comments and then vanished. With Wine, it was clear who made the final call - Alexandre. He wasn't always informative, but when push came to shove you could jump on IRC and talk to him about it. How the hell does one even contact Linus? The kernel project has this complicated structure in which some stuff is "owned" by some guys, but it's never really clear whom, and everyone weighs in with an opinion even if they don't own that area. Very frustrating.

    Anyway. I long since lost interest in Linux after it became clear that it missed its opportunity to have an impact on the desktop. OS X blew it away, and now computing seems to be moving onto whole other paradigms based on mobile or web operating systems. What motivation is there to do kernel hacking anymore?

  • by IntlHarvester (11985) on Sunday April 18, 2010 @06:27PM (#31890958) Journal

    And the biggest problem is that very few people grow up with a C64 or an Amiga nowadays.

    As someone who grew up with Ataris and Apples, I actually think that is a good thing to some degree. For every 1 coding genius that came out of the 8-bit home computer scenes, you also had 10 other self-taught Visual Basic hackers making a mess of everything.

    Generally speaking, kids coming out of school nowdays are much more professional and exacting in their approach than young programmers were in my day, probably because they didn't learn programming until they were taught "the right way to do it".

  • by Gorobei (127755) on Sunday April 18, 2010 @06:51PM (#31891100)

    1. I have jobs available that require such knowledge. Open source contributions, good grasp of functional programming, graph algorithms, etc are a plus. Being interested in big systems also a plus.
    2. Because you didn't send me your CV yet. mmn@bellatlantic.net

  • by Lordnerdzrool (884216) on Sunday April 18, 2010 @07:16PM (#31891260)

    But there are many applications where using an O(n) sorting algorithm actually is useful, and fast. It is what "CS guys" are talking about. It's not just a useless technicality.

    For instance, sorting large numbers of telephone numbers, sorting zip-codes or other integer data can be done in linear time using a non-comparison based sorting algorithm like Radix Sort. This isn't just a technicality that creates the faster than O(nlogn) time complexity, it covers a large range of common problems that people often use the wrong algorithms to preform because people don't know they can do better than O(nlogn) in specialized situations.

    Likewise, if you know the data is to have a certain pattern that isn't necessarily random, you sometimes may use even O(n^2) algorithms that work much faster in practice than quicksort or other O(nlogn) ones. In general, your solutions should be built around your expected data. The linear time sorting algorithms I know off my head often require looking a bit more into the data and realizing they apply.

  • by MBGMorden (803437) on Sunday April 18, 2010 @08:41PM (#31891804)

    I don't see this happening really. Students do assignments because they're told to. They somewhat EXPECT that the code they're writing is just to learn material. Even C++'s STL provides a pretty decent amount of data structures built in. We just implemented them for academic purposes (with our instructor flat out telling us "When you get out of this class - just use the built in structures afterwards. They're very finely tuned and it's HIGHLY unlikely that your homemade versions will outperform the provided ones."). And it worked. I wrote my crappy hash table, linked list, binary tree, b-tree, and other classes in C++ for my assignment that will never get used, but it taught me how the things work, so that now even though I can just use Microsoft's built in version provided with .NET and it's great, I still can recognize when and how I need to use the structure itself.

    FWIW, I started in Fall 1999. We did Java for our introductory classes (101, 102, 201, 202), with a required intro to C in the second year. Most of the stuff in year 3 and 4 transitioned to C++ instead, though towards the end some of our classes literally became language agnostic. As long as we could write a Makefile to build it on the departmental Solaris machines and compiled to the executable name that he asked for, he didn't care. Final project in that class was to write a LISP interpreter, which I found particularly enlightening. Nothing to teach you the ins and outs of a language like having to parse and execute the code yourself.

    I know they're still doing the C/C++ towards the end, but I'm not sure if they're still teaching Java for the intro stuff.

I am not now, nor have I ever been, a member of the demigodic party. -- Dennis Ritchie

Working...