I’ve created this programmer’s guide for practical reasons. The first is trying to help people who are willing to learn to code by guiding them step-by-step.
In this sense, I’ve been talking with people who got into programming without having any sort of technical background and then started working in the field after only 3 months.
One of them, Dan Avramescu earns, as he says, more than he’d make from architecture 5 years from now, in Romania, a country where the average wage is $400. The other guy, Cristian Simion works as a freelancer and earns more money as a freelancer and has contracts with clients from the USA.
- Do you see yourself spending all your day in front of a computer?
- If money wasn’t an issue what would you love to do every day for the rest of your life? Maybe you should do that thing because that will bring you true happiness.
Still here? If the idea of coding sparks interest for you, let me give you a little extra information.
Why Is Coding a Cool Thing?
- Technology is the base for innovation in all industries. This means you can work with people who are building the future.
- Everyone is looking for coders. By mastering the skills of a coder you can be sure you’ll always have something to do. These international skills will allow you to blend in every culture.
- People may try to convince you programmers are cool which is probably true.
- Being one of the highest paid jobs on the market, it comes with great perks.
- You won’t need any diploma or formal education to practice and work as a coder. This is something you can learn in different ways. I’ll give you a presentation on them later on.
All righty, there are probably 1000+ reasons to do this. The reality is that you should find them by yourself. Keep in mind that this is a long-term process. The learning curve is hard. You will encounter several problems and most likely you will be tempted to quit (it’s normal). When you are in a marathon and you get real tired, the only thing that will keep you going is to keep running. The energy will come back.
I’m positive that programming is not for everybody but everybody can learn. The secret is to work, work, work. Train more than others. Isaac Asimov wrote and published over 400 books by typing non-stop at his typewriter from 6 am every morning.
Go to work regularly. Art is hard. Programming is hard. Making a difference and following your dreams is hard!
My friend who I was talking about earlier, learned to code and got a job in 3 months by doing this every day for 6 to 8 hours.
What You Need to Begin
Let’s see the minimal requirements for learning how to coding:
- Basic Mathematics
- Basic Computer Skills
- Internet Access
A few Things You’ll Learn:
- Problem solving
- A business perspective
- Organization & planning
- Tech Skills (of course)
Where to Learn From
In the process you can follow the classic path, going to college and learning there. If you have the time and resources, this is definitely a valid option. But there’s a possibility this is not the smartest move for you as it is time-consuming and you will learn other stuff you won’t necessarily use.
So let’s hack this:
- Go Online
There are all sorts of online courses and platforms that can help you get started. Here are some of my recommendations:
Tons of subjects (as their front page says, “You can learn anything”), including many on computer programming. A few courses are offered for younger kids, too.
Topics taught: JS, HTML/CSS, SQL, much more
Entirely free, though you have the option to donate. Based on interactive tutorials, where you read a lesson and type in code. Lastly, “run” it.
RubyMonk has one beginner course option, two intermediate, and one advanced.
Codecademy is where most people who are new to coding get their start. If you haven’t been to the site yet…where have you been!? The platform revolves around interactive learning; that is, you read a little, type you code right into the browser, and see results immediately.
Teaches coding first through an established curriculum (approx. 800 hours total), then by giving you hands-on experience working on projects for nonprofits.
Codewars offers a fun way to learn coding. With a martial-arts theme, the program is based on challenges called “kata.” Complete them to earn honor and progress to higher ranks.
The focus here should be getting access to the right tutorials, quizzes, and communities. As you can see, there are many platforms you can choose from. The best thing you can do is to test each platform and choose the one that fits just right.
I’m not recommending w3schools, forums or other places where you can learn just the code.
The Cooking Analogy
Think about having to cook something you’ve never cooked before. The first thing you do is check for a recipe. After that you gather all the ingredients and instruments you need to start and you follow the instructions. After a while, you can come back and add new flavors. It doesn’t matter how awful it turned out. You experiment. If it’s good, bravo! See how you can optimize it in the future.
Programming is often similar to cooking. You write the recipes, the computer follows them and the result can be astonishing.
- Finding a Mentor
At one point you’ll want to put your skills to work. That’s why it’s always good to have a professional network you can activate for opportunities and resources.
If you don’t know someone but you’d like to, write to a complete stranger you truly admire. You can use an email such as:
Subject: Hello X, I would like to pick your brain
My name is John Snow and here’s why I’m reaching out to you:
I admire your work, it really inspires me. That’s why I thought it would be a great idea to write to you and ask for an advice.
[ here insert 1-2 paragraphs about your background]
My plan is to learn to code every day so I can practice it. Do you have any advice for my journey?
Thank you for your time!
This email could be the beginning of a new interesting conversation that can lead to a meeting, a mentoring program, a partnership or just something new. People appreciate when you reach out to them for an advice. Don’t ask for a job. Just start it casual. And when you get that feeling you get the professional healing.
- Visit Technology Hubs and go to Local Meetups
By participating in events you’ll expose yourself to communities. By this, you can understand their behavior, their lifestyle and you can always chat about what you do.
For hubs, I advise you to go to Tech Hub or do a google search for “local working hub”.
For industry and topic-related events, I recommend using the Meetup app.
- Apply for Offline Classes on Learning Front-end/Back-end
These classes are more expensive than learning online but you’ll have the advantage of working with real people and getting tailored help. Furthermore, you’ll meet people on the same level and skill as yours.
As you can see there are many ways you can learn coding. The important thing is finding what suits you best and mixing it with human interactions.
Programming is a lifetime commitment. Trends and technology evolve but learning the evergreen content is always the same.
Programmer’s Guide: How to Learn Efficiently
How do you learn the art of programming? Is there any step-by-step process that grants you the fact that you will become good?
All coders write code. Every day. Repeat the process until you understand what it’s about. It takes a lot of trial and error.
The 10k Hour Rule
They say you need around 10.000 hours to become an expert in a field. That takes 10 years of your life. But this doesn’t imply you need 10 years to get closer.
The Pareto Principle or 80/20 rule is based on:
20% input = 80% output
What does it mean? For example, 80% of results are given by 20% effort. That’s why my advice is to learn smart and get the essentials.
This means that if you need 10 years to become an expert in programming then you’ll need 2 years to reach the 80% expert level. This is actually not so bad. By following the rule, in 10 years you’ll be almost an expert in 5 fields.
Today’s marketplace is looking for multidisciplinary people. Place yourself in the next 5 years. Nobody is looking just for a coder, but for a complex person who will know how to apply these resources to a field (e.g. in the biotechnology field). You cannot avoid the change. This is the only constant.
You’re all pretty much fucked. You don’t know it yet. But you’re the NINJA generation. No income, no job, no assets. You got a lot to look forward to.
A classic way to learn web design/front-end would be:
In the first phase try not to use special text editors. These are indeed useful and they will be so easy to use . But, you may find yourself not remembering any line of code because of the autocomplete function.
Here’s a good learning schedule. This is good especially if you have a job or just a few hours available per day.
Time: Minimum 4h / day
First 2 weeks: Learning HTML and CSS
The 3rd week: Learning a framework (e.g. Bootstrap)
The first 3 weeks are for training. You can make a great design for a web page with Bootstrap. It would be really great if you could make a fresh page that can be used everywhere on the internet (e.g. a login page).
Angular website example: netflix.com
T-Shape VS. Full Stack
Is it better to be an expert in a single field or to know a little bit of everything like a Jack of all trades? If you follow the Pareto rule then it will be easier for you to become a T-Shape developer. The T represents your expertise.
The Concept of T-shaped Skills
The vertical bar on the T represents the depth of related skills and expertise in a single field, whereas the horizontal bar is the ability to collaborate across disciplines with experts in other areas and to apply knowledge in areas of expertise other than one’s own.
To become a Full Stack Developer implies knowing front-end and back-end.
Good Tools to Organize Your Time
I hope you will not get lost in the chasm of things you have to learn. I’m gonna help you cross it. Everything you need is a little bit of task management. The secret is to take baby steps and set realistic objectives you can achieve that will bring you satisfaction.
Here are some good organizing tools to use:
- Google Drive or Quip – you can write in a cloud everything you have learned and access it at any time
- Trello – a task organizing system based on cards. Here you can implement the Kanban system.
You can also check this comprehensive list of productivity tools for web designers.
How to Make Your Skills Shine
After you’ve mastered the key to front-end coding, you’ll find that it’s the perfect time to make something with what you know.
If you’re looking for a full-time job or just some freelancing, you’re gonna need specific assets that you’ll present to the people. You’ll probably need a resume.
How to Make a Resume
Don’t worry if you don’t have any examples to attach to your portfolio. You can easily chat about yourself, what you know, things you like, why you got into coding and so on.
It always starts with WHY.
If you’re looking for a full-time job you’re in for a treat because people are always willing to hire entry levels and invest in their education. I don’t recommend you trust those boring old platforms but rather discuss with people face to face if you want to apply for jobs.
Send the companies you are interested in an email in which you can tell them you admire what they do and ask them if there’s an opening position for you. You can even propose starting with an intern position.
If you’re tempted to work as a freelancer, you’ll find endless articles on what this lifestyle is about.
You’ll likely be in a bit of a struggle before you’ll find your first project. The perfect start is finding little project platforms you can apply on such as Low Noise / High Signal. For your first projects, you can work not so much for the money but for the experience. Thus you can ask for testimonials you’ll include in your portfolio. Here’s an example of a video testimonial from one of the programmers I’ve talked to.
What matters the most when you’re working as a freelancer is the project flow. Whether there’s a loop of clients of just one who is constantly giving you a series of projects the main idea is to stay out of your comfort zone.
The difference between being in a company and being independent is that you’re able to manage your time as you desire when you’re on your own. If you are in a company you’ll get promoted, you’ll go to all sorts of team buildings, you’ll even have a coworker to rely on and a manager who’ll make sure you’ll always have something to do.
When you’re a freelancer you don’t get any of that. That means you’ll redirect your focus towards your objectives: how to innovate your work, which projects to choose, which one to promote, which one to give up, how to predict the future. You’re the one who makes things happen! Beginning something is much more difficult than it seems.
When you’re a freelancer, like an entrepreneur, you don’t sit around and wait to follow a map. You get rewarded for drawing a map and helping others following it too.
Coding, as any other area of activity, implies a certain lifestyle. When’s the best time to begin you ask? Well, there’s no time like the present.
Don’t forget to read. Read about what fast working means, what a lean startup is, how to make Lean Development. Now’s the time to enter a community, go on forums and be active.
Here are some of the communities I prefer:
Here is one of the largest open source community in the world. You can contribute to projects, track the progress and build on great ideas.
Hacker News is a social news website focusing on computer science and entrepreneurship. It is run by Paul Graham’s investment fund and startup incubator, Y Combinator. In general, content that can be submitted is defined as “anything that gratifies one’s intellectual curiosity”.
/r/web_design is the place for exploration and discovery of all things web design, development and the life cycle of the web designer. They welcome beginners and veterans alike to contribute useful and informative posts, ask questions or engage in discussion.
Product Hunt surfaces the best new products, every day. It’s a place for product-loving enthusiasts to share and geek out about the latest mobile apps, websites, hardware projects, and tech creations.
Designernews is a community of people in design and technology. Launched on Dec 31, 2012 as a place to discuss and share interesting things in our industry.
- Coders at work
- Code Complete
Here you’ll find a great list of front end development books.
Books on Personal Growth and Business Fulfillment
The fact that programming has a major impact in every industry is no surprise. If you’re planning on taking part of the coolest projects you’ll just have to get the big picture first.
Keeping strong relationships with those around will make your life easier. Below you’ll find a list of books which I consider very useful for understanding the business environment and also tips on how to relate to people:
- How to Win Friends and Influence People – Dale Carnegie
- Lean Startup – Eric Ries
- Tribes – Seth Godin
- Zero to One – Peter Thiel
- The Innovator’s Dilemma – Clayton M. Christensen
Phew! It’s almost over! I don’t want to force you into becoming a programmer (even though I am pretty persuasive). I want to show you that nothing works without being a bit nosy. Opportunity and learning start from curiosity. It makes you want to make things happen, examine, refine and repeat the process. Risk being curious and take action!
The #curiouscoder Challenge
Congratulations! You have finished the programmer’s guide. If you’re about to start coding, share your experience with others and inspire them to go further. Tell your story and add the #curiouscoder hashtag.
Coding destroys the perfect and then it enables the impossible. Good luck!