Show HN: C0D3 – A free, interactive site to learn coding
c0d3.com
c0d3.com
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/
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
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.
I face the same issue so I'm not sure, I'm hoping HN could help. Personally, I don't want to feed into the whole "just leetcode and get a job mindset" so I'm going to keep my course and follow what I believe in.
I am commenting partially to easily go back to it after work ( this day is a little hectic - sorry for the generic comment ).
"For the students that complete the whole curriculum, could they contribute to a codebase that users use and follow good coding practices like an engineer would?"
The answer is yes, so now we have a happy path. Next phase is to increase this funnel.
That's a huge step towards your vision.
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!
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.
JavaScript is the only language that lets you do every aspect of technology.
This is misleading at best.
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!
As for the wording, all you need to add is the word platform:
JavaScript is the only language that lets you build applications for any technology platform, including the web, desktop, mobile apps and terminals.
I also recommend js to ppl who want to learn to code, for the same reasons (I.e. both frontend and backend in js).
+ Writing browser games can motivate some students
I think you may find that some of those "bad design decisions" are actually not so bad, or at least manageable, once you will have read through the book.
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.
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.
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.
Curious if there are plans to expand it into python or other languages.
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.
That would take literally years.
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
"You can always tell a Harvard man, but you can't tell him much."
If anyone has better ideas, please share!
> 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.
(COMPUTER)[U] computing specialized a language used to program (= give instructions to) computers: The children are learning to write code.
https://dictionary.cambridge.org/dictionary/english/code#cal...
What I meant was "coding" may refer to any number of languages, whereas "javascript coding" obviously refers to only one language.
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
Many others in creative pursuits do the same, including advice, articles, mentorship, tutorials, videos, screencasts, and many other things: artists, musicians, writers, non-software engineers, cinematographers, carpenters, and others.
Or to put it another way, if you like the process of taxonomy and description that goes into programming, you might well enjoy the process of taxonomy and description that goes into teaching it too.
I would drop the "software" and just keep the engineering.
I also think it's important that it's virtually free to practice software engineering. All you need is a computer and your spare time.
First you need a shit load of equipment: Soldering station, Scope, Multimeter, Power-supply, Function generator, and so on...
Then building something and testing it costs money. PCB manufacturing is pretty expensive.
Finally debugging and crashes are not free like the software. If you made a wrong connection, then the PCB goes to trash. If you screwed up the Voltage, probably your components will blow up and go to trash too.
And all that are on top of the computer and bandwidth.
Now I'm scared.
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.
There are also a lot of free in-person clubs and meetups for these things in many communities.
I think that's true of most professions. The difference between software engineering and most of the other examples you listed is that software engineering does not require any formal education or training, unlike law, medicine, or other engineering disciplines.
I think it's generally a good thing that the field and the profession are accessible, but I frankly also would prefer if there was a bar/board exam or a similar certification process to make sure practitioners are all up to date on issues of accessibility, privacy, security, etc., which do lead to concrete negative consequences if neglected. I think this is a case where it'll never be perfect, but as a trade we owe it to the people who put their trust in our work.
It does make getting into the career harder, but I don't think those changes would make software engineering no longer self-teachable.
That's a lot of junior engineers. We're vastly outnumbered by juniors and complete beginners.
If you aren't helping juniors, you'll fast run out of seniors to work with.
Perhaps it's their culture that still lives on.
I think your perception of what other professions do might be limited by your own experience, though. Just to go in order:
Legal: My aunt is a lawyer and volunteered her time in a legal "clinic" where people with landlord/tenant issues could come in and get advice for free. She also worked some of her professional time on cases where the clients did not have to pay, a practice that is common in the legal industry, called "pro bono."
Engineering: There are a wide variety of student and volunteer activities that are well-supported by professional engineers on a volunteer basis. For example one of my coworkers volunteers his time evenings and weekends to help "coach" a high school robotics team. And you may have heard of various other engineering challenges like popsicle stick bridges or egg drop competitions.
Medical: Several friends have transitioned into working in the medical field through free opportunities, primarily by volunteering with local rescue squads and first responder teams. These teams are typically supported/led by some folks with professional medical training, but anyone can show up, volunteer their time, and get medical training.
Ultimately, to work in these fields professionally, folks need to get a credential of some kind, and that might cost money. That's not true of a lot of software development right now.
But I think that is primarily because computing is such a young industry right now. All industries start out that way. There were times in history when you did not need a credential to work with the law, or to design machines, or to treat illness.
But as these professions had a larger and larger impact on society, society imposed higher and higher expectations on practitioners... expectations which required more formal structures to satisfy.
I predict the same thing will happen to computing technology, at least at the high end. It's already true in some areas like life-critical embedded systems. You're not going to get a job writing code controlling the ISS after doing some free online tutorials.
Even here in the UK, taking a GDL and LPC/BCPL is a very expensive proposition. There are no real free resources, if you want even a sniff of it you are putting down serious cash. I know because I looked very hard at doing it, and opted out partly because of the perilous costs involved.
The engineering example is very different: helping high school kids take nurture an interest in engineering is definitely a common volunteering trope. I'm not sure it's the same as giving potential practitioners free professional training.
> I think your perception of what other professions do might be limited by your own experience, though.
Politely, I do not think you should be making that assumption about strangers on the internet.
In the legal space there is a ton of free information and resources out there, and plenty of ways to work personally or professionally with the law that don't require a JD. For example part of my job is to advise colleagues on contracts and IP issues. I have no formal legal training; I learned on my own and have built up trust in my ability based on demonstrated competency. Not that I'm some special flower; I know other people with similar responsibilities.
Of course we also have actual lawyers on staff, and I'll never be able transfer to that role without shelling out some $$ because it is a formally defined credential. By definition there's only one way to become a lawyer.
Conversely, the lack of formal credentialing in software development makes it hard to evaluate the quality of the "professional training" that is available for free. If I go through the COD3 curriculum linked up top, what job can I reasonably expect to get? I don't think COD3 is comparable to a 3-year post-graduate degree in law.
The free-for-all that allows for open-ended innovation also allows a lot of open-ended promises about the value of free things. And because they're free, there's not really any accountability if the promises fall short. I don't think this is a bad thing; but it does make it hard to cleanly compare it to more formally credentialed industries.
Whats the link to it? Google search doesn't bring anything up
And what about teachers generally? Isn't teaching an important skill that deserves remuneration? Doesn't offering free tuition drive down the value of teachers? Should these people be improverished for (one) sense of "societal progress"? I'm not sure I can agree.
However I am definitely sure that the statistics show that the highest paid professions in this country require lots of licensing and schooling, which carry non-zero costs for obtaining.
Software engineering does not exhibit this same behavior, or at least if it does, it is orders of magnitude less. I don't see many blog posts on how to do appendix surgery, for example.
Of course kids are into influencing in any generation. I was commenting on what they're into now.
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.
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?"
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.
I hate to be hypercritical, but five weeks of javascript doesn’t make you a software engineer.
Software engineering is a relatively new field and segregates from computer science in the sense that software engineers typically are involved in interface design (electronic and software), architecture, documentation, and various other aspects of typical engineering. I feel like I’m being an ass but I find the use of the term “Software Engineer” in this case is erroneous. In the same way you wouldn’t consider someone who tinkers with an arduino an electrical engineer, I don’t think we can consider someone who knows full-Stack web development a software engineer.
100% agree. Which is why its important that students are working together on projects so they can write specs, documentation, tests and structure code in a way that the next engineer can take over easily. Our weekly sprint planning helps facilitate that.
Take this PR for example, it has tests and went through 15+ comments and approved by 2 other students before it got merged in: https://github.com/garageScript/c0d3-app/pull/243
I think your are thinking of a curriculum that just teaches students how to code and then have them build side projects by themselves and show it off. And I agree, that is not software engineering, it is just code.
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?
Managers don’t like this. They want to be able to hire programmers off the street with no experience and pay them a cheap salary. They want programmers to be plentiful and interchangeable. That is the dream.
But that’s all it is, just a dream that will never be realized no matter how many bootcamps and websites like this one come about.
The reason for this is there is no substitute for experience. Real experience. There are no shortcuts to becoming a developer. So don’t undersell yourself, your knowledge, or your experience.
It takes a few weeks to get to the first level. None of the people coming out of these bootcamps are building secure software at scale.
Imagine if you wanted to become a house builder. Coding bootcamps teach you to build a doghouse, which is easy to learn within a few weeks. People will pay for doghouses, so you may as well start there.
Over time, you build sheds, barns, and then move on to homes.
I think they imply that becoming a programmer is a matter of hard work and the right explanations. I'm 100% sure of the hard work part and maybe 60% sure of the right explanations part.
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.
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.
Can you really become a chartered engineer by going through this course?
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.
Which companies are trying to standardize it?
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.