
Learn to Code by Building Projects - siimplytech
https://enlight.ml
======
brian-armstrong
This is a neat idea, but I'd recommend starting on an altnerative. Pick an
open source project and modify its behavior. It will serve as a code style
corpus to guide the process, and it's already a polished product, so you don't
have to get into the nitty gritty of the last 20%.

For a more concrete example, I learned php by creating a phpbb instance for my
friends and then making addons/changing how it worked. The ratio of work done
to results accomplished was high.

It's also very valuable to learn how codebases might be laid out and how to
just find the parts you want.

~~~
GuiA
_> It will serve as a code style corpus to guide the process, and it's already
a polished product, so you don't have to get into the nitty gritty of the last
20%._

Yes, this is spot on. I work in an industrial R&D department where engineers
are expected to be fairly independent; on a recent project, an engineer whose
skillset we had misestimated during the interview had a really hard time
starting the codebase from scratch, architecting the software, etc. It had to
be saved close to the last minute by a senior engineer (to be fair, the
manager should have kept a closer eye on the project).

For that engineer's next project, we assigned her to something already
established and architected, and she's been doing great. Her
programming/architecture skills grew tremendously in a few months by being
immersed in that codebase.

(I was the senior engineer who had to be called in for the first project, and
lead on the second project. The engineer in question was great in many other
areas critical for the job, just her software carpentry skills that were
lacking).

~~~
joatmon-snoo
It's also a skill that schools don't do a very good job of.

Right now I'm TA'ing a C++ class and the sheer stupidity of some of the
questions that I get asked is ridiculous (I say stupidity, but it's really a
mix of (1) some actual stupidity, (2) students not thinking for themselves,
(3) students having no idea where to look and/or stuff was explained by hand-
waving it away.)

One thing we've done, for instance, is require that students submit their code
via GitHub and make their code compile under both GCC and Clang on Travis. On
the last assignment, the professor made a mistake when duplicating the Travis
config file, so Travis kept trying to run a binary that wasn't there, because
the new assignment had a different name for the compiled binary.

The sheer number of emails and questions I got was absolutely _ridiculous_ \-
and granted, I didn't blame the students for asking, because the entire
toolchain side of things had sort of been hand-waved away from them, but the
fix was literally replacing "./hw4-submission" with "./hw5-submission" in the
Travis config.

The point I'm getting at, I guess - because this isn't so much a thing about
codebase architecture as knowing the tools you have to use - is that too much
time is spent in the traditional CS education telling students to fill in
code, or giving them frameworks and saying "make your thing work with this",
instead of making them design stuff ground-up.

~~~
voltagex_
I don't have a lot of experience with Travis - was the error message straight
forward?

I wonder what a course teaching debugging from the error message backwards
would look like? I was a semi-decent programmer before I started working but
learning to debug took a lot more on-the-job WTFs to get the hang of.

~~~
joatmon-snoo
Sadly, no. It didn't help that there were a _lot_ of problems in the
Travis/C++ ecosystem that complicated the matter.

I actually have an outstanding PR into the Travis docs to update this which
hasn't been merged yet for reasons unbeknownst to me
[https://github.com/travis-ci/docs-travis-ci-
com/pull/746](https://github.com/travis-ci/docs-travis-ci-com/pull/746)

------
eatonphil
To the author: great work. This is impressive -- for a high school student
[0], no less -- and useful. I'm always trying to think of good projects to
recommend people learning to program or trying to supplement schoolwork. There
are a number of lists (of lists?) on Reddit (like [1]), but they aren't as
well thought out as your three right now. I hope posting this here helps with
the incentive to keep this up.

[0] [https://blog.shamdasani.org/no-i-do-not-know-that-
language/](https://blog.shamdasani.org/no-i-do-not-know-that-language/)

[1]
[https://www.reddit.com/r/learnprogramming/comments/2a9ygh/10...](https://www.reddit.com/r/learnprogramming/comments/2a9ygh/1000_beginner_programming_projects_xpost/)

~~~
samayshamdasani
Creator here! Thank you :) The list you suggested on reddit looks awesome -
I'm gonna use some of those ideas. Working on a basic to-do application right
now.

------
szines
Totally agree and it is the best approach. Here in Wellington, New Zealand, we
have a free workshop for everybody who would like to learn JavaScript, and we
build a project together. The transcript is available online and totally free
for everybody worldwide here: [http://yoember.com](http://yoember.com)

------
bikitan
Perhaps I'm being pedantic, but is a clock app that requires app.js not really
'pure CSS'?

~~~
samayshamdasani
You are right. That's an error on my part. I just wanted to emphasize that the
clock was designed in CSS, and that it's not some image off the internet or
something.

------
duscheln
There is also a site that reminds me of your approach with similar projects.
[https://www.freecodecamp.com/](https://www.freecodecamp.com/)

------
Hasz
How is sight like enlight.ml made?

How is it hosted, how do the pages come together, etc.

That would make a great tutorial, even if it's at a high level.

~~~
samayshamdasani
Hey, it's hosted on GitHub pages. The code can be found here:
[https://github.com/samayshamdasani/enlight](https://github.com/samayshamdasani/enlight)

If you take a look at the html files, along with the CSS - you may get an
idea. I plan to make a tutorial on making a personal website from scratch like
how I did (no frameworks, etc.) and then making a tutorial on technologies
like Jekyll, etc.

~~~
Hasz
Thanks man, I appreciate it!

------
celticninja
after sign up and clicking return to site I get sent to:

[http://ticktockinc.com/cgi-sys/suspendedpage.cgi](http://ticktockinc.com/cgi-
sys/suspendedpage.cgi)

same thing happens when you click the link in the confirmation email.

~~~
samayshamdasani
Hey, I'm the author. The mailchimp list was associated with a website I built
for one of my clients - I'm going to switch it back to
[https://enlight.ml](https://enlight.ml) soon (I'm just at school rn lol)

~~~
celticninja
also some of your fiddles for the hex generator are in the wrong panels i.e
the do not follow the instructions on the page.

