Why everyone should learn to code
|Richard Harris in Android Monday, January 28, 2019|
For some people learning to code induces feelings of nausea, projectile vomiting, children born with the head of a golden retriever, possession by the price of darkness, and other such side effects. But Fahim Ul Haq of Educative has a completely different experience, and through our interview with him - we think you will be inspired too!
Learning how to program software isn't necessarily the easiest thing you'll ever do. In fact, it's going to be one of the hardest. Programming and code are difficult, and not just in the sense of understanding logic and syntax, but also in the way that it's a never-ending achievement because it's always evolving. Programmers never stay in one place very long, at least the good ones. New ways of programming are created every day, and languages change at an even faster pace.
Fahim Ul Haq is the CEO and co-founder of Educative, and a former Microsoft and Facebook software engineer. He's experienced all of this first-hand and saw a need for an online learning resource tailored to the way programmers learn best - by actually spending time writing code, solving quizzes and working through code challenges.
We spoke with Ul Haq about his programming history, the inspiration to code and create software, developer pitfalls, and why you should learn to code too.
ADM: How did you learn to code, and what language did you start with?
ADM: What inspired you to create a learning platform for developers?
Ul Haq: Tech is evolving all the time, and if your skills aren’t up to date, you’ll be left behind. As developers ourselves, our co-founder and I found it difficult to continually update our skills with current learning resources. Many are video-based, and video is definitely not the most efficient way to learn something like programming.
While employed at Microsoft and Facebook, we worked on a mobile app with interactive lessons to teach developers new skills. We got quite a bit of traction with the app and got requests from other developers to keep publishing new content on it. In 2014, one of the largest publishers in America approached us to write a book based on the material in our app. We wanted to create a companion website with the material presented in a more interactive format, but the publisher wasn’t interested.
This gave us the motivation to create a platform that hosts fully interactive content to teach new skills in a format best suited for developers. Programmers learn best when they’re given the opportunity to play with live code and get used to writing it. So our courses feature code playgrounds, quizzes, and code challenges to keep learners engaged throughout. And the platform’s WYSIWYG code editor makes it very easy for content creators to feature visually rich, interactive elements in their lessons.
ADM: What is the greatest pitfall for developers when learning to code?
Ul Haq: Not sticking with it! It’s easy to imagine that the great programmers don’t struggle. Or that if it’s not coming to you very quickly or easily, then you’re not cut out to be a programmer. Beginners can feel like if they’re not seeing immediate results or having an easy time, then it’s not worth continuing. But the best programmers in the world can spend a lot of time stuck on the same thing, trying to fix a bug or some other problem.
Deliberate practice is necessary to master anything. Work on it every day. The consistency of your practice is more important than putting in a certain number of hours.
ADM: You worked at both Facebook and Microsoft. What were the differences in the way the two companies train their employees? What do you think causes those differences?
Ul Haq: At Microsoft, a hiring manager will hire you to work on a particular team, then your training is mostly done on the job. For Facebook, new candidates land into a boot camp, where they’re brought up to speed on different parts of the codebase, then work on different parts for a few weeks before you’re selected to work on a specific team. For continued training, both companies have similar offerings for online training resources, more or less. The difference between the two styles of training basically comes down to what each company is willing to budget for training.
ADM: How do you see the demand for programmers - and programming - changing in the future? Are there any particular trends to keep an eye on?
Ul Haq: Demand for programmers is increasing a lot. The US already has something like 1 million job openings. As we move further into a more tech-focused environment with more automation, and with the advent of IoT, more and more programming jobs will open up. You’ll start seeing more industries - well outside just software and tech companies - looking for employees with a programming skill set to stay competitive and successful. So, now is the time to get some programming under your belt.
ADM: Should everyone learn to code?
Ul Haq: Yes. In 5 to 10 years, most office workers will think of programming as a skillset like Excel is today. As programming becomes more prevalent and data insights become even more important, non-programmer employees will use programming to become more proficient in their jobs. And more companies will start looking for it. Companies like GE and AT&T now have a goal of training all their employees to learn to code.
ADM: What is the first step anyone interested in programming as a career should take?
Ul Haq: Decide that you’re going to commit to it. Understand going in that it won’t be a smooth ride. It doesn’t matter what programming language you start with, or what learning resources you have at your disposal, it will be a slog at times. But that’s where all the great insights come from.
ADM: Over the last couple of years, what have you learned about organizing software training programs that improve the learning process?
Ul Haq: One thing that stands out is that a lot of programmers can take a lot of time just setting up a development environment on their computer - even just to look at the code. It can take 30 minutes to an hour to download, install, and configure the environment before you write your first line of code. For beginners, this is enough to get them to throw in the towel before they even start learning.
One of the key facets of Educative is that everything is hosted in-browser and on the cloud. By reducing the barriers to learning, our hope is that beginners can get on board with programming a lot more quickly, and stay on board.
ADM: Do you believe the current university education system does an adequate job of churning out developers with employable skills?
Ul Haq: Yes, programmers from universities are well-rounded and tend to have a good grasp of the fundamentals of programming. University tech programs don’t typically focus on specific languages, frameworks or technologies you’ll need to know to get a particular job. You’ll learn the core CS concepts, like algorithms and data structures - stuff you might skip over if you’re teaching yourself or come from a boot camp. But most importantly, you’ll learn enough to be able to pinpoint which in-demand tools you’ll need to get the job you want.
Are you paying more taxes than you have to as a developer or freelancer? The IRS is certainly not going to tell you about a deduction you failed to take, and your accountant is not likely to take the time to ask you about every deduction you’re entitled to. As former IRS Commissioner Mark Everson admitted, “If you don’t claim it, you don’t get it.
Get hands-on experience in performing simple to complex mobile forensics techniques Retrieve and analyze data stored not only on mobile devices but also through the cloud and other connected mediums A practical guide to leveraging the power of mobile forensics on popular mobile platforms with lots of tips, tricks, and caveats.
Write and run code every step of the way, using Android Studio to create apps that integrate with other apps, download and display pictures from the web, play sounds, and more. Each chapter and app has been designed and tested to provide the knowledge and experience you need to get started in Android development.