Hi, I’m Martin.
As CEO, former CTO, and co-founder of CareerFoundry, I wanted to write a blog post today for people who are desperate to learn how to start coding and launch their own business, but have no idea where to start.
When I first wrote this article, I had only been coding for less than six years. In that time I founded my own startup with my co-founder Raffaela Rein, and was working full time as a programmer and CTO for my own company, making an impact in a fast-paced, creative and fulfilling role.
At the time I had a team of thirty people in our Berlin office. Now, the company has grown to over 120 employees, plus a whole host of freelancers working for us all over the world, and the company has a remote-first policy, allowing us to work from anywhere in Germany. I have never been happier than I am now—fully in control of my own company and doing something that I love.
- Where did the idea for the company come from?
- What’s my story, and how did I learn to code?
- A CTO’s tips for how to start coding
- How my mentor helped me start programming
- How did the coding community help?
- Why learn to code?
- How do I achieve career progression as a freelance web developer?
- What is a web developer’s lifestyle?
- What I mean by “beautiful code”
- What sort of person is attracted to a career in web development?
- What personal attributes are common among coders?
- Can anybody learn to code?
- Coding languages—where to start
- Next steps on your coding journey
1. Where did the idea for the company come from?
The idea came from my own experiences of learning how to code.
Realising how difficult it can be, I wanted to help others who were struggling to learn coding to change careers and launch themselves into impact-making roles either freelance, as entrepreneurs, or in other exciting companies.
“Learning code can directly impact career prospects by giving students highly relevant, in-demand skills that can make them immediately employable.”
2. What’s my story, and how did I learn to code?
For ten years I worked as a product manager at Nokia and other startups in Berlin. During this time I had loads of great ideas for startups—or what I thought were great ideas—and I was desperate to launch my own business, but crucially:
I didn’t know how to code! It meant I could never realise any of my ideas.
I had always wanted to run my own startup, but friends who were interested in joining me weren’t willing to quit their jobs to start a business with me. And without coding skills, I felt like I couldn’t get started on my own.
So I realised I had to learn to code—I began with free tutorials on Codecademy. And this is where I’d like to give you my first piece of advice about learning to code as an absolute beginner:
Try out free online tutorials before paying for a programming course.
Now why should you try out free online tutorials before paying for a programming course?
The answer is because you’ll find out very quickly if you like it or not. And that really is the key to this career: enjoyment. Some people love coding.
I’m one of them. But if you don’t love it, you aren’t going to find it easy to learn, or satisfying when you solve problems. You will simply find it a chore.
“If you are passionate about programming then you are off to a great start with your career—you’ve just joined a vast, yet still elite group of people that will always, ultimately, love their work. You might actually think about finding yet another passion to balance it out. My recommendation: motorcycles.”
Marcin Stecki, CareerFoundry Mentor
Learning Ruby certainly wasn’t an overnight thing—it took about three months for me to get my head around it, but learning how to code Ruby showed me what I was capable of doing, and how much I enjoy coding.
CTOs and coding: some advice
It can be tricky to balance being a coding CTO with other responsibilities—especially if these duties expand as your company starts to grow.
While it’s great to be able to still be coding, getting a chance to do it can be tough. And I’m not the only CTO who thinks this:
“When you start as a technical founder, you are really a developer, quickly becoming a team lead. The team lead does leadership things but still codes and does very little management tasks. Then depending on how the company grows, usually you become a manager and now you have very little time to code.”
Matt Aimonetti, co-founder and CTO, Splice
In fact, CTO Marek Gajda advises to at some point step away from coding in the role, no matter how much you love doing it.
He reckons that diving deep into code and solving “microscale problems” can hold you back from seeing the bigger picture and the strategic thinking required as head of the company’s technical capabilities. All-in-all though, it almost goes without saying that knowledge of web development is crucial to this management role, as I’ll discuss later on.
Long before you reach that point, you’ll have to learn how and where to start programming in the first place! In order to embark on your coding love affair, I have some pieces of advice for you.
3. A CTO’s tips for how to start coding
You know the most important thing I learned? You have to really want it and you have to code every single day while you’re learning.
Here are some of my tips about how to make this happen:
1. Make yourself a schedule and stick to it!
I did an hour in the morning and an hour in the evening, at the same time every day. If you don’t have a schedule and an end goal, it will be very hard to become proficient and you’ll lose your way. Which leads me to my next piece of advice:
2) Have a goal
When you’re learning how start coding, having a goal in mind will give you the incentive you need to persevere.
My goal from the beginning was to start my own startup and be my own boss.
I first built an app with Ruby on Rails. I thought it was a great idea, but none of my friends really used it, despite my insistence. I thought I’d got the new Facebook on my hands, but they were yet to be convinced.
“It is normal to get stuck a lot. One of the best ways to learn coding is to spend hours trying to get something working when it just won’t. If you survive the frustration, the satisfaction is unbelievable. But you also never want to go through that again, so you remember.”
Oli Barnett, CareerFoundry Mentor
Despite my friends’ lack of enthusiasm in the beginning, building this app made me realise that I loved what I was doing. I became completely obsessed with it.
In turn, it made it a lot easier to learn to code when I was enjoying what I was creating so much. I was forced to learn a lot of coding to meet my goal, but that was all the more enjoyable for me.
3. Find a mentor
The idea behind this company’s mentor-centric approach to learning web development came directly from my very own experiences of learning how to code.
If it hadn’t been for my mentor, there’s no way I would have gotten as far as I did and I wanted to pass the wonderful experience I had of learning with a mentor onto our students.
4. How my mentor helped me start programming
For me, my mentor was a friend; an experienced developer who I was able to ask for advice, tips, and tricks when I was getting stuck with my code.
The difference between learning with a mentor or without is, quite simply, speed and enjoyment.
Of course it’s possible to teach yourself web development from scratch, but the process will take you twice the length of time and it will be a struggle.
With a mentor, crucially, you learn best practice, which means you’ll only have to learn these skills once, rather than relearn them again when you join a company, or work with someone else’s code.
Now, having worked as a Product Owner I do have a technical background, so for people like me it’s perhaps less of a leap to learn how to start coding, as the concept of programming is not completely unfamiliar.
I had begun to learn the basics already and had worked with web developers, so logical thinking was not new to me, and that gave me an edge. However, I still found the input from my mentor invaluable!
If you don’t have a technical background then it’s even more important to have someone who can guide you through.
As a general rule, I would say a mentor is important for everybody hoping to learn how to start coding, from complete beginners through to more advanced learners.
We’ve seen the results with our students: engagement and motivation levels are higher.
For example: I didn’t really know which tools to use on my Mac. I didn’t know how to deploy my website. I didn’t know what was or wasn’t popular.
You can find how to do these things using Google, but which of the many options are best practice? With a mentor, that process is speeded up enormously.
“It is possible to teach yourself coding. The best scenario seems to be when you don’t have a full-time job or family responsibilities and are disciplined enough to spend eight hours or more doing this every day. Doing it on the side while you have a full-time job is a tougher situation, but I believe that can be done as well, if you are motivated enough.”
Todd Wasserman, Mashable
But the most important thing I learned with my mentor was…
…how to write good code!
Before I met my mentor, I didn’t understand why it was so important to write good code. But my mentor taught me best practices. The reason this is so important when working as a programmer is because other people have to be able to read your code. They have to be able to dive in and fix, alter, and update your code.
If you have written your code without taking best practices into account (as I did when I first started) that code is practically useless to anybody else.
And when you work as a programmer you are generally working in a team, so it’s crucial that other people understand how and why you’ve written something the way you have.
Best practices also help with things like page loading times; you may have created a website correctly, but if it’s coded in a less than efficient way, the page could take a long time to load.
5. How did the coding community help?
Community for programmers is also important. Having people to talk to and ask questions of while you’re learning can make a big difference to your motivation and success rate.
When I was learning I mostly used the online community at Stack OverFlow for finding solutions to problems that I had, meaning syntax-related challenges.
But it was really my mentor who became my “community” as it were, from learning from his experiences working as a programmer that I learned about working in teams and all of the other facets of web development that one doesn’t learn from a free online tutorial.
So, to summarise—why do you need a mentor:
- It improves the quality of your code—you learn best practices.
- You stay on track—you’re accountable to someone other than yourself.
- It’s faster—what could take you a year by yourself can take just 3 or 4 months with a mentor.
- They can tell you which mistakes to avoid and how to solve problems by yourself.
- They teach you how to look for solutions to problems, so you spend less time trying to find good resources yourself. Remember, they’ve already been in your shoes!
These are all things that you won’t learn with free online tutorials but that are crucial to your success as a web developer.
So now you know my story of learning to code, let’s look at how we can get you coding.
6. Why learn to code?
First let’s look at the reasons for learning to code that don’t involve employment, that involve having fun!
We’ll come to the benefits of learning code for getting a job a bit later.
1. Coding Is Fun
Coding is a lot of fun! Not only that, it’s very rewarding to solve issues and create things yourself.
I come to work every morning and I look forward to the coding part of my day!
There are a lot of challenges to overcome when you start. Problem-solving takes up the majority of your time—but you do learn how to overcome these, and when you do, you begin to enjoy yourself and feel rewarded for your efforts.
Coding allows you to be creative and build beautiful websites. You begin to notice the shift between being a consumer and becoming a producer. Before you start learning how to code, you’re a consumer; afterwards, you’re a producer.
As a programmer you are directly making an impact on the world around you, as your job involves making things that other people are consuming. This changes the way you look at the internet and your role within it.
2. You get to do cool hobbies and personal projects
The wonderful thing about having programming skills is that if you have an idea for something you want to create, you can just go ahead and create it exactly as you want and completely free of charge.
You can be experimental and try new things out and have fun while you’re doing it. As you pursue your own projects, you’ll be learning all the time, having fun and being creative. What you teach yourself at this stage could prove invaluable later when you’re building websites for money.
Not only is the software free to download, the hosting is also free of charge these days. Creating a website for yourself won’t cost you anything except your time, but you’ll be enjoying the process anyway so it won’t feel like work!
So if you have ideas, put them out there and, like I did, see if other people like them!
You can build things for your friends or family or build a development portfolio website for yourself. Learning how to code a website puts you in control so you’re not paying anyone else to do the same thing. You can do it all yourself and make it exactly how YOU want it.
“Start small with a self-hosted WordPress site and then slowly break it and make it better. Large projects have a habit of becoming demoralizing. Small wins early on are crucial.”
Eric Binnion, Man of Hustle
3. Learning coding skills gives you professional advantages
So we’ve looked in-depth at the benefits that skills in web development can bring to your personal life, but let’s now take a look at what these skills can do for your career. Here’s a brief list of the main advantages people find once they’ve trained up in tech:
- You can start your own business.
- You become instantly more employable, as employers in every industry are looking for employees with tech skills.
- You can go freelance with these skills which gives you a better work/life balance, autonomy and flexibility.
- You can manage tech teams with full knowledge of what they’re doing, and of what you can expect from them.
“Studying to code is not like studying ‘physics’, ‘literature’ or even ‘math’. It’s an ever-evolving industry and sometimes it feels like a journey. You always learn new things so it’s important not to be discouraged if you don’t know something or if you feel that you’ll never be experienced enough to understand ‘everything’.”
Amir Friedman, CareerFoundry Mentor
You’ll find that knowing how to code is generally a career-booster, whichever industry you work in and whatever position you hold; it’s just a good skill to have and to highlight on your CV when you’re looking for work. If you do hope to work in a tech company, it’s almost a basic requirement.
Knowledge of programming is essential when you’re hiring developers and managing schedules. I mean, if you don’t know programming, how can you do the following things?
- How will you know if that prospective employee is correctly qualified?
- How will you know if they know what they’re talking about if you don’t understand how programming works?
- How will you know how long that project will take, or how many members of your workforce will be needed to complete it if you don’t have some rudimentary knowledge of programming?
Even if you’re not looking to work in tech, these programming skills are still incredibly valuable because tech is now touching every industry—from the sciences to the arts, from retail through to business.
These skills are never going to die out or become less valuable. Your market value will only continue to increase once you’ve learned how to code; your knowledge and experience will only be valued more highly, never less. You will always be able to build on what you know, so don’t worry too much about new programming languages.
Once you’ve learned one language, you’ll find it’s a natural progression to the next one.
4. Freelancing opportunities
As you begin to build up your programming portfolio, you may consider taking on freelance work that comes your way.
Whether this be for friends and family, a local school or charity, by taking on small jobs you are able to practice your skills and build on your experiences, but you’ll also able to see if freelancing full-time is something you might be interested in professionally.
A misconception that I often hear about freelancing is that this is only something you can start once you’ve mastered a skill, or after you’ve been working for a number of years in a field.
Freelancing is everything from very, very small jobs, to long-term contracts with huge corporations.
You can start freelancing by designing a website for a restaurant or café on your street, or building a website for your mother’s sewing group. Freelancing is a great way to build up your experience—not just in coding but also in working for yourself.
You learn how to manage other people’s expectations, deadlines and your own projects. These are incredibly valuable skills to have and no one can work freelance (successfully) without learning about these things along the way. These skills also come in very handy as a contracted worker too.
“Programming is like art, the only way to learn is to practice; no one can paint like Van Gogh on their first try. So make a mess, experiment and just get stuck in with building your own projects, even if they won’t turn out perfect.”
Edward McCaughan, Web Developer
7. How do I achieve career progression as a freelance web developer?
Many people start off their freelancing careers working on side projects alongside a part-time job, or doing small jobs for friends or local businesses when they have the time.
Most are then able to garner enough experience to go completely freelance and become what’s known as a “professional freelancer.”
It’s just a question of building on your experience, growing a network of clients, getting recommendations, and applying for freelance contracts with larger or more established firms.
Once your name is known in your field, you’ll be able to charge a higher rate, too!
“The most enjoyable thing about being able to code is the creativity that this profession offers. You build marvellous things from nothing. You give flesh to what you are dreaming about. You turn your or other people’s ideas into fantastic applications and everybody else believes that you are an awesome magician. Because you really are!”
Panayotis Matsinopoulos, CF mentor
8. What is a web developer’s lifestyle?
The answer here is simple: a coder’s lifestyle is whatever you want it to be. Although web development has the reputation of being a solitary profession, actually it’s crucial that a developer can work well in a team. However, that doesn’t necessarily mean facetime.
The good thing about working in tech is that you don’t have to be in an office or speaking to your colleagues all the time to work together; you can work from anywhere in the world. As global working culture continues to change, becoming a freelance web developer gets easier to do.
As for working with other developers, peer programming can actually improve the quality of the code. When you’re working alone you might not write the most beautiful code because only you are reading and writing it, however if you know that someone else has to read it you will always use best practices.
When you’re working in a team you make more effort to be understood and for your code to be easily read, updated, and maintained.
9. What I mean by “beautiful code”
When I talk about beautiful code, I mean code that uses the correct indentation and follows the rules.
For example in HTML if you don’t indent your code correctly it can be very hard for other developers to read it and if that’s the case, it will slow down the whole process of updating or maintaining that site.
It’s not much fun going into someone else’s code and trying to figure out exactly what they’ve done; it’s actually a lot more fun writing your own code from scratch! So if you are handing your code over to another developer, or if they need to update or maintain your site, make sure it’s as easy to read as possible, leaving comments on how you’ve solved problems to guide the way.
Code can vary dramatically, and your way of doing it might not be the same as everyone else’s.
However much it might feel like you are working on your own and to your own rules, at some point someone else will always have to read your code, so make it beautiful and follow best practices. Communication is key here, so be clear about how you ended up where you did and keep the quality high, for your sake and everybody else’s.
Communication is crucial in programming. Speaking to a so-called “layman” about the details of your code takes some practice! When you’re explaining your processes to a potential client, you want to be clear and understood. Practice by explaining it to someone in your family or a friend first and see if they understand what you mean.
Communicating well as a freelancer can make the difference between you landing that job or not.
“Publish something small early on. To understand how things are working, just get something live in your first week of coding. You will learn a lot from the problems you might run into.”
Ben Gögge, CF Student
10. What Sort Of Person Is Attracted To A Career In Web Development?
Coding has achieved a cult-like status in recent years, due to the lifestyle working as a coder can and does afford developers.
Working in web development gives you a lot of freedom, which is what many people are now seeking in their day-to-day lives, particularly young people who are used to working with mobile technology on the go. This career choice also gives you autonomy and the freedom to make your own decisions regarding workload and project management.
As a developer, you can work from almost anywhere in the world and this flexibility is enormously appealing as work/life balance becomes increasingly important for the next generation of workers heading into their first roles in the workplace.
11. What Personal Attributes Are Common Among Coders?
- Love of problem-solving
- Desire for innovation
- Logical processes
- Rational thought
- Have interest in design (especially frontend developers)
12. Can anybody learn to code?
In short, yes, anybody can in theory become a coder. But the key is enjoyment. If you don’t enjoy it to start off with then you will never enjoy web development as a career choice. This is why it’s very important to try it out first with a course like Codecademy.
A love of problem-solving and a logical mind will certainly help you, but in order to stay motivated and to keep on learning you’ve got to be enjoying yourself, because it’s not easy.
Anybody can learn to code, and now is an amazing time to do it. With so many great articles, videos, communities, and mentorships available online, there are great resources available for all learning styles.”
Geoff Evason, Team Lead at Canva and ex-CareerFoundry Mentor
13. Coding languages — where to start:
In my opinion, HTML is definitely the place to start for beginners learning to code. The reason? You can see it directly in your browser, so you can see the output of what you’re doing straight away, which is a very rewarding experience. This is the very definition of outcome-based-learning, and what we value so much here at CF.
A personal highlight for me is watching somebody create their first webpage. The joy and surprise on their face when they see what they’ve achieved! Knowing how to code HTML is also slightly easier than other coding languages because it’s a markup language, which means it’s very readable.
If you read through it you can understand it because it uses English, whereas a coding language like Ruby can look like Greek the first time you see it because it uses a totally different kind of writing.
Not long after you’ve started learning how to code HTML, you will realise quite quickly that you’ll need to use CSS to style it; this means using colours, fonts, choosing the placement of icons on the page and so on. If you don’t have CSS, your webpage will look very dull with the default HTML styling, so CSS is always the next step.
In this video, Abhishek starts you off on learning to code CSS:
“Don’t try to master every language/framework or only restrict yourself to one. Have one or two ‘specialities’, understand the rest and be ready to use them. Mastery of a tool is useless if it’s not the tool you need. Ability to use any tool is what makes a person handy!”
Joseph Roberts, CareerFoundry Mentor
Ruby On Rails
This is a backend language, which means it takes care of everything that’s happening on the server (so all of the calculations that need to be made before you even see a webpage).
It became a very popular programming language because it is easy to create something quickly with it. Before Ruby, a coder would have to do a lot of coding on the server, but with RoR a lot of things are taken care of automatically because of the systematic way that it’s built.
The thing about Ruby on Rails is that it’s a very structured language, so you can’t really make mistakes. After learning RoR I thought I would have to delete all of the code I’d written as a beginner, assuming it was unusable, but actually even the code I wrote from the very beginning wasn’t so bad.
If you’re looking to set up your own company, or work for a startup, then Ruby on Rails is definitely the language to learn. However, if you’re thinking about working for a larger, more established firm, it might be an idea to learn PHP as that is a common language among conglomerates and larger organisations, even though it is well over 20 years old.
The reason they’re still using this language is because that is how they’ve built everything in the first place.
Ultimately you will need to be able to read, understand, maintain and update their current code in the same language, so it retains its relevance.
So where to go from here…?
14. Next steps on your coding journey
So now you’ve read my story of how I got into web development. If I can do it, so can you!