[ { "id": "bd7158d9c441eddfaeb5bdef", "name": "How do I use this guide?", "dashedName": "how-do-i-use-this-guide", "description": [ "
If you're logged in, you can click the \"Next article\" button to go to your next article.
", "You can also click the \"Show me all articles\" button to browse all the questions we answer.
", "We help our campers (students):
", "", "
Most people who successfully learn to code:
", "", "
We give you the structure and the community you need so you can successfully learn to code.
", "", "
", "
", "
", "
", "
Most coding bootcamps try to jam all this into 3 or 4 months of intensive study. Free Code Camp is fully online, and there will always be other people at your skill level that you can pair program with, so you can learn at your own pace. Here are some example coding schedules:
", "Time budgeted | ", "Hours per week | ", "Weeks to complete | ", " ", "
---|---|---|
Weekends | ", "10 hours/week | ", "160 weeks (36 months) | ", "
Nights and Weekends | ", "20 hours/week | ", "80 weeks (18 months) | ", "
Full time | ", "40 hours/week | ", "40 weeks (9 months) | ", "
Traditional Bootcamp Pacing | ", "80 hours/week | ", "20 weeks (5 months) | ", "
Like JavaScript, Ruby and Python are high-level scripting languages that can be used for full stack web development.
", "But even if you learned these languages, you'd still need to learn JavaScript. That's because JavaScript is the only language that runs in web browsers. JavaScript has been around for 20 years, and it is still growing in popularity.
", "Because of this, JavaScript has more tools and online learning resources than any other language.
", " ", "You discuss different approaches to solving problems, and keep each other motivated. The result is better code than either of you could have written by yourselves. Because of its benefits, many engineers pair program full time. And it's the best way to learn coding. Thanks to tools that allow two people to share mouse and keyboard inputs, you can pair program with a friend without needing to be in the same room.
", "By pair programming with other campers on our coding challenges you'll develop the necessary skills to work with people at nonprofits to build real-life software solutions.
", "", "
This is the most time-efficient way to handle being stuck, and it's the most respectful of other people's time, too.
", "Most of the time, you'll solve your problem after just one or two steps of this algorithm.
", "We have a special chat room just for getting help: https://gitter.im/freecodecamp/help/
", "Also, if you need to post on Stack Overflow, be sure to read their guide to asking good questions: http://stackoverflow.com/help/how-to-ask.
", "Learning to code is hard. But it's a lot easier if you ask for help when you need it!
", "If you think we should add a chat room, please message @quincylarson in Gitter.
", "Feel free to come back any time and jump around, reading any articles that seem interesting to you at the time.
", "If you're currently doing our \"Browse our Field Guide\" Waypoint, go ahead and mark that challenge complete and move on to your next Waypoint.
", "Our name is Free Code Camp. We are a free code camp. If you had to pay us (or sign over future earnings), we'd have to change our name. And we are not going to do that.
", "Everyone working on our community and our open source projects is a volunteer.
", "We plan to eventually cover our operational costs by earning job placement bonuses from companies who hire our graduates. Note that we will not actually garnish any wages from our graduates - employers are already paying recruiters thousands of dollars to find successful candidates. Employers will simply pay the recruitment bonus to Free Code Camp instead of paying a recruiter.
", "Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should follow her on Twitter.
", "We're not going to tell you that you can't become a software engineer. We believe the only person who should be able to tell you that is you.
", "If you persevere, and keep working through our challenges and nonprofit projects, you will become an employable software engineer.
", "Please follow these steps to get started:
", "", "
Be respectful of your audience. Everything you stream should be related to coding JavaScript, and should be acceptable for children. (Yes, children do sometimes watch our Twitch stream to learn to code).
", "While you're streaming, keep the chat room open so you can respond to questions from your viewers. If someone follows Free Code Camp on Twitch, try to thank them.
", "If you do a good job, we'll invite you back to stream some more. Who knows, you might become one of our regular streamers!
", "Accra | Gitter | |
Ahmedabad | Gitter | |
Albany | Gitter | |
Alameda | Gitter | |
Amsterdam | Gitter | |
Ann Arbor | Gitter | |
Apucarana | Gitter | |
Aracaju | Gitter | |
Asheville | Gitter | |
Asuncion | Gitter | |
Atlanta | Gitter | |
Auckland | Gitter | |
Austin | Gitter | |
Baltimore | Gitter | |
Bandung | Gitter | |
Bangkok | Gitter | |
Belem | Gitter | |
Belgrade | Gitter | |
Bellingham | Gitter | |
Belo Horizonte | Gitter | |
Bengaluru | Gitter | |
Berkeley | Gitter | |
Berlin | Gitter | |
Bhaktapur | Gitter | |
Bijeljina | Gitter | |
Bydgoszcz | Gitter | |
Birmingham | Gitter | |
Birmingham, Alabama | Gitter | |
Bismarck, ND | Gitter | |
Bogota | Gitter | |
Boston | Gitter | |
Boulder | Gitter | |
Brasilia | Gitter | |
Bratislava | Gitter | |
Brno | Gitter | |
Brussels | Gitter | |
Bucaramanga | Gitter | |
Buenos Aires | Gitter | |
Bucharest | Gitter | |
Budapest | Gitter | |
Cairo | Gitter | |
Calgary | Gitter | |
Campinas | Gitter | |
Cape Cod | Gitter | |
Cape Town | Gitter | |
Caracas | Gitter | |
Charlotte | Gitter | |
Chattanooga | Gitter | |
Chennai | Gitter | |
Chiang Mai | Gitter | |
Chicago | Gitter | |
Cincinnati | Gitter | |
Clarksville | Gitter | |
Cleveland | Gitter | |
Cluj | Gitter | |
Coimbatore | Gitter | |
Coventry | Gitter | |
Curitiba | Gitter | |
Dallas | Gitter | |
Delhi | Gitter | |
Denver | Gitter | |
Des Moines | Gitter | |
Detroit | Gitter | |
Dhaka | Gitter | |
Dnipropetrovsk | Gitter | |
Doha | Gitter | |
Dubai | Gitter | |
Dublin | Gitter | |
Durango | Gitter | |
Edmonton | Gitter | |
Firenze | Gitter | |
Flagstaff | Gitter | |
Florianopolis | Gitter | |
Fort Worth | Gitter | |
Frankfurt | Gitter | |
Freehold | Gitter | |
Galveston | Gitter | |
Gdynia | Gitter | |
Geneva | Gitter | |
Glendora | Gitter | |
Guntur | Gitter | |
Granada | Gitter | |
Guarapuava | Gitter | |
Hampton Roads | Gitter | |
Hanoi | Gitter | |
Hartford | Gitter | |
Hermosillo | Gitter | |
Ho Chi Minh City | Gitter | |
Hong Kong | Gitter | |
Houston | Gitter | |
Hyderabad | Gitter | |
Istanbul | Gitter | |
Indianapolis | Gitter | |
Iasi | Gitter | |
Irkutsk | Gitter | |
Islamabad | Gitter | |
Ivano Frankivsk | Gitter | |
Jaipur | Gitter | |
Jakarta | Gitter | |
Joao Pessoa | Gitter | |
Johannesburg | Gitter | |
Kaduna | Gitter | |
Kalamazoo | Gitter | |
Kampala | Gitter | |
Kansas City | Gitter | |
Karachi | Gitter | |
Kathmandu | Gitter | |
Kemerovo | Gitter | |
Kerch | Gitter | |
Kiev | Gitter | |
Kolkata | Gitter | |
Krasnodar | Gitter | |
Kryvyi Rih | Gitter | |
La Crosse | Gitter | |
La Paz | Gitter | |
Lagos | Gitter | |
Lahore | Gitter | |
Leesburg | Gitter | |
Lehi | Gitter | |
Lima | Gitter | |
Limassol | Gitter | |
Lisbon | Gitter | |
London | Gitter | |
Los Angeles | Gitter | |
Lubbock | Gitter | |
Madrid | Gitter | |
Manchester, UK | Gitter | |
Manila | Gitter | |
Melbourne | Gitter | |
Mexico City | Gitter | |
Miami | Gitter | |
Milwaukee | Gitter | |
Minneapolis | Gitter | |
Mississippi Gulf Coast | Gitter | |
Missoula | Gitter | |
Monterrey | Gitter | |
Montgomery | Gitter | |
Montreal | Gitter | |
Moscow | Gitter | |
Munich | Gitter | |
Mysore | Gitter | |
Nairobi | Gitter | |
Nashik | Gitter | |
Nashville | Gitter | |
New Haven | Gitter | |
New Orleans | Gitter | |
New Paltz | Gitter | |
New York City | Gitter | |
Nicosia | Gitter | |
North Platte | Gitter | |
Oakland | Gitter | |
Oklahoma City | Gitter | |
Omaha | Gitter | |
Orange County | Gitter | |
Orlando | Gitter | |
Parana | Gitter | |
Paris | Gitter | |
Pasadena | Gitter | |
Pasto | Gitter | |
Penang | Gitter | |
Philadelphia | Gitter | |
Pittsburgh | Gitter | |
Poitiers | Gitter | |
Porto | Gitter | |
Pune | Gitter | |
Phoenix | Gitter | |
Port Harcourt | Gitter | |
Portland | Gitter | |
Prescott | Gitter | |
Pristina | Gitter | |
Providence | Gitter | |
Provo | Gitter | |
Quibdo | Gitter | |
Raleigh | Gitter | |
Recife | Gitter | |
Richmond | Gitter | |
Rio de Janeiro | Gitter | |
Roma | Gitter | |
Rotterdam | Gitter | |
Sacramento | Gitter | |
Saint George | Gitter | |
Saint Louis | Gitter | |
Saint Paul | Gitter | |
Salt Lake City | Gitter | |
Salvador | Gitter | |
San Bernardino | Gitter | |
San Diego | Gitter | |
San Francisco | Gitter | |
San Jose | Gitter | |
San Luis Obispo | Gitter | |
Santa Barbara | Gitter | |
Santa Cruz | Gitter | |
Sao Paulo | Gitter | |
Scottsdale | Gitter | |
Sedona | Gitter | |
Seattle | Gitter | |
Seoul | Gitter | |
Sidoarjo | Gitter | |
Singapore | Gitter | |
Skopje | Gitter | |
Solo | Gitter | |
South Bend | Gitter | |
Stuttgart | Gitter | |
Taipei | Gitter | |
Tampa | Gitter | |
Temecula | Gitter | |
Tempe | Gitter | |
Tirana | Gitter | |
Toronto | Gitter | |
Tucson | Gitter | |
Tulsa | Gitter | |
Verde Valley | Gitter | |
Valencia | Gitter | |
Vancouver | Gitter | |
Virginia Beach | Gitter | |
Vitória | Gitter | |
Washington, DC | Gitter | |
Winnipeg | Gitter | |
Yaounde | Gitter | |
Znojmo | Gitter | |
Zurich | Gitter |
", "
If you don't have a Facebook account, we strongly recommend you create one, even if it's just for the purpose of coordinating with campers in your city through this group.
", "If Facebook is blocked in your country, feel free to use social network with a similar group functionality that's popular in your region.
", "These global shortcuts work everywhere on a Mac:
", "", "
The shortcuts:
", "", "
Here are the technologies we used here:
", "", "
You will quickly reach the limits of what you can do without actually coding, but it's nice to be able to rapidly build working prototype websites like this.
", "Building nonprofit projects is the main way that our campers learn full stack JavaScript and agile software development. Once you complete the Free Code Camp Waypoints, Bonfires, Ziplines and Basejumps, you'll begin this process.
", "Our goal at Free Code Camp is to help you land a job as a junior software developer (or, if you prefer, a 'pivot job' that leads your current career in a more technical direction).
", "You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have three to five nonprofit projects. We estimate that the 900 hours of nonprofit projects you're going to complete, in addition to the 100 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.
", "We've categorized all the nonprofit projects by estimated time investment per camper: 100 hours, 200 hours, and 300 hours. These are only rough estimates.
", "Example: if you and the camper you're paired up with (your pair) each stated you could work 20 hours per week. If the project is a 100 hour per camper project, you should be able to complete it in about 5 weeks.
", "Our Nonprofit Project team will match you and your pair based on:
", "", "
We won't take age or gender into account. This will provide you with valuable experience in meshing with diverse teams, which is a reality of the contemporary workplace.
", "You'll only work on one project at a time. Once you start a nonprofit project, we'll remove you from all other nonprofit project you've expressed interest in. There's a good chance those projects will no longer be available when you finish your current project, anyway. Don't worry, though - we get new nonprofit project requests every day, so there will be plenty more projects for you to consider after you finish your current one.
", "Before you can start working on the project, our team of Nonprofit Project Coordinators will go through the following process:
", "", "
This lengthy process serves an important purpose: it reduces the likelihood that any of our campers or stakeholders will waste their precious time.
", "Each nonprofit project was submitted by a nonprofit. A representative from this nonprofit has agreed to serve as a \"stakeholder\" - an authorative person who understands the organization and its needs for this particular project.
", "Stakeholders have a deep understanding of their organizations' needs. Campers will work with them to figure out the best solutions to these needs.
", "When you and your pair first speak with your nonprofit stakeholder, you'll:
", "", "
It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.
", "You'll continue to meet with your stakeholder at least twice a month in your project's Gitter channel.
", "You should also ask questions in your project's Gitter channel as they come up throughout the week, and your stakeholder can answer them asynchronously.
", "Getting \"blocked\" on a task can take away your sense of forward momentum, so be sure to proactively seek answers to any ambiguities you encounter.
", "Ultimately, the project will be considered complete once both the stakeholder's needs have been met, and you and your pair are happy with the project. Then you can add it to your portfolio!
", "You and your pair will pair program (code together on the same computer virtually) about half of the time, and work independently the other half of the time.
", "Here are our recommended ways of collaborating:
", "", "
Unless your stakeholder has an existing modern host (AWS, Digital Ocean), you'll need to transition them over to a new platform. We believe Heroku is the best choice for a vast majority of web projects. It's free, easy to use, and has both browser and command line interfaces. It's owned by Salesforce and used by a ton of companies, so it's accountable and unlikely to go away.
", "If you need help convincing your stakeholder that Heroku is the ideal platform, we'll be happy to talk with them.
", "Once you complete a nonprofit project, your obligation to its stakeholder is finished. Your goal is to leave behind a well documented solution that can be easily maintained by a contract JavaScript developer (or even a less-technical \"super user\").
", "While you will no longer need to help with feature development, we encourage you to consider helping your stakeholder with occasional patches down the road. After all, this project will be an important piece of your portfolio, and you'll want it to remain in good shape for curious future employers.
", "Your nonprofit stakeholder, your pair, and our volunteer team are all counting on you to finish your nonprofit project. If you walk away from an unfinished nonprofit project, you'll become ineligible to ever be assigned another one.
", "To confirm that you understand the seriousness of this commitment, we require that all campers sign this pledge before starting on their nonprofit projects.
", "There will likely be times of confusion or frustration. This is normal in software development. The most important thing is that you do not give up and instead persevere through these setbacks. As Steve Jobs famously said, \"Real artists ship.\" And you are going to ship one successful nonprofit project after another until you feel ready to take the next step in your promising career.
", "You'll use Screenhero to pair program starting with http://freecodecamp.com/challenges/pair-program-on-bonfires
", "", "
open seed_data/bonfires.json
to become familiar with the format of our bonfires.node seed_data/seed.js
. Run gulp
. You should be able to navigate to your new bonfire in the challenge map. Whenever you make a change to bonfire.json, you'll need to reseed in order to see these changes in the browser.The name of your challenge. It's OK for this to be humorous but it must be brief and relevant to the task.
", "Attempt to rate difficulty compared against existing bonfire challenges. A good proxy for the difficulty of a bonfire is how long it takes you to solve it. For every 15 minutes it takes, increase the difficulty. For example, a one-hour bonfire should probably be a 4.
", "Separate paragraphs with a line break. Only the first paragraph is visible prior to a user before they click the the 'More information' button.
", "All necessary information must be included in the first paragraph. Write this first paragraph as succinctly as possible. Subsequent paragraphs should offer hints or details if needed.
", "If your subject matter warrants deeper understanding, you may link to Wikipedia.
", "This is where you set up what will be in the editor when the camper starts the bonfire.
", "These tests are what bring your challenge to life. Without them, we cannot confirm the accuracy of a user's submitted answer. Choose your tests wisely.
", "Bonfire tests are written using the Chai.js assertion library. Please use the should and expect syntax for end user readability. As an example of what not do to, many of the original Bonfire challenges are written with assert syntax and many of the test cases are difficult to read.
", "If your bonfire question has a lot of edge cases, you will need to write many tests for full coverage. If you find yourself writing more tests than you desire, you may consider simplifying the requirements of your bonfire challenge. For difficulty level 1 through 3, you will generally only need 2 to 4 tests.
", "Take a look at seed_data/bonfireMDNlinks.js
. If any of these concepts are relevant to your bonfire, be sure to include them. If you know of an MDN article that isn't linked here, you can add it to the bonfireMDNlinks.js file before adding it to your bonfire.
All campers are required to agree with the following code of conduct. We'll enforce this code. We're expecting cooperation from all campers in ensuring a friendly environment for everybody.
", "", "
Free Code Camp should be a harassment-free experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, or religion (or lack thereof).
", "We do not tolerate harassment of campers in any form, anywhere on Free Code Camp's online media (Gitter, Twitch, etc.) or during pair programming. Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel, and any malicious hacking or social engineering.
", "If a camper engages in harassing behavior, our team will take any action we deem appropriate, up to and including banning them from Free Code Camp.
", "We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Message @quincylarson, @terakilobyte and @codenonprofit on Gitter (preferably with a screen shot of the offending language) so we can take fast action.
", "If you have questions about this code of conduct, email us at team@freecodecamp.com.
", "Free Code Camp is committed to respecting the privacy of visitors to our websites and web applications. The guidelines below explain how we protect the privacy of visitors to FreeCodeCamp.com and its features.
", "Free Code Camp protects the identity of visitors to FreeCodeCamp.com by limiting the collection of personally identifiable information.
", "Free Code Camp does not knowingly collect or solicit personally identifiable information from or about children under 13, except as permitted by law. If we discover we have received any information from a child under 13 in violation of this policy, we will delete that information immediately. If you believe Free Code Camp has any information from or about anyone under 13, please email us at team@freecodecamp.com.
", "All personally identifiable information you provide to us is used by Free Code Camp and its team to process and manage your account, analyze the demographic of our users, or to deliver services through the site.
", "If you choose to provide personally identifiable information to us, you may receive occasional emails from us that are relevant to Free Code Camp, getting a job, or learning to code in general.
", "Free Code Camp may also use other third-party providers to facilitate the delivery of the services described above, and these third-party providers may be supplied with or have access to personally identifiable information for the sole purpose of providing these services, to you on behalf of Free Code Camp.
", "Free Code Camp may also disclose personally identifiable information in special legal circumstances. For instance, such information may be used where it is necessary to protect our copyright or intellectual property rights, or if the law requires us to do so.
", "Anonymous aggregated data may be provided to other organizations we associate with for statistical purposes. For example, we may report to an organization that a certain percentage of our site's visitors are adults between the ages of 25 and 35.
", "We use cookies and software logs to monitor the use of FreeCodeCamp.com and to gather non-personal information about visitors to the site. Cookies are small files that Free Code Camp transfers to the hard drives of visitors for record-keeping purposes. These monitoring systems allow us to track general information about our visitors, such as the type of browsers (for example, Firefox or Internet Explorer), the operating systems (for instance, Windows or Macintosh), or the Internet providers (for instance, Comcast) they use. This information is used for statistical and market research purposes to tailor content to usage patterns and to provide services requested by our customers. To delete these cookies, please see your browser's privacy settings.
", "A beacon is an electronic file object (typically a transparent image) placed in the code of a Web page. We use third party beacons to monitor the traffic patterns of visitors from one Free Code Camp.com page to another and to improve site performance.
", "None of the information we gather in this way can be used to identify any individual who visits our site.
", "Any personally identifiable information collected through this site is stored on limited-access servers. We will maintain safeguards to protect these servers and the information they store.
", "We may occasionally conduct on-line surveys. All surveys are voluntary and you may decline to participate.
", "All of the content on FreeCodeCamp.com is copyrighted by Free Code Camp. If you'd like to redistribute it beyond simply sharing it through social media, please contact us at team@freecodecamp.com.
", "If you have questions about Free Code Camp, or to correct, update, or remove personally identifiable information, please email us at team@freecodecamp.com.
", "Free Code Camp's sites each contain links to other Websites. Free Code Camp is not responsible for the privacy practices or content of these third-party Websites. We urge all FreeCodeCamp.com visitors to follow safe Internet practices: Do not supply Personally Identifiable Information to these Websites unless you have verified their security and privacy policies.
", "We retain your information for as long as necessary to permit us to use it for the purposes that we have communicated to you and comply with applicable law or regulations.
", "As we continue to develop our business, we might sell or buy subsidiaries, or business units. In such transactions, customer information generally is one of the transferred business assets but remains subject to the promises made in any pre-existing Privacy Policy (unless, of course, the customer consents otherwise). Also, in the unlikely event that Free Code Camp, or substantially all of its assets are acquired, customer information will be one of the transferred assets, and will remain subject to our Privacy Policy.
", "If you are a California resident, you are entitled to prevent sharing of your personal information with third parties for their own marketing purposes through a cost-free means. If you send a request to the address above, Free Code Camp will provide you with a California Customer Choice Notice that you may use to opt-out of such information sharing. To receive this notice, submit a written request to team@freecodecamp.com, specifying that you seek your "California Customer Choice Notice." Please allow at least thirty (30) days for a response.
", "By using this site, you signify your agreement to the terms and conditions of this FreeCodeCamp.com Privacy Policy. If you do not agree to these terms, please do not use this site. We reserve the right, at our sole discretion, to change, modify, add, or remove portions of this policy at any time. All amended terms automatically take effect 30 days after they are initially posted on the site. Please check this page periodically for any modifications. Your continued use of FreeCodeCamp.com following the posting of any changes to these terms shall mean that you have accepted those changes.
", "If you have any questions or concerns, please send an email to team@freecodecamp.com.
", "", "
We strive to be helpful and transparent in everything we do. We'll do what we can to help you share our community with your audience.
", "Build it yourself for free with no code
", "https://www.blackbaud.com/fundraising-crm/etapestry-donor-management
", " ", "http://www.regpacks.com/volunteer-management
", " ", " ", "https://www.ezofficeinventory.com/industries/non-profits
", " ", "http://www.unleashedsoftware.com
", "http://www.efrontlearning.net/
", " ", " ", "Contributing to our field guide is a great way to establish your history on GitHub, add to your portfolio, and help other campers. If you have a question about JavaScript or programming in general that you'd like us to add to the field guide, here are two ways to get it into the guide:
", "", "
Our translation effort is driven by bilingual campers like you.", "
If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.
", "Translation is an all-or-nothing proposal.", "
We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.
", "In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.
", "If you're able to help us, you can join our Trello board by sending @quincylarson your email address on Gitter.
", "The last 800 hours of free code camp involve building projects for nonprofits. These nonprofit projects will involve lots of meetings, correspondence, and pair programming, all of which will be conducted in English.
", "You will need to be good enough with English to be able to participate in these meetings.
", "We are translating our challenges into English is so that you can focus on learning to code, rather than focusing on learning English.
", "Many non-native English speakers have succeeded in our nonprofit project program. With some effort, you can, too.
", "It will be video-driven, with multiple-choice questions.
", " ", "These videos will be short - generally less than 6 minutes long.
", " ", "We are considering focusing the mobile experience on code interview questions. Answering these common questions is a very different skill from coding itself.", "
We're still in the process of designing this. We'd love to hear your input.
", "Here are the challenges that will make up our Basic Front End Development Certificate Program:
", "This won't be a new curriculum - it will just be the first 200 hours of our full stack JavaScript curriculum.
", "All campers who have already completed these challenges are retroactively eligible for the certificate!
", "