

Bitlean: Learn to code fast by competing against other developers - CeRRuTiTo
http://www.bitlean.com/

======
markbnj
I'd like to see a competition called "Learn to Code Slow" that encourages
people to think and design good solutions and then implement them robustly.

~~~
gravity13
And perhaps the winner is decided after the fact by a vote, based on metrics
of efficiency, elegance, etc...

I'd love to see a more natural, bite-sizable, exposure to other programming
languages and/or paradigms in this way.

~~~
FeymanFan78
I like this idea. That doesn't devalue the idea of being able to efficiently
solve relatively simple programming challenges

------
JustSomeNobody
Just had an Eats, shoots & leaves moment with that title. I was thinking, why
does anyone need to learn to code fast?

~~~
CeRRuTiTo
Well, learning a programming language is slow process, our idea is to make it
faster and help the skills to stick better. I can't remember all the cases in
which I learned something and had to relearn it again after that - only if my
process of learning was better, it might have sticked from the first time. :)

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.

~~~
gravity13
That makes sense from a pedagogical perspective. It's a lot like exercise
though, if you're Arnold Schwarzenegger, you are not going to make sweet gains
from writing a for loop.

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.

~~~
CeRRuTiTo
My intention is the application to provide developers with the possibility to
go on a higher level. For example:

\- Level 1: Beginners (really basic concepts, just explanation of the syntax)
\- Level 2: Intermediate (more complex tasks, that would require developers to
combine several basic concepts) \- Level 3: Master (where developers will have
to be really skillful and the tasts would be much more complicated)

My idea is when someone is just starting to make him fail fast so gets over
the fear of failure and just starts writing code and learning from others.

------
keldaris
The idea itself seems nice, but it remains to be seen how useful it will be
beyond learning basic language concepts and syntax.

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.

~~~
wongarsu
Having all fancy Javascript enabled I found the navigation of the page
cumbersome. The only way I found to progress to the next slide (of what is
essentially a fancy slideshow) was to click on the three lines to open the
menu and then click on the next menu item. That's not fun at all.

~~~
CeRRuTiTo
Hey, I am sorry for you bad experience, but I guess you have seen the site
through mobile. Unfortunately, our intention is for it to be seen on desktop
(the system, when ready will be used on desktop as well).

~~~
wongarsu
No, I have seen the site on a 1080p monitor, on my desktop (Firefox on Linux).
That's how it looks for me:
[http://imgur.com/aL1KxqZ](http://imgur.com/aL1KxqZ)

Edit: to be sure I just tested it with Chromium. It looks the same, but most
animations aren't even fluent (about 5fps), making the whole thing worse. And
this is by no means a slow computer.

------
FeymanFan78
It seems like a cool concept. However I would like to see it have some type of
functionality. Am I missing something. This appears to be a demo to me. As
such I feel a little bit duped that it doesn't make it abundantly clear that
it is just a demo.

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.

~~~
CeRRuTiTo
I am sorry you were disappointed in what you saw in comparison to what you
expected. But I think it's very important to get feedback in such an early
stage of development, even for a storyboard explaining the idea. This post
proved really useful for us.

Either way, thank you for the honest comment :)

~~~
FeymanFan78
Cool. Thank you for your reply. On the layout etc. I think it is great work. I
was just ready to test my skills or lack thereof, lol. You know if the
synchronous competition proves to be tough you could log metrics for certain
exercises and use statistics like standard deviation etc. so people can now
how they stack up to everyone else. This may also shed some light on the
relative difficulty of certain exercises for the population as a whole.

~~~
FeymanFan78
Ex. large standard deviation wide bell curve would mean there is a major
disparity among the understanding of a concept for developers that use the
site. A small standard deviation and tight bell curve would represent a more
consistent understanding level among the sample population. I am assuming time
being the main metric. You could also use the code quality as a metric also.

------
josephschmoe
So, there's two major things I would suggest changing:

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.

------
zalmoxes
Two white guys at the top. Black guy in third place. Woman is last.

Maybe not the best way to represent progress in the demo...

~~~
teamhappy
They could put Steve Buscemi at the top to stop people from interpreting
contrived examples.

~~~
mreiland
lmao

------
amitport
Can you tell us more about you and about the user experience? how are you
planning to evaluate a participants current progress? who is going to write
the content? (best practices and exercises)

Disclaimer: I've created CardForest.com (in-progress), which is possibly
targeting a similar audience.

~~~
CeRRuTiTo
Hi, I am glad you are creating such application, it seems really interesting.
Here is more info about the app, we are about to build:

\- 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

------
ky3
I'd like to see a competition that figures out who makes others look best.
Coding is collaborative, no-one's a Pulitzer-prize author working out of a
cave. The best coders make whoever has to maintain the code after them look
stunningly heroic.

------
wongarsu
I like the idea, it looks promising. I think seeing all the different possible
solutions also helps a lot to open eyes about the possible approaches to a
problem.

------
mlmonkey
Isn't this what TopCoder is all about?

~~~
jjoonathan
Yes, but bitlearn claims to focus on "real-world code problems," so I would
assume they trade away some of the focus on algorithms.

------
cyanfrog
Animations on the site work very slow on my office PC. Maybe velocity.js will
help :)

~~~
CeRRuTiTo
Hey, the choice was between transit.js and velocity.js. I don't think we made
the wrong choice to go with transit.js, but next time we will definitely try
velocity.js :D

------
coldnebo
Two things:

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.

------
graycat
This whole thread totally loses me: I don't _get it_. Here's why: To me, the
_coding_ is and for decades has always been fast, fun, and easy. Similarly for
the _design_ or _architecture_ for projects up to, say, 50,000 lines of code
and several servers sharing in the work and _sharding_ , etc.

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.

