Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: C0D3 – A free, interactive site to learn coding (c0d3.com)
261 points by songzme 37 days ago | hide | past | favorite | 166 comments

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

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

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.

"How do you square that with the reality that many software jobs have leetcode as a gate to an offer?"

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.

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.

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!

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

Same here. I am right now starting to job hunt after a few years, but it's quite daunting. Just opened cracking the coding interview and the book itself recommends starting a year before to practice the problems, build a portfolio, etc.

Think of this as a useful filter of job opportunities for you: don't accept any of those jobs.

You built this without writing a single line of code yourself? Awesome work by the team!

Exactly! Awesome work :)

First off, kudos. I think you are actually making world a better place.

I am commenting partially to easily go back to it after work ( this day is a little hectic - sorry for the generic comment ).

I agree! I haven't met anyone quite like you song :)

This looks awesome and has certainly piqued my curiosity. How long has the beta group been going? Do you have an idea of retention rate yet? And for those who drop out, why?

This beta group has been going on for a year, early 2019. Our retention rate is really poor, until today's posting about 400 signups and only 8 made it to the end. The current first phase is actually to answer this question:

"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.

I'm curious to learn what you plan to do in order to understand the retention rate issues

When students engage with me to ask questions, I usually just ask them directly: "If you decide that this isn't for you, please let me or someone else on the team know before you do so we understand how we can make this a better learning platform for future students"

Have you discovered patterns? I've done some research work on remote learning, so genuinely curious.

not enough engagement. If I reach out to students and engage in conversations with them regularly, they have a higher chance of following through. I start high up in the funnel, to pay utmost attention to students who are at the end (JS6). Then when I have free time, I go down the funnel and pull students up. As I polish the end, I get more and more time to engage with students lower in the funnel. I just reach out and say hi, ask them why they are learning and if they have any questions and concerns.

That sounds great, the way you are doing it. I think companies end up gamifying the product approach,to generate feelings that are similar to what happens when you engage one on one (from a neuroscience perspective)

I've saved your Notion curriculum, and intend to run a program like this soon in my local community. Very inspiring project, and awesome end result. Thank you for your contribution to this area.

Where is the notion curriculum please?

Thank you and very inspirational!!!!

Thank you for sharing that

I have some experience mentoring students through various platforms. How can I help out ?

Congratulations on the new hire! :)

That's a huge step towards your vision.

Very cool and congrats!

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!

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

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

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.

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

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!

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

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

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.

shameless plug: If you want an editor/IDE for JS without installation and with Linux shell, try 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 ¯\_(ツ)_/¯

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

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 ;)

thank you! very useful site, bookmarked!

# Why Learn JS?

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

This is misleading at best.

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!

Don't worry too much about the JS haters. JavaScript, a dynamically typed, flexible language is a great first language to learn programming with.

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.

Thank you, I updated.

> JavaScript is the only language that is able to cover everything end to end

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

I highly recommend working through YDKJS[1] if you have an interest in and/or a reason to "master" JavaScript.

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.

1. https://github.com/getify/You-Dont-Know-JS

And the ecosystem is a confusing, overwhelming mess.

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.

And once you learn JavaScript, you can write JavaScript in any language you like!

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

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.

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.

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.

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.

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.

"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'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

The (old, old) joke is...

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

Are there times when you think TypeScript could make some of the advanced projects less frustrating for the students?

Yeah after the curriculum, the students transition to using typescript. It is a natural progression towards wanting to type your function arguments and return values for clarity and consistency.

