I'd love to see a more natural, bite-sizable, exposure to other programming languages and/or paradigms in this way.
That's what we are trying to do. I don't know if we will succeed or not, but we are going to at least try.
You'll need to find people at your skill level to go against and this presents a barrier for a lot of us at step one.
I initially read it as learning to code fast, as in how quickly someone can actually develop an app and not how quickly someone can learn to program.
However, I would like to compliment your website. I run an extremely restricted browser that blocks most JS, cookies, XSS, etc. by default and most new project announcements I see on HN I close immediately because they haven't demonstrated enough value for me to bother unblocking the ungodly mess of JS on their sites. Your site isn't just well designed, concise and readable, it actually works out of the box (the only thing I blocked were the social buttons), barely uses any resources and looks lovely. I wish more web developers thought this way.
Our intention is actually that there would be different levels of difficulty, but for the purpose of showing only the main idea we skipped all additional features. But it really remains to see if this kind of learning would be appropriate and functional.
If I was a VC I would be frustrated that this does not at least have some type of simulation even if you don't have the multi-user competition working yet. At least coding against a clock or virtual opponents would be a nice touch. To me this is not proof of concept but just a story board if you will, good marketing. I am sorry to be harsh but I hate going somewhere with the promise or implication of one thing and then getting something different.
Either way, thank you for the honest comment :)
1. Easy answers keep users from developing Google-fu. Competitors answers should be sufficient. If they aren't, make a separate doc and have it be easily Googleable from a hint. This keeps them from developing a dependency on that "Answer" button that would show up on the end.
2. The big problem with currently existing tools for this is that they haven't come up with a gameified way to give -structure- to a program. Which is a problem because for a real program structure is the very first thing you do.
Maybe not the best way to represent progress in the demo...
With every order somebody will be able to construct it as offensive to someone, but putting the woman that far behind the rest is indeed asking for trouble. If her position was swapped with that of the second-place white guy people would be much less likely to be offended.
But, let's not be too harsh. For much of the tech industry, 1/4 women is good representation. It is positive that they made some effort towards inclusiveness and diversity (at least in their marketing material).
Disclaimer: I've created CardForest.com (in-progress), which is possibly targeting a similar audience.
- the evaluation of the progress is going to happen by running it against tests written in advance and against tools that evaluate code quality. The algorithm that is going to calculate the exact percent is yet to be created.
- user experience is the most important thing for me, if it is good and not intruding, it will help developers to stick in the application longer and learn more things (I guess)
- my hope is that the content (best practices and exercises) will be constantly updated and written by the best developers in the field or by authors that will be specifically chosen for that purpose
1) The grammar and writing style has some problems with run on sentence fragments. Perhaps this is not the OP's main focus, but learning to code well is similar to learning to write well (in fact there was an article about this posted to HN a few days ago).
2) By focusing on the idea of 'the best' code, the OP implies some kind of fitness function, but is pretty vague about what that might be. The most obvious fitness function in this context would be that the code works and was written faster than anyone else. Why talk about best-practice and industry standards if your fitness function is speed of writing and correctness?
Experienced programmers don't talk about the "best" code in general, but rather the best code for a given purpose. Code clarity, speed of execution, elegance, reuse, size in memory... these are all different fitness objectives that have various trade-offs... even saying "yeah, I want ALL of those!" implies trade-offs.
It's like saying you want a D&D character with all max attributes... it doesn't work that way.
But there's also a problem with this model of learning. The fastest coders are going to likely be the coders who already know what they are doing, or who work out cheesy ways to game the system. Likely, their incentive for playing will be showing off, not genuinely helping others learn.
Meanwhile, coders who are learning will always be slower. Yes, they will see a lot of other possible solutions, but without critically understanding the differences between code examples, it all becomes a sea of noise. Stack Overflow is already like this in places -- many answers don't demonstrate an expert analysis of a problem, they simply devolve into: "I tried this", "I reinstalled", "Yeah, it works!", "I'm still having issues".
Now, if bitlean's 'tail' in the game was a nice social community built around commenting and critiquing code AFTER it was written and judging its fitness for various stated purposes -- then I could see that really building a community of value for learning programming similar to the ways that we learn critical reasoning in writing courses by contributing to critique and discussion.
'Fast' has its purposes. For example, in Shamus Culhane's book "Animation: from Script to Screen", he talks about the advantages of sketching fast without critical interruption to maintain creative flow. He was adamant about not even erasing one wrong pencil line because it brought critical analysis into the process and disrupted the flow. However, after the sketches capture an idea, that work was always followed by extensive analysis and critique to see where ideas and execution could be improved.
Piece of cake. Simple. No issues.
But there are issues, huge, humongous issues: The main issue is just and simply making use of the documentation, and object oriented classes, and other software developed by others. E.g., I've gotten -- found, downloaded, categorized, indexed, and abstracted -- well over 5000 Web pages of relevant documentation. At 10 a day, that's a lot of days.
E.g., learning SQL was easy, piece of cake, obviously built a lot on set theory in pure math (which I know pretty well and have used a lot), and I learned SQL reading Ullman's book over dinner at the Mount Kisco Diner during about two weeks. No problem. How the log file works? Fine. Entity, attribute, relationship design -- sure, easy.
Then the real problems: I tried to install SQL Server. What a mess. Maybe it got installed. Someone sent me a database, and I wanted SQL Server to recognize it. Nope, we're talking high end, world-shaking research here, unsolved problems of the universe, much like dark energy. As I recall, my little effort ruined the SQL Server installation.
So, I make some progress doing some simple things and then go for an update (general rule: never update unless totally necessary). The install asked a lot of questions with no explanations or references to what the heck might be the appropriate answers. Somehow I got two installs, using Microsoft's side by side (I've written lots of programs and they all run side by side as far as I can tell -- what's the issue here?), and the install ruined my system. SQL Server uninstall wouldn't. System repair wouldn't. So, the SQL Server install broke my installation of Windows. I reinstalled Windows and all my software to a freshly formatted hard disk partition. Then I tried again. Eventually I got the SQL Server install to work -- eventually. The mud wrestling went on this way.
Ullman's book, SQL, etc. were easy. Getting a good install was a barbed wire enema with an unanesthetized upper molar root canal procedure while being poked with a dozen red hot branding irons.
Then came time for the code of my Web pages to connect with SQL Server. So, I need a connection string. Yup, we're looking at a challenge at least 1/3rd of a Nobel prize in physics. It took a week, a solid week just to get a connection string that worked. Why it works, I still don't know.
Due to the times installs ruined my boot partition, I wanted to backup the partition so that I could quickly return to a good system after some install had ruined it.
So, I used NTBACKUP. It asked if I wanted to save "system state" but had no explanation of what was meant by that. They are talking about my options for Outlook? For the fonts on my text windows? Well, after reinstalling all my software several more times, I finally got good notes and experience with both saving a boot partition and being able to do a restore that would boot and be good. Hint: Yes, very much do save "system state" or the saved copy, restored, won't boot. Yes, that NTBACKUP does a volume shadow copy, that is, saves a boot partition while that partition runs, is super nice, but writing documentation on "system state" was too difficult for Microsoft.
Net, the coding is fast, fun, and easy. The difficulty is the documentation and workings of other code that needs to be used. And now we have to use a lot of such documentation and code.
Anyone have a way around the problem of such documentation and code?
"Learn to code fast"? That's less than 5% of the work. The other 95% is mud wrestling with bad documentation.