
Practice coding with fun programming challenges - chipz
http://www.codingame.com/
======
tsumnia
As one of the employers posted on a Reddit forum
([https://www.reddit.com/r/InternetIsBeautiful/comments/53h2sl...](https://www.reddit.com/r/InternetIsBeautiful/comments/53h2sl/learn_to_code_writing_a_game/d7t2e0x)),
CodinGame is not really a "learn coding" style site. If anything it's a
"reinforce what I know" site. You aren't 'learning' the concepts, nor are you
learning 'game programming', you are practicing what you already know via a
game format.

I once had a student that was taking my Java 2 (OOP concepts) course and was
using CodinGame for "fun".

If anything, I believe CodinGame's business model is more on the recruitment
side, as their tournaments often offer interviews with the sponsors.

------
rezashirazian
I've always advised against being introduced to programming through game
development.

As much as game development is appealing and fun, the process is complicated
and requires advanced knowledge of some fairly complicated algorithms even for
fairly trivial games.

Also you can find yourself spending hours shuffling sprites and designing
levels which is time spent not learning programming.

Also engines like Unity provide a false sense of security when infact you have
no idea what's going on behind the scene and when something goes wrong you
don't know where to begin and end up discouraged.

Start slow, build your foundation, learn your bits and bytes, data structures
and sorting algorithms first then venture out.

~~~
xyzzy_plugh
I think learning to code by writing a game is perhaps not the greatest method
to learn to code, and definitely not a great way to learn computer science,
but it does have its advantages.

A visual feedback loop can be useful to those unfamiliar with computer
concepts. Being able to think about complex algorithms with concrete examples
(think graphics, physics, game state machines, dialogue scripting) can help
reign in the abstract concepts.

Additionally, being exposed to multiple forms of art can be useful to find a
creative outlet you may not have considered before e.g. music, art, writing,
design.

That being said, I think making games is really hard. I think a lot of people
want to make games and don't realize how difficult it really is. I think
everyone should try it at least once.

I typically recommend Processing[0] to young hopefuls.

> Also engines like Unity provide a false sense of security when infact you
> have no idea what's going on behind the scene

And that's okay. Maybe that's a lesson that can only be taught the hard way.
Maybe you care deeply about what is going on behind the scenes, maybe you
couldn't care less.

Also, most successful games are not written from scratch. Unity and friends
have had a staggering impact on the indie game industry. I wouldn't be
surprised to learn that plenty of game developers have never used anything
else.

I think the most important thing is that no matter what you do you should
enjoy doing it. If you really want to make a game but you have no idea how to
code, and you find it intimidating, maybe this is for you.

[0] [https://processing.org/](https://processing.org/)

~~~
jdeisenberg
Yes, processing is great. I like that it lets you explore graphically and
creatively without a win/lose mentality. (Competition is highly motivating for
some people, not so much for others.) If you're a Python fan, there's a Python
mode for Processing [0], and if you prefer JavaScript, there's p5.js [1]

[0] [http://py.processing.org/](http://py.processing.org/)

[1] [https://p5js.org/](https://p5js.org/)

------
robotcookies
Personally, I think the best way to learn to code for someone who has talent
for it is project Euler (projecteuler.net). No dependencies, no IDEs, no
graphics and no gimmicks. Very short, clear, discrete problems that can be
solved using any language.

If you really need shooting, explosions and fancy graphics to keep you
motivated then I don't think programming as a career is for you. Most
programming jobs aren't going to give you much of that. And frankly, I think
all the wizz-bang graphics just interferes with your learning and getting good
at visualizing in your own head what the code is doing.

~~~
wernercd
The problem with Euler is it is very heavy on math. Math and programming
aren't the same things. (although certain programming paths do rely heavily on
math)

Its better to do something. ANYTHING. Euler? Hackerrank.com (or other similar
websites? exercism.io? "Crack the Coding Interview" (or any other similar
book)? codereview.stackexchange.com? codegolf.se?

Or any of the other dozens of ideas here
[http://programmers.stackexchange.com/a/764/2536](http://programmers.stackexchange.com/a/764/2536)

The key is DOING. Repetition. Solving problems and overcoming obstacles.
Repeatedly. Till you get better. Then do it again. Repeat yourself.

Did I mention repetition? repeatedly?

How do you learn to piano? Guitar? fix cars? Years and years of practice.
Programming is no different.

~~~
bonoboTP
> The key is DOING.

Yes, especially doing things that are useful to you. This can be something
very small. Many years ago, I needed to list filenames in a folder. (I had no
idea of the command line). I knew some basic Python and I figured out how to
do this.

Or I wrote a flashcard quiz test game to prepare for my history test in school
(Javascript and HTML).

Or I wrote a small program to find rar or zip files on my computer that have
also been extracted and now take up approx. double the space on the disk (the
extracted version and the archive are both there).

Or some animations in Javascript to understand things we learned in physics
class (harmonic oscillation and similar things). Small projects like that.

Or a program with GUI where I plotted some function we learned in math class
about, with sliders to control some parameters of the function and see how the
plot changes instantly.

I liked it so much that I enrolled in university to study computer science and
I really liked the uni courses too, because I already understood how
programming things is helpful in everyday life, it wasn't a dry abstract thing
that you build for its own sake.

~~~
wernercd
"Yes, especially doing things that are useful to you."

I'd also expand that to say things that lead you in the direction you want to
go.

Game development? Healthcare software? Big business? Small business? Big Data
and report writing? Database management?

Once you get past the basics there is a plethora of tools and sites... its
important to try and veer towards something that meets those goals.

Euler and Math is good - math crosses all boundaries. But Fibonacci isn't as
important to UI or Game programming (depending on the game types, of course)

------
tharibo
I play on Codingame on and off for some years now, and the fact is: it _is_ a
game. And this game is played by programming.

Thus, it is really good to try out a new language, because it is fun
immediately.

Doing the contests is also really fun, since you are compelled to improve your
program more and more. And if you're still new to programming, you experience
very soon the problems coming with "poorly written code" (as poorly
maintanable code).

------
PostOnce
I think this is possibly the best implementation of this type of thing I've
ever seen ... and jeez look at the number of languages it supports.

And it doesn't take half a month to load/download. Neat. It seems fun even as
a non-novice, just to learn other languages in a fun way.

------
ivan_ah
This is by far the best-done "trick you into learning how to code" onboarding
experience I've been exposed to. (I've tried many because I want to get some
friends interested in coding)

~~~
LeonardA-L
Hi!

* Note that I'm a CodinGame employee, so my answer might be biased.

Thanks for the feedback :) It's really appreciated. Coding with friends is
always more fun than learning to code alone, and if you want to onboard your
friends onto programming, maybe you can also take a look at our "Clash of
Code" category.

[https://www.codingame.com/multiplayer/clashofcode](https://www.codingame.com/multiplayer/clashofcode)

These are short coding "battles", from 5 to 10mins, where you can challenge
your friends in small coding exercises (filter prime numbers, find how many
ones there are in a binary representation, that sort of things). You can
create private clashes and play together with your friends

------
naveen99
Using unity: [https://noobtuts.com/](https://noobtuts.com/)

------
keyle
"getting noticed" ? As an indie game dev, I really don't make sense of that
one.

~~~
zeta0134
I'm trying to figure out why this site exists, what their business model is,
and what they're hoping to accomplish. There's no pricing data available
anywhere that I can tell, but it's obviously a company. I'll comb over it in
more detail when I'm not at work.

~~~
LeonardA-L
Hi! * Note that I'm a CodinGame employee, so my answer might be biased. The
business model is mostly based on connecting developers who like to code with
companies who are in need of programming workforce. We host online programming
contests on our platform (there's actually one coming up on saturday) and
depending on your performance (so, anonymously), you can land a job at one of
the sponsor companies.

------
tribby
Nice front-end.

If I could tell my past self in 1999 that seventeen years later I would be
writing Perl purely for entertainment, I would have laughed, and laughed, and
laughed.

------
emilioolivares
This is excellent! Thanks for building this. The onboarding is awesome, I was
compelled to sign up after the walkthrough.

------
leke
I forwarded this to my kid. I had a quick go and thought it looked great.

------
douche
This is actually quite fun to work through.

------
macintux
No BEAM languages, sadly.