If you are targeting people learning programming, it really does not matter. TypeScript really makes sense to those who were already comfortable with a strongly typed language (eg Java, C#) before learning JS.

as they learn, I want them to build reliable open source products that will be useful and maintainable after they find jobs and leave. Since less experienced engineers are prone to making mistakes, TypeScript have been really helpful in maintaining code quality. I think its a win win for their growth and for code quality.

Agree on Python. If you can throw some sql or orm with sqlite, even better

Python is not on the roadmap, but SQL is. In fact, another student project is a website where users can go to quickly create accounts for different databases (NOSQL, SQL, and Graph databases) and be able to experiment with them through interactive tutorials. The project kicked off a few weeks ago here: https://github.com/garageScript/databases/

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.

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

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

If anyone has better ideas, please share!

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?

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

I love the illustrations on the homepage. So beautiful.

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

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

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

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

Thanks. You can get illustrations from vectorStock: https://www.vectorstock.com/royalty-free-vectors/computer-pr...

Super great and really really good place to learn coding!

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

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

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

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

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.

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

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

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!

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

we got a sentry.io alert of an error, we think this may be you. filed a bug: https://github.com/garageScript/c0d3-app/issues/244

Really really great place to learn coding!

This is a great idea!

replace "coding" with "javascript"

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

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

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.

More than one.

code noun

(COMPUTER)[U] computing specialized a language used to program (= give instructions to) computers: The children are learning to write code.


Sorry, my comment was snarky and underdeveloped.

What I meant was "coding" may refer to any number of languages, whereas "javascript coding" obviously refers to only one language.

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?

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

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

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

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

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.

Maybe that's the link? Teaching, writing about and sharing resources on a creative pursuit is itself quite a creative endeavour.

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 was going to say you can use YouTube to learn anything including plumbing from plumbers. My plumber recommended it. It's how he got his start. According to him, when he started plumbing years ago, he lied about his experience and used Youtube at worksites to learn on the job.

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

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.

A computer, bandwidth, and spare time are all large expenses to large chunks of the population.

Try learning Electronics and you will see what I mean.

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.

"struct3r5.com: a free online curriculum for budding structural engineers"

Now I'm scared.

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.

The thing is, if you want to build a shed, or a mountain cabin, or a boat, or even a hobby airplane, (which are all structures) there are a ton of free or low-cost resources and tutorials out there, many by working professionals.

There are also a lot of free in-person clubs and meetups for these things in many communities.

If they're only building doghouses and birdhouses that seems fine.

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

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.

I think this makes an interesting distinction between software engineering, and say civil engineering or mechanical engineering. Often engineers in the physical space are credentialed while software engineering is much more loosely regulated. Not saying it's bad, I very much enjoy programming without having to take a PE exam, but interesting none the less.

It's also one of the few fields with demand so high that the number of software engineers in the world doubles every few years (5years iirc).

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.

There was this listing by a professor of Physics of all the topics you need to study in order in order to become a "GOOD Theoretical Physicist"[1]

[1]: https://www.goodtheorist.science/

Maybe it has something to do with all the hippies that were involved in software in the 60s and 70s? Open source software and operating systems were all done by young idealistic college kids who believed information should be free.

Perhaps it's their culture that still lives on.

"Sharing one's energy and expertise with others" has become a lot easier post-Internet. Software engineers are just ahead of the curve, and math/physics/other "hard" sciences are not far behind (see e.g. ArXiV.org)

I think it's great that so many software engineers and developers share their energy and expertise.

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.

I am aware of legal clinics and pro bono work, but this is very different from legal training.

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.

I think it's really hard to compare because of credentialing.

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.

I do think that software engineering is setting a very good example of knowledge sharing and helping others grow their skillset. However, we definitely aren't alone in this effort. For example, I've been learning woodworking exclusively through dozens of YouTubers who have spent hours upon hours creating videos filled with valuable wisdom and advice for free. I'm certain we can find examples in various other fields as well. Perhaps our efforts are just most visible because we happen to be comprised of a bunch of internet savvy folks.

Graduate school isn't too far from #3.

Probably from the fact entry level software jobs require minimum 2 years experience?

Curious about this: dmackenzie/ipcurriculum

Whats the link to it? Google search doesn't bring anything up

What this really highlights is that humans are currently interested in creating barriers to entry to their profession to selfishly protect their salary and employment security at the cost of slowing down societal progress.

Are you saying that engineers, doctors, lawyers etc. have an obligation to teach others for free? And to shoulder any and all costs associated? Are you also suggesting that junior programmers are entitled to the unpaid labour of mentors?

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.

I'm not sure what I'm saying, to be honest.

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.

Nowadays the kids are into: "How To Win Followers and Influence People"

Nowadays? I'll assume you're being sarcastic, since this has of course been the case from before the invention of language

Not being sarcastic. I was referring to the rise of the social media influencer as a potential profession. What other interest would kids be into regarding winning "Followers" these days?

Of course kids are into influencing in any generation. I was commenting on what they're into now.

This is for free?

yes, free forever.

What about making money from companies by helping the companies recruit the students? (The for them right students)

good idea, probably the long term goal. We just got the engineering standards figured out, will slowly me towards that idea :)

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.

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.

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.

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?"

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.

Please let's not have yet another semantic argument about that.

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.

Exactly. Which is why c0d3.com emphasizes understanding users and working together as a team. All code contributions are code reviewed and there is code coverage: https://github.com/garageScript/c0d3-app/pulls?q=is%3Apr+is%...

Let me be a little more explicit, software engineering is more than code. Software developers live, breathe, and puke software development. Software engineers, usually accredited, are systems engineers as well as software developers.

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.

> software engineering is more than code. Software developers live, breathe, and puke software development.

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.

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?

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.

Programming is hard, and it’s only getting harder.

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.

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

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.

>there is such a sheer volume of resources like this, which imply very clearly that becoming a programmer is a trivial thing

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.

Absolutely. Why would software engineering be any different from any other skill? Teach yourself programming in 10 years ...


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.

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

There is more to being a software engineer than coding.

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.

I agree. I'm actually trying to model more of this mindset into the curriculum.

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.

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.


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

yes it is!

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?

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

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

Which companies are trying to standardize it?

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.

In the US at least, there is no formal definition or certification of “Software Engineer”. If you get hired to write software (or in some cases, work near software), you get to put “Software Engineer” on your CV. That’s actually part of what makes interviewing and hiring people so hard.

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

This comment was originally a reply to https://news.ycombinator.com/item?id=23421388.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact