
Show HN: C0D3 – A free, interactive site to learn coding - songzme
https://www.c0d3.com
======
songzme
Last year, I mentored a few students who are learning coding to become a
software engineer from non-traditional backgrounds. Rather than encouraging
them to leetcode and practice for interviews, I taught them software
engineering practices and mentored them to build c0d3.com together as a team.
c0d3.com will be a free learning site where other students like them can learn
coding and then help improve the site. As a senior engineer, I made sure to
not write any code myself and focused on helping them with code reviews,
architecture questions, and holding sprint meetings every Monday at 9:30pm. We
document our daily sprint updates here:
[https://github.com/garageScript/c0d3-app/wiki/Sprint-H1-2020](https://github.com/garageScript/c0d3-app/wiki/Sprint-H1-2020)

To get beta users for our app, we started a free coding group at our local
libraries and got a few dozen active users: [https://www.meetup.com/San-
Jose-C0D3/](https://www.meetup.com/San-Jose-C0D3/)

I am pretty happy with the outcome and the code quality. The students wrote
unit tests with every pull request, listened to feedback, and achieved 100%
code coverage in the codebase. Now, after some user feedback and iterations we
are ready to give a preview of what we worked on. Any feature suggestions /
feedback will become learning opportunities for the next generation of
students.

Last month, a rec opened up on my team and I was able to hire one of these
students. If I could hire all of them, I would. If anyone here is hiring,
please consider hiring these awesome students who worked hard to make c0d3.com
possible (I've listed their code contributions and linkedIn profiles):
[https://github.com/garageScript/c0d3-app/wiki](https://github.com/garageScript/c0d3-app/wiki)

~~~
nefitty
You said, “ Rather than encouraging them to leetcode and practice for
interviews, I taught them software engineering practices...”.

How do you square that with the reality that many software jobs have leetcode
as a gate to an offer? I find myself stuck at this juncture. I am comfortable
with software practices, but the reality of these sorts of interviews has me
basically trying to figure out how to “hack” the coding interview portions.
It’s somewhat beneficial, in terms of pushing me to improve my solving skills
and data structure/algorithmic understanding, but I obviously can’t help
feeling that a lot of the time I’m spending is tail-chasing, as a lot of the
problems I encounter seem to be very far removed from the reality of day-to-
day web development.

~~~
rpedela
The reality is that you need to practice that stuff in order to get through
the first interview or two at many companies. It is most likely helping with
web development even if it isn't obvious how. Kinda like how lifting weights
and jogging helps someone be better at their favorite sport. Think of it as
cross-training.

~~~
nefitty
I think this is the best frame of mind to keep me pushing forward. Maybe once
I’m at the top of the food chain I’ll be able to have some impact on these
practices lol Thanks for the advice!

~~~
songzme
make sure to remember your promises to yourself. Many people get stuck in the
fame and glamor and stop giving a shit.

------
coltonje95
As a student here, I can say the learning experience has been like no other!

I am a self-taught developer going on 5+ years of online self-study. After the
virus and lockdown hit, I managed to find c0d3.

What makes c0d3 different from other platforms like freeCodeCamp, CodeAcademy,
Udemy, etc.?

I feel that here at c0d3 we focus more on community and helping one another
out than anywhere else. Learning to code (particularly as a beginner) can be a
very daunting and lonely task at times.

The learning structure is very unique in that you are forced to get your hands
on code immediately and use practical skills (using git, etc.) to submit
challenges and continue down the curriculum path. After each submission, your
code is then peer-reviewed by another student who has already passed that
particular section you are on.

Among all these amazing aspects that c0d3 brings to the table, I believe the
most prominent one is the ability to work on real-world projects (such as c0d3
itself) as a student, in an actual engineering team comprised of other
students and learners such as yourself.

This experience has by far eclipsed any other I have had anywhere else during
my self-studying journey!

~~~
cchen408
I totally agree. The experience mirrors what you would be doing at a tech
company. Song definitely planned this correctly.

~~~
akimr
hey, is in the website react, graphql resources are also available , thing is
i am not able to click on the react in the website which is mentioned at the
last

------
dang
All: much of this thread has been arguing about the definition of the word
'engineer'. That's not interesting in HN's sense of the word, and it's a shame
not to be discussing the specifics of this project. Since that word 'engineer'
seems to be so activating, I've taken it out of the title. Please comment out
of curiosity going forward.

~~~
cchen408
that's very unfortunate that people get stuck on something like that.

------
rmelhem
man, we definitely need more initiatives like this, the pandemic ended my
small business and I no longer have a source of income. learning programming
is my only hope at this moment and I'm sure there are more people in the same
situation. A free and dedicated course to the community is all we need right
now. Please count on me for anything you need and I can collaborate. Already
signed up!

~~~
movedx
I'm in the process of creating something similar with www.thecloud.coach. My
aim is DevOps, though, not software development.

~~~
sk0g
Small world, fellow Brissie resident! How long would the courses take to
complete, roughly? Might be useful information on the courses list :)

~~~
movedx
The landing page is in the design phase, right now :-)

I'm writing the book and making the sure the code is valid. Keep an eye out as
I'll post something here about it when I'm done.

I've got a Discord too if you're interested in having a chat? It's on the
website.

------
z3t4
shameless plug: If you want an editor/IDE for JS without installation and with
Linux shell, try [https://webide.se/](https://webide.se/) you get access to a
dedicated server where you can run Docker, Android emulator, etc. Useful when
you are on a Chromebook that don't have Linux support, or want to code on a
mobile phone or tablet ¯\\_(ツ)_/¯

~~~
songzme
really cool. Did you build the whole thing yourself? it has so many
functionalities I can get lost digging and playing into this.

~~~
z3t4
I've made it for myself and have been using it for my daily dev environment.
It's very fun to work on it so I've put a lot of time into it. Just have to
implement e-mail/IMAP support with bayesian filters and I can call it a real
editor ;)

------
lquist
_# Why Learn JS?

JavaScript is the only language that lets you do every aspect of technology._

This is misleading at best.

~~~
songzme
I agree, I haven't had time to revisit it to improve the wording, will do it
tonight. This is really what I meant:

Our decision behind JavaScript:

We want our students to understand technology at a conceptual level first, end
to end:

1\. Client side - Mobile, web, terminal 2. Server side - Database
interactions, system design and optimization 3. Batch - ML models and
scripting

AFAIK, JavaScript is the only language that is able to cover everything end to
end (front end to backend to scripting to even ML) so I'm able to come up with
appropriate exercises for each of the moving parts.

Afterwards, they should pickup domain specific language that optimizes for
each task.

I think it may be too overwhelming for students to learn different languages
and learn the high level concepts at the same time.

Unfortunately, there may be more instances of word choices. Each lesson is
about 4-5k words (totaling 30k) and I simply don't have enough time to think
critically on every word so feedback like these helps. Feel free to bring
these up in the chatroom and help us improve our wording!

~~~
abraxas
I think you are right and I'm annoyed that you are. Because I think JavaScript
is a really hard language to master. Ubiquitous yes, versatile yes but so full
of cruft and bad design decisions that it really can put many people off
programming.

~~~
enneff
And the ecosystem is a confusing, overwhelming mess.

~~~
hmwhy
I personally think it's only as overwhelming and confusing as one's
predisposition to FOMO. I stopped worrying when I found out at meetups and
interviews that it really doesn't work like that in most parts of the real
world.

------
saumya665
I learned how to code using c0d3.com and it has helped me find a job. c0d3
gave me the fundamentals of full stack development both the technicals skills
along with critical thinking skills. I was previously a developer on the
c0d3.com team

------
seemcat
The best part about C0d3 is the community of supportive ppl you’ll meet. When
faced with what might feel like a dead end, you’ll never feel like it’s time
to give up because there’s always going to be either Song or someone else
there to help guide you through it.

C0d3 was way more helpful for me in learning programming than a college room
filled with hundreds of students, and only one professor and a limited # of
TAs to help.

Thanks to Song & C0d3, I’ve developed the strong foundation of engineering I
needed to land multiple Developer Advocate roles.

10/10 would recommend lol.

------
crudgen
I appreciate the approach where you combine a text chat with an online course,
though feels a bit strange that the content is on notion.so.

Contentwise, I have the feeling that there are at least 3 distinct skill sets
with ~ 10% overlap for a swe career: Passing coding interviews, actual
software engineering, climbing the corporate ladder. There is certainly a web
comic for that.

~~~
songzme
Yeah the notion is there for me to capture all the things I want to make sure
students know, its a quick way for me to jot down notes and reorganize content
when I notice common struggles among students when understanding different
concepts.

Eventually, I want to have a fully integrated experience and I have all that
planned out. I'm just waiting for more students to join our engineering team
and start contributing.

------
beckingz
This appears to be focused almost entirely on Javascript outside of the
html/css/databases portion.

Curious if there are plans to expand it into python or other languages.

~~~
songzme
Our decision behind JavaScript:

We want our students to understand technology at a conceptual level first, end
to end:

1\. Client side - Mobile, web, terminal 2\. Server side - Database
interactions, system design and optimization 3\. Batch - ML models and
scripting

AFAIK, JavaScript is the only language that is able to cover everything end to
end (front end to backend to scripting to even ML) so I'm able to come up with
appropriate exercises for each of the moving parts.

Afterwards, they should pickup domain specific language that optimizes for
each task.

I think it may be too overwhelming for students to learn different languages
and learn the high level concepts at the same time.

~~~
mcguire
" _I think it may be too overwhelming for students to learn different
languages and learn the high level concepts at the same time._ "

That would take literally years.

~~~
mhh__
I'm currently teaching a friend of mine "Computer Science" (he means
programming primarily, but a bit of theory). He showed me his spreadsheet
where he laid out his grand plan for the summer, in which he plans on
basically covering the whole of CLRS in a week.

I explain things and help him write better code when he sends me stuff he's
written but it's difficult to best explain that I've spent _years_ getting to
the point where I can write good, efficient, code - let alone starting almost
genuinely from scratch ("What's a terminal"), and with an all too common
disease that I'm going to call "Let you google that for me"

There's probably a joke in that he goes to Harvard and I go to a university
you've probably never heard of but hey ho

~~~
jholman
The (old, old) joke is...

"You can always tell a Harvard man, but you can't tell him much."

------
madhusudhan1994
I was once a proud member of this community, learned all basics and built my
career with help of this coding community.After one working and learning with
all folks in this community I landed up with three job offers. Today I am a
happy software engineer in Silicon Valley, I want to see more people changing
there lives just like me. Proud of your work team.

------
edoceo
A link on the home page for how business can access your talent pool would be
nice.

~~~
songzme
Good suggestion! One of the students took a first stab with this PR to build a
contributors page to featur students who have contributed features and are
looking for a job:
[https://github.com/garageScript/c0d3-app/pull/227](https://github.com/garageScript/c0d3-app/pull/227)

If anyone has better ideas, please share!

------
lerie1982
I was under the impression that the website was interactive, but it's asking
me to install a node module. Is that how you submit the challenges?

~~~
songzme
yes. Interactive in the sense that there is a chatroom and you can interact
with other student mentors / engineers on there.

------
xixixao
I love the illustrations on the homepage. So beautiful.

------
MoBattah_
This is a genius idea, I love it. Good job. Great work.

------
arvindrajnaidu
Congratulations. I am going to get my family on it.

------
ecarson88
Great curriculum to learn the basic fundamentals of web development and it’s
free!

------
trevorhinesley
Excellent work and great idea. Where did you get the illustrations on the site
from?

~~~
songzme
Thanks. You can get illustrations from vectorStock:
[https://www.vectorstock.com/royalty-free-vectors/computer-
pr...](https://www.vectorstock.com/royalty-free-vectors/computer-programmer-
vectors)

------
zjb421
Super great and really really good place to learn coding!

------
rshelans
This program is the true upward mobility. Good on you.

------
poma88
There is something wrong in the signing up process...

~~~
stronglikedan
There is something wrong with your bug report. ;-)

~~~
poma88
The email confirmation opens instead a password recovery interface, which is
outdated seconds after being sent. Thus it is not possible to sign up.

~~~
songzme
did you type in a username / email with an uppercase letter? that's the only
issue we've discovered so far with the signup process.

~~~
poma88
Nope. The links you send for password recovery are also again outdated on
arrival.

~~~
yjhoney
what is your username? We will make sure this gets sorted out.

~~~
poma88
rogercre is the username. Everytime I try to get a password, the link opens a
site where in less than half a minute I read "Link has expired. Request a new
password reset". Thanks!

~~~
poma88
THANKS to all the team and I am so happy it could be of help!

------
zjb421
Really really great place to learn coding!

------
rshelans
This is a great idea!

------
voldacar
replace "coding" with "javascript"

~~~
orange8
What programming language do you consider worthy of the 'coding' title?

~~~
voldacar
Unironically? C, C++,D, any lisp, erlang, ML family stuff are all good if your
goal is to learn about computers and write software that well-utilizes actual
hardware. If you don't particularly love computers and just want to get a job
shoveling around webcruft, by all means learn javascript

~~~
orange8
I love my job as a web developer/designer, and JS is my favorite language.
Currently learning C++ and laravel (PHP framework). And I find it so silly
when programmers hate on other languages, usually languages they do not want
to take the time and effort to understand.

> If you don't particularly love computers and just want to get a job
> shoveling

Why would you assume everyone else in this world has your same tastes and
preferences? All the time and energy spent writing stuff trying to put other
peoples skills/interests/occupations down (FUD) may be spent doing something
more productive.. like learning those languages.

------
b20000
why does the tech industry need to solve problems of unemployment or why does
it need to give jobs to people who do not know what they want to do?

~~~
michaelbayday
Part of being a good human is to uplift neglected or underserved or just
people in general. Tech has solved so many problems and economic inequity is
one of them

~~~
b20000
we need more doctors and nurses and affordable lawyers. why not become a
doctor or lawyer?

------
jbreckmckye
Software engineering must be one of the few professions where individuals
freely share their energy and expertise with others.

This isn't a criticism, neither of the "help others code" movement, nor more
insular industries. It's just a very unusual aspect of our field and I wonder
where it comes from.

For instance, can you imagine reading any of these?

 _Show LN (Litigator News): Learn employment regulations to become a
paralegal_

 _struct3r5.com: a free online curriculum for budding structural engineers_

 _Paying It Forward: If You 're Not Mentoring a Junior Mathematician, You're
Not a Senior Statistician_

 _dmackenzie /ipcurriculum: a curated list of resources to help students of
Intellectual Property law_

 _Introducing a new Programme of Mentorship with Veteran Cardiologists for Non
Medical Students_

~~~
mcguire
" _struct3r5.com: a free online curriculum for budding structural engineers_ "

Now I'm scared.

~~~
jbreckmckye
It's interesting though, how that will scare us, but not something equivalent
for digital infrastructure.

Of course, bad programming will never do the same damage as a building that
collapses, a bridge that folds in two, etc. But it can do damage enough:
harming lives, enabling crime, and costing businesses a huge amount of money.

------
aparsons
I’m always happy to see paths for more people to learn useful industry skills
(most often not taught in universities).

But can we please not lower our hiring bars because the company partnered with
bootcamp X or because there is a diversity (read: three groups) target to hit?

Yes it’s cheaper, and we save some money after tax incentives, but if I have
to pass up a superior candidate due to an order from upper management one more
time, I will pull my hair out.

I hope a program like this or freecodecamp offered at every new hire
orientation will work wonders. Yes mentoring beginners is fulfilling, but its
very taxing when they were hired on the basis of a few bootcamp projects plus
a diversity credential when they’re still very green skill wise.

~~~
brlewis
I'm sorry if your company conflated diversity and inclusion with lowering
hiring bars. Everywhere I've worked, that hasn't been what diversity programs
are about.

~~~
aparsons
I encountered it at my two previous employers (including one FANG). At my
current place, I made a point to ask about their diversity initiatives and
hiring practices during my own interview, because as a senior engineer I am
interviewing 20-40 people annually. I’ve had no pressure to push a diversity
agenda at the interview level.

------
HeyLaughingBoy
This is like saying "learn to read a schematic to become an electrical
engineer."

There's a _hell_ of a lot more to engineering than that. Couldn't they at
least have said "learn coding to become a programmer?"

~~~
shawndrost
Oh hello, guy that complains about the way that the term "software engineer"
is used!

Outside of your head, the job title "Software Engineer" is mainly used to
describe computer programmers that do not do formal engineering. The battle to
"protect" the term (as a designator of formal "engineer" status) has already
been fought and definitively lost.

As such: Regardless of what C0D3 or its students desire, any successful grad
of the platform will have to learn that "software engineer" is a job title
that they qualify for. Unless you care more about this linguistic drift than
you care about junior devs' job prospects, you (and everyone else) should be
quiet about this forever.

------
thomspoon
Software engineering is more than just software development. Writing
requirements, drafting documentation, testing, verification, maintenance.

I hate to be hypercritical, but five weeks of javascript doesn’t make you a
software engineer.

~~~
jbreckmckye
I'm struggling to add this all up.

On the one hand, I have some evidence that my job is hard: I have spent ten
years learning to be proficient at it, still know only a narrow slice of it,
and find it challenging every day. I have a solid degree from a world-renowned
university, so I know I am not stupid. I also interview candidates, and know
that many applicants simply cannot do the job.

But on the other hand, there is such a sheer _volume_ of resources like this,
which imply very clearly that becoming a programmer is a trivial thing. So
many in fact that I am starting to doubt the evidence of my eyes and ears.

So which is it? Is there a weird drive to constantly undersell our skills, a
knowing wink to the managers who have always secretly suspected us of being
nothing more than glorified typists? Or are the bootcamps right, and I've
spent a decade learning replaceable trivia? And why is making statement #2
seen as positive and inclusive?

~~~
cosmodisk
There's space for everybody. I do programming ( not full time) at work:
usually it's simple queries against the database and business logic around the
returned collection. Sometimes it's a bit more complicated and then I have to
do an integration with an external system. Would I be able to write some
traffic optimization algorithm for Netflix? Not a chance. Would I be able to
help an average SMB by automating some of their processes? Absolutely. Someone
is sitting in a fancy office on the 50th floor in Manhattan writing some
heavily optimized code for a bank making $1M/year, while some other is doing
simple PHP plugins for WordPress in some sweatshop. Both are called
programmers. Same with bankers: one you meet at your local bank branch who
doesn't even know what nostro account is, while other is doing some M&A trying
to pull billion dollar companies together. It doesn't matter how many schools,
bootcamps,or even leet universities will open,the fact that probably less than
0.01% of general population could barely become mediocre developers won't
change any time soon.

------
Madmallard
Usually on this site we would talk about how software engineering covers
several important skills, of which coding is only one. The real necessity is
working with people to understand the details of their own problens and what
they want to get out of it and then engineering an approach that effectively
handles that going forward. Maybe that's not as relevant here.

~~~
songzme
> The real necessity is working with people to understand the details of their
> own problems and what they want to get out of it and then engineering an
> approach that effectively handles that going forward

c0d3.com' target audience: people who want to become good engineers.

Our solution: To immerse students in an work environment where they
communicate with each other, code review each other, build features together,
observe users, and update features.

It's meant to be an alternative to aggressive leetcoding and problem/solution
memorizing, which is a brute force way to get into engineering without really
understanding the details of why they want to get into engineering in the
first place.

------
mesozoic
There is more to being a software engineer than coding.

~~~
bob1029
Most of software engineering is about the code that you didn't write. There is
an infinite amount of hypothetical code that you could write, and every line
of code is a liability.

I strongly feel like starting lesson 0 with hello world or any other coding
activity is a huge mistake if we are actually talking about trying to ramp
someone with zero technical background.

A more ideal start would be to run with a problem domain (e.g. online
store/shopping cart/todo tracker) and abstractly work through how you even go
about reasoning with these things in the first place. You do not need a
computer to develop a strong programmatic understanding for a problem domain.
I know this for a fact because we do it on our standup calls almost every day
w/ non-technical project managers. Talking about something for 20 minutes can
mean the difference between coding for 2 weeks and no code at all.

How you model your target domain is far more important than any specific code
you write to implement it. Modeling and planning is the art. Mastering this is
the only thing that really matters. The code/language/framework-of-the-week
will always change. Knowing how to ask the right questions and being able to
identify boundaries between systems will not.

~~~
divslinger
This explains why I get stuck when trying to build something on my own. I
don't abstractly work through the reasoning as you said.

~~~
cosmodisk
If you struggle to put it all together,try to flip it and deconstruct. For
instance, you want to build a website that pulls trending tweets from
twitter's API. Think of it as a whole,i.e. some scrolling boxes showing
tweets,maybe a list that keeps growing.Then think how would you go about
pulling tweet data from the API.Then how would you store it.How you would read
each tweet and show it on the screen and etc. Suddenly,each individual part
become much more manageable.

------
M5x7wI3CmbEem10
[deleted]

~~~
Wolfy64
yes it's free and it always be the goal is to help people to become software
engineer that follow industry best practice.

------
627467
I take titles such as "engineer" are not equally regulated everywhere in the
world?

Can you really become a chartered engineer by going through this course?

~~~
songzme
> I take titles such as "engineer" are not equally regulated everywhere in the
> world?

Yes. And the interview process that software companies have are trying to
standardize it.

> Can you really become a chartered engineer by going through this course?

It depends on you. Building and maintaining a product that people use on a
daily basis that will exist and thrive long after you stop working on it is
the essence of good software engineering.

~~~
tomato2juice
> And the interview process that software companies have are trying to
> standardize it.

Which companies are trying to standardize it?

~~~
songzme
I misspoke. I think hiring is more standardized within companies now, and it
is trending that way.

I can only speak for places I've worked at.

Google has an internal interview committee to provide unbiased reviews. Before
you interview, you need to understand the repository of questions asked and
how to interview candidates.

PayPal varies team by team, but each team tries to standardize the kind of
candidates that they are looking for.

------
graham_paul
That's because many Anglo-Saxon folk tend to equate engineering to coding.
Many people find it demeaning

~~~
dang
This comment was originally a reply to
[https://news.ycombinator.com/item?id=23421388](https://news.ycombinator.com/item?id=23421388).

