CareerFoundry webinars cover the latest trends in tech, with a focus on UX design, UI design, web development, and app development. Each webinar is presented by an industry expert, and followed by an exciting Q&A discussion.
Mattan Griffel, Founder and CEO of One Month, was a non-technical founder with no programming experience who set out to teach himself how to code, and changed his life in the process. Since then, he’s taught over 45,000 people how to code. Many of them were absolute beginners. He was selected as one of Forbes’ 30 Under 30 in Education in 2015.
If you’ve though about learning to code but aren’t sure where to start - you’re in the right place! In this webinar, Mattan answers lots of the questions you probably have, and debunks many of the myths surrounding coding and web development. If you need a kick up the ass to start learning - check it out. Watch the complete webinar recording below or read the Q&A transcript.
Watch the video: ‘What I Wish I Knew Before I Started Coding’
If you want to take the first step, have a go at our free 7-day web development course. Instead of coding in a browser simulator, you’ll get a step by step guide to set up your developer environment and get your first website live.
RYAN: So, Clare asked a really detailed question before the webinar started. Is it best to study some C in Computer Science, to succeed in web development? It looks like she took a course at Harvard to get a better understanding, and is asking if you think that’s a waste of time. She also follows up with, I’m coming from no background in IT, is my journey going to be difficult?
MATTAN: Yes so, obviously we’re all biased here; my opinion is that it’s absolutely a waste of time to learn C or C++ as a beginner trying to get into coding or web development. And the reason for this - I mentioned it a little bit or I spoke to it a little bit when I talked about the progression of languages, C and C++ are really old languages, they’re very low level in the sense that they’re very computer friendly, they’re not very human friendly. I’ll give an example of this. When you’re working with C you have to deal with something called Memory Management which is basically telling the computer, everything you’re given, how much space do you want it to take up.
That means you have to learn a huge amount of stuff about how computers work before you can use C to do anything really useful. So when you look at a lot computer science programs in college, what they’ll do is they’ll spend four years teaching you a very basic low level language like C or Java which is admittedly very powerful, you can do stuff like build an entire operating system with this language but you have to have learned it for four years and even then there’s still a lot that you don’t know how to do. But with something like Python or Ruby you can build an entire website in like less than a day with very little understanding of what’s actually happening below the surface.
And there’s obviously pros and cons with that. I think it’s a good thing, especially as a beginner, to not have to learn a huge amount before you’ve started, before you can actually do something. I don’t think that it’s all that important that you learn about Memory Management and how this works below the seam. With stuff like Python or with Ruby the language handles all that stuff for you. Now there might be people who say, you’ll never be able to write really fast applications unless you learn the low level stuff, and that may be true, like there’s some problems that you might need to see it to be able to solve quickly enough.
An example of that is when Google first started out they wrote all their web scrapers that went around and scraped all these websites, with Python, and then once they got to a certain size they rewrote all of them with C, because C is just so much faster. But they were able to build a huge company with python to begin with and it wasn’t the most optimal for the job but I don’t think they ever really would have gone as far as they did if they hadn’t done it that way.
So yes, as a beginner I really don’t recommend learning something like C or Java or C++, I really if you ask me, I think there are two good starting languages for beginners, it’s Python and it’s Ruby. Not because they’re beginner languages, I mean, there are software developers who spent their entire careers just doing Python or Ruby.
I mean you can do advanced stuff with it, Python has built interest and every start-up uses Python. Ruby is what’s used to build sites like Sound Cloud or Kickstarter or Groupon or Hoolo, I mean the biggest sites in the world use part of these things, but also they happen to be easier for a beginner to get into.
So I don’t think that it’s the kind of thing that… Just because somebody who is like an expert programmer tells you, you have to learn C because otherwise you don’t really know what’s going on, I don’t think that’s a good enough reason as a beginner for you to start out learning a language like that.
RYAN: Jimmy had something a little bit tied to that, he just asked the question right now, I‘ve done a little bit of coding but how do I know coding is definitely for me, I’m scared I’ll start to dislike the long hours in the office, so this isn’t for me?
MATTAN: Yes I mean, that’s a hard question to answer without saying just try it, I don’t think it’s, you know, like all the other things you’ve kind of to dip your toe in the water, there’s things about it that can make it a lot of fun depending on your personality type. But I don’t think that it necessarily requires long hours in the office.
First of all a lot of start-ups these days have remote cultures, I know, you know, Ryan, you’re remote right. There’s huge companies like GitHub that operate entirely remotely and that’s because of tools like Pivotal Tracker that actually make it pretty easy as a coder to work from wherever you want to.
The other thing is, I know a lot of developers who are freelance and they get to decide their own hours, and because coding is pretty well, it’s actually almost like an ideal lifestyle or maybe they don’t make as much as someone who would be working fulltime, but they do 10 or 20 hours a week, they do it from like a beach, right, remotely, and it gives them enough to cover what they need to cover.
But the real answer to that question I would say is you’ve got to just, you’ve got to just jump in and try it, and build something, and give yourself like a set amount of time. I like the one month period but you know, figure out how much time you have, you know, three months, whatever, but don’t make it too far ahead, get started and hey, even if you decide this isn’t for me, at least you’ll know something about how the services work around you that you’re using every day which I think is valuable in itself.
RYAN: As you’re mentioning, just try it, just get into it, just go for it. Stephen here asked a question, do you recommend building a project straight away as you learn?
MATTAN: Yes, so I think it’s important to take a project based approach, so the best resources that I’m familiar with are ones where you actually, they teach you by building something, as opposed to teaching you by doing a lesson and then giving you like some sort of exercise that is totally not useful or applicable to anything in the real world.
A great example of this is the Ruby on Rails Tutorial by Michael Hartl where he teaches you how to build Twitter from scratch and you just start out by building the application and along the way he’s teaching you about the important concepts. I think unless you actually tie what you’re learning into something that will be practical for you, that you can apply it to, a problem or making money or something like that, it’s going to be hard to feel that, you know, the same level of ownership in the thing. It can be hard when you’re first getting started because you have this idea in your head for what you want to build and you’re learning something here and you’re not sure how this is helping you get there.
So you might have to take a little while to sort of dissect the idea and break it apart and then learn the little bits and pieces, but that’s what a good teacher will be able to help you do. So I think it is, yes as soon as, you know, humanly possible, I think as soon as you have an idea of how you would start building that I’d definitely say, go for it.
RYAN: Valeria had a question here, the fear that she has is, I’m still learning process…I guess for me it’s more the fear of not having enough time to actually learn it. I’d like to know how much you learn in process, did you have a job while you’re learning the code, how did you manage your time?
MATTAN: Oh yes, so it’s a good question. My learning process was like this, I was doing a little bit of consulting on the side of my regular job and so I quit my job and I could do the consulting from wherever, and I actually, I packed up my bags and I moved to San Francisco for a month. So I stayed on my friend’s couch in San Francisco and I had a set of like, of guides that I knew I wanted to get through, it was like three online books and classes that a friend had recommended, and I basically just woke up every morning, went down to the local cafe and sat there with my computer from like 09:00 until 15:00 or 16:00 in the afternoon and I just spent most of my time going through this.
So for me it was a little bit more than just on the side after my fulltime job. I was able to dedicate more of my time of my time to it than that. But I don’t think that means it’s not accessible for people who do have a fulltime job or who have a family, and I’m sure, actually this has happened with CareerFoundry, One Month, we have a lot of people who have a fulltime and they can afford to quit, they have a family and so they have to put their kids to bed at home so they only have like 15 minutes at the end of the day right, before they go to sleep, and that’s fine, I think that should be totally fine, it just means you have to be, you know, really strategic and the time has to be structured really well.
I do think you can make a lot of progress with a very short time commitment if you use the right resources. So I don’t think it’s the kind of thing that requires like a nine-to-five for six months for you to be able to learn it. That being said, the model for a lot of these bootcamps is, three months from nine to five and it can be a really amazing way to learn it, it’s like the equivalent of immerging, of going to a new country and learning to speak a new language because you’re surrounded by the people, because you’re learning stuff really fast and that can be great for some people and it’s a really fast way to learn something. But it’s not necessarily the best for everyone.
RYAN: And then kind of take you back, Malcolm says, what is your typical day like as a developer?
MATTAN: Yes so, so I actually showed some of the tools, right. So a typical day as a developer is you open up your to-do system that you team uses, like Pivotal Tracker, you either pick up on something that you left off like a task that you started building the day before that you didn’t finish, or if you finished it you start a new one. You know, you can see the list on the top 10 things that need to get done which your project manager has organised for you. And basically you will pull off the next one that you know how to accomplish, so you take a look and you say that seems interesting to me, you open it up, you read more about what they actually want.
So let’s say it’s like a feature like users want to be able to get their receipts as a PDF, right. Maybe you have a product and you send those receipts as an e-mail but some people want a PDF so that they can print it out or send it to their boss or something.
So you open that up, you learn a little more about what, is there a tool they want you to use, how exactly do people want this to work, and then you just get started coding it. You basically clean it and you say this is mine, you can start coding it. And then when you[‘re done with it or when it’s ready to be looked at by someone you check it off and you say, this is ready for someone to take a look and maybe you start working on another one in the meanwhile until someone takes a look and gets back to you.
And they can give you feedback or they can say, no, this is good to go, then you save the changes, you push them live to the site and then they’re live. And that process so just starts over and over again. Typically companies will work on like a weekly or a every two weeks schedule where they create a whole list of things to do at the beginning of two weeks and then the entire team spends two weeks going through it and then you wrap up at the end of two weeks and you see how much you’ve accomplished and you plan out the next two weeks.
But yes, I mean, that’s basically it, it’s you and a bunch of other developers typically with a Head of Development and a product person and you’re all at the same code base building up those features.
RYAN: Geoff just send in a question real quick - what’s the point of having another developer look at your code, do they actually look at the code or do they test it and see if it’s working or how does that work?
MATTAN: Both actually, so there’s different web development processes that a lot of companies use. Some companies do what’s called Peer Programming, Peer Programming is when you, is when everyone has to code with someone else sitting next to them, also looking at the same code. It’s a really interesting idea, it was, Pivotal Labs is one company that kind made this practise famous, and they do it even though it’s more expensive, obviously to have two coders instead of just one working at something, what you end up with is a lot better code. It may not seem obvious but you can write good code or you can write bad code, and they can both accomplish the same thing.
Good code is code that’s easy to read, it’s code that is easy to change in case people have ideas or feedback, when someone else goes back to it later if they need to expand on it they understand what’s going on. So you end up with code that is better thought out if you have two people looking at the same bit of code and the second person there is someone to bounce ideas off of, someone to come up with different ideas for how to do something that you might not have thought about, and honestly just to kind of to keep you sane a little bit.
So if you have somebody reviewing your code, they can do exactly that, they can tell you, hey you did it this way but there’s actually a simpler, easier way to do that that is much more flexible, and they show it to you, and then you can incorporate that.
They might raise errors, they might find bugs that you didn’t see, you know, here’s a weird example of something that can happen if a user puts this info in, that you might not have thought about. And then you have people who actually can go through the site and check it and test it to make sure that it works, which generally, it actually goes by the name of QA, quality assurance, which just interesting because we have Q&A on the slide, but it’s not questions and answers. So those are some reasons why you might have someone else look at your code.
RYAN: Julie asks, what’s your favourite coding language, and then she followed up with what language is best for gesture and touch, on a touch screen?
MATTAN: My favourite coding language is Ruby, because it’s kind of a beautiful language and the community behind it is really, really awesome.
That being said, the question you asked is what’s the best for gestures and touch and the answer to that gets kind of in the weeds, which is to say if you’re building a mobile app, if it’s for iOS, then you actually will have to build the app in Swift, which is a programming language. There’s another option, Objective C, which is also by Apple, but they recently sort of stopped using Objective C because they released Swift, and it’s a lot easier for people to use and it’s better for beginners. They announced it like a few years ago; they were using Objective C before that.
So like Ionic is an example of one of these frameworks, PhoneGap is another example. In both those cases, by the way, if you have an application, if it is going to interact with a server you also have to build a web application that’s like an API for it to actually send and deliver information to your database. Usually that API is built in something like Ruby on Rails or Python. So with a mobile app it’s slightly different from what I explained, because you need to build two parts, the application and then the actual iPhone app, which handles the stuff like the gestures and things like that built in.
So all of that, I think if you’re a beginner, I still think it’s a good idea to learn something like Ruby on Rails or Python, because even if you want to build a mobile app you’ll have to build the server-side thing anyway. And you can always start out by building a mobile web application, which is just an application that looks good on your phone, and you can do swiping and gestures and stuff like that in mobile web apps, there’ libraries for that in Python and in Ruby. And then you can learn Swift and build the actual native app that will just communicate with the web application that you built. That was a good question.
RYAN: Yes, Harvey Tweeted a question, how can I make myself more appealing to future employers now while in a coding bootcamp?
MATTAN: Yes, so employers are definitely going to look at: what does your GitHub profile look like, are you engaged in other communities, do you push code changes, and do you go out of your way to improve other people’s code.
Do you show off a portfolio of sites? I definitely look at developers’ portfolios and I want to make sure they did something outside of just what they’ve learnt in a coding bootcamp, that it wasn’t just the final project of the school, but it was something that they did afterwards or an actual site they built on their own.
Other things I look for, especially for beginners, is how quickly are they able to learn something new. So if you have an example of, you know, you started on one language and then this challenge came up where you had to build a phone app or you had to learn some new technology, can you walk me through the story of what problems you ran into, how you tackled those problems and how long it took you. Because as a beginner you’re not going to know everything, so I want to know when I give you a problem you haven’t faced before: how long is it going to take you to figure it out?
Really, besides that, the other thing I’d say is just recognize that you’re not going to know everything, don’t pretend to know something that you don’t know, because it’s much more obvious. If you’ve just not run into something before just say, hey I have no exposure to that and I’d be happy to learn it and show willingness to do it. I find that to be a lot more comforting, than when someone says, ‘oh yes I’ve totally done that before’, and it’s kind of obvious that they haven’t. It’s okay to not know something and it happens, honestly, in the development community all the time.
RYAN: So I think we’ve got time for about two or three more questions, so I’m going to try and put a few questions together. Rachel and Nancy asked two different questions, but they’re kind of similar. Rachel asks, is it easier to start out as a freelancer or find a fulltime job? And then Nancy asks, do you like being a freelancer for other people, working at a full-time company or working fulltime on your own projects more?
MATTAN: So I think there are pros and cons to both. I think it can be easier, especially if you’re a much more beginner to do freelance, although it’s a little scarier. If you can put together a skill set that is useful for freelance work, such as building websites for people, that’s a great place to get started. So one of the reasons I think Ruby on Rails is a great tool for beginners, is it’s really easy to get a website live and if you’re on a site like Upwork, which you can create a profile for, you can bid for jobs and you can basically find other people’s development work.
If someone who doesn’t know that technology says I’ll pay you $1000 to build me a website, you can tick on that project and just learn while you’re doing it, you know, that is not such a hard project to do and you’ll learn along the way and often these people, you know, they can be forgiving, / they might not even know the specifics, you know.
Maybe you tell them it will take a month, even if you think it will take much less time, and then you give yourself room to make mistakes and things like that along the way. It’s also nice because you will start to get paid basically to learn the stuff.
It’s obviously good to work at a company, because you’ll learn their processes and you’ll interact with other developers. That depends on how good the process of that company is, so if they have a really good and built out like developer training programme, that’s a great place for beginners. If you’re the only one they’re hiring, that can be kind of overwhelming and a little bit lonely. So I don’t necessarily recommend that for beginners. And there’s also not that many companies that are kind of set up to take on entry level or junior developers, although there are more and more and usually the coding schools and bootcamps find them for you and they partner with them.
But it can certainly be a little hard as a beginner developer to get a job at like a company right out of one the bootcamps, so that’s usually where I recommend doing a little bit of freelance work to improve your portfolio, to give you a better chance of that, of joining a bigger company. And you asked about do I prefer freelance, I mean, I actually, I built a website, One Month.com, I still code on it, every single week, I have never worked as a developer for someone else, so I’m maybe not the best person to answer that question.
I’ve never done freelance development, I was a freelancer for marketing and for other stuff like that before, but, I can’t speak to how enjoyable it is to work as a freelance developer. Although it does, and I do know that your happiness will depend on your ability to product manage effectively. So making sure that your project is scoped nicely, making sure that you communicate with the other person, that you don’t end up having to put a ton more work into something because they expected it one way and you delivered in another way.
All these things that are not necessarily fundamental to coding itself, which can be kind of frustrating, but if you’re good at that then it can certainly be a lot easier.
RYAN: Perfect thank you. Then we’re going to end with one last question from Tara, an interesting question here, do you have resources for those learning to code with mental health or learning disabilities?
That’s a good question. So there’s not a lot of resources that I would say are bad for people with mental health or learning disabilities. When I first started at One Month, for example, I did it because I was always recommending the Ruby on Rails tutorial by Michael Hartl.
It’s a fantastic book, but it’s just dense, it’s like hard for people to get through, so I wanted to build something that was a little easier and a little bit more fun to get through. And that’s why I think video can be a great resource for a lot of people, you can pause it, you can go back, it can be more entertaining.
There’s that, there’s CodeCombat, CodeWars and stuff like that, those can be a lot more fun as opposed to having to read through 100s of pages of text. But unfortunately no, nothing specific to people with learning disabilities or people with mental handicaps. But it is something I think should exist and I’d like to know more about.
RYAN: Yes, right, me too, that will be interesting to know. Well with that, we’re about out of time, we’re a minute before the hour. So thank you very much Mattan for coming along and having this great presentation and thanks for sticking around for these awesome questions.
MATTAN: Yes, I loved them guys, I appreciate it.