How To Change The World By Learning To Code
29 Jun 2016
21 minute read
Matt Barrie created Freelancer to advance the free market. Danae Ringelmann, Slava Rubin, and Eric Schell invented Indiegogo to democratise the funding of projects, both for-profit and non-profit. Google was developed to make it easier to find information.
Coding is complex
Code can be incredibly intimidating. It’s something you can only become good at it after hours and hours of practice. Coding is a journey that never ends.
Thus, no school can promise to teach you everything coding involves…and those that do are lying. The field of coding changes far too rapidly and consists of way too much information to make learning everything an attainable reality.
Coding is how we talk to machines. All things in code are built from fundamental constructs.
Every new architecture is just a re-imagination and a re-adaptation of an idea that was floating around for decades. — Adrian Kosmaczewski
Every new language and framework is a reinterpretation of computational thinking fundamentals. There are even many different levels of abstraction, from super low level, like Assembly, to super high level, like Scratch.
You can’t learn them all.
However, what a good coding school will do is teach fundamentals and established industry practices and tools — and most importantly, teach students how to teach themselves, so that when the next big things for coders comes along, which we guarantee you it will, you’re self-sufficient enough to evolve and grow.
However, coding schools are a great way to be held accountable, if that’s what you need…and there’s absolutely nothing wrong with that!
“Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter,” says Eric Raymond, author of The New Hacker’s Dictionary.
Nobody denies it’s difficult to learn to code (and if they do, they’re also lying), but that’s what makes learning to code worth your while and extra rewarding. Our motto here at Coder Academy definitely includes the common phrase, “You get out what you put in".
You don’t need to learn every single language, platform, or tool that comes up…and you can’t, either. Stay focussed in your endeavours and learn only what’s relevant to what you want to achieve.
Coding is an immediate, continuous rush of problem solving — hours of frustration interrupted by minutes of elation. So, if it’s incredibly daunting to learn to code, why should you do it?
Coding’s influence on the world
In case you didn’t know, the whole world runs on code. Just look around!
Computers don’t have minds of their own…yet. They can act only according to the instructions programmed into them. Regardless, there are now nearly no industries and social activities untouched by code. Our culture is represented and reflected by code. Our social norms are reflected in code. The world we want to create is built on code.
Your entire life is run on code
You’re probably reading this blog post in Chrome or Firefox, maybe even Internet Explorer on your work machine, running Windows or OS X, on a laptop or desktop. You also likely spend many hours a week reading emails, checking your friends’ Facebook statuses, or watching shows or movies on Netflix.
Much of your life is on computers
Medical records? In a government database. Resume? LinkedIn, maybe Seek and CareerOne. If you run a business, you use Google and Facebook to market your products, and a CRM like Hubspot or Salesforce to track them. You use Amazon to purchase products. You file your taxes online, manage your bank account online, and perhaps even dabble in digital currencies. Bitcoin, anyone?
In your pocket, purse, or on a desk nearby, you probably have a smart-phone. 2.08 billion people have smart-phones now. If you’re reading this, you almost definitely have one. They are the most common communication device. In this device, you have access to a GPS, camera, touchscreen, and endless applications.
Modern cars are designed by software, built in factories by robots, and chock full of computers. Did you know your dashboard sends instructions to the rest of the car through minicomputers?
Cars also aren’t as mechanical as they used to be. They have reverse sensors, GPS tracking systems…That central locking system is all software.
If you have a car, you might use Google Maps to find your way around, Yelp to find a place to eat, or TripAdvisor to find a place to stay. You might even order food in with MenuLog, perfectly timed to greet you upon your arrival home.
Now, look up. Somewhere above you, a plane will pass that is controlled by autopilot, has in-flight WiFi and entertainment systems, and is constantly communicating with other planes, traffic controllers, and its manufacturer.
Somewhere above that, satellites and space stations orbit the earth, taking pictures, measuring the weather, and routing phone calls.
Software is eating the world, and if you don’t get involved, it’ll swallow you whole.
Learning to code not only increases your understanding of how people are changing the world, but it gives you the skill set to create the future right alongside them…or beat them to the punch.
So, how do you learn to code? Let us simplify the process for you. It all starts with....
We repeat: coding is more than typing in a text editor. Coding encapsulates a whole way of thinking called computational thinking.
- To code well, you need to learn how to solve problems by breaking them down. This is called decomposition. To design a simple website that calculates how long it will take to save enough money for a housing deposit, you’ll first need to know: a) how much you earn, b) how much you can afford to save, c) how much the house you want costs, and d) how much tax will be taken out of your income.
- Pattern recognition. This is a highly refined ability to match information from a stimulus with information retrieved from memory, and assists with the decomposition process.
- Logic. Abstraction. This is knowing how to reduce a process to a set of essential characteristics. In very very very simple terms, it reduces making 10 functions, where one prints 1, then the next prints 2, then 3, then 4, and making a master function that runs all of them one after another to a simple loop that prints 1, and until 10, it keeps printing.
- Data. What is information? How do you model the real world? This is called Information Theory. For software, it manifests in what is called information architecture. This is the work of structuring content, developing taxonomies, designing navigation, and all the other activities that make information accessible, usable, and understandable.
- Systems. Are your requirements: necessary; appropriate; unambiguous; feasible; singular; verifiable. If it’s not, can you make it so? This is Systems Engineering. How does everything in your program interact with each other?
Why is programming fun? What delights may its practitioner expect as their reward? First is the sheer joy of making things. As the child delights in their mud pie, so the adult enjoys building things, especially things of their own design .— The Mythical Man-Month
If you’re not sure if you’re fit to code, go to coding-centric events and read coding-centric media. See if it strikes your fancy. Delve deep into it and understand how the coder’s mind thinks. Associate with coders of varying experience, skills, and personality.
Hackathons: HackJustice, GovHack, Techfugees, angelhack, Random Hacks of Kindness
Here are four tips on how to get involved:
Do hackathons. In Sydney, we have many, including several that Coder Academy is proud to sponsor or partner with: GovHack, NASA Space Apps, Facebook Sydney, Chronic Pain, HackJustice, AngelHack, NAB Hack. Random Hacks Of Kindness, Techfugees, And that’s just for starters!
Follow coding twitter accounts. A combination of industry stalwarts and parody accounts are a good mix. Here are a few to check out: David Heinemeier Hansson (DHH), Kent Beck, Infosec Taylor Swift, I Am Devloper, Alan Cooper, UncleBob, Ward Cunningham.
Examine why you are learning to code
You can code pretty much anything— video games, mobile apps, websites, and even…drone firework displays. You can help people. You can improve the world. You can make a lot of money. Or, you can do it all at once.
With code, you can also become a stronger product manager or entrepreneur, a lawyer or business analyst who is ahead of the game, or a ferociously productive administrator.
There are endless possibilities, and they are only increasing every day.
What coding language should you learn first?
One of the coding languages that Coder Academy specialises in, Ruby, is chosen not only because it is in high demand at the moment, but because it’s simple, expressive, and flexible. Pete, our Founder, likes the philosophy behind Ruby, of developer happiness. It’s elegant, and readable. This is great for beginners, as they are able to understand what code does almost immediately. The lack of obfuscation encourages you to be a good coder and to write quality code. We’ve chosen Rails because it is opinionated. This means it has an idea about how things should be done, which is good for beginners, as they don’t have to get caught up in small details. Ruby’s abstraction encourages curiosity. While you don’t need CS understanding to get started, you will gain it as you continue.
The revolutionary projects you now know well (mentioned in the very beginning of this post) all have one thing in common: They are all websites, or involve web components.
The lines between traditional computer applications and web apps are blurring — a growing number of software solutions that previously weren’t web-based have now integrated web interfaces or interact with a cloud service. For example, Adobe Cloud, Dropbox, and Google Drive.
You can join a world-changing web based organisation or you can create your own. A good code school will introduce you to it all.
So, what’s involved in developing a website?
It kind of keeps on growing. Right now, it’s this:
- How the internet works
- Deployment and dev-ops.
- Problem solving & abstraction.
- Logging, profiling and debugging.
- How to manipulate APIs, AJAX, JSON.
- Database design — Relational & NoSQL.
- Source control — branch/PR/merge flows etc.
- Principles and patterns of object-oriented & functional design.
- Security practices — Encryption, validation, authentification etc.
- Testing — Unit, integration and system testing, pair programming, TDD, code review etc.
- Programming fundamentals — variables, expressions, statements, functions, conditionals, recursion, iteration, strings, lists, dictionaries, tuples, files, classes, objects, methods, inheritance etc.....
- Source control — branch/PR/merge flows etc,
- Responsive design — how to design a site to work well on all screen sizes
- CSS Preprocessors — SASS, LESS
- Automation tools — Grunt, gulp
- Browser Developer Tools — Chrome & Firefox have a great set of developer tools.
- Cross Browser Development — all browsers process code slightly differently.
Reading is Your Friend
We can’t stress this enough. You. Must. Read. Digesting text won’t teach you exactly what to do, but it will impart philosophies of coding and coding culture. Here are a few canonical books to check out:
- Gamma, Helm, Johnson, Vlissides: “Design Patterns — Elements of Reusable Object-Oriented Software”
- Knuth: “The Art Of Computer Programming”
- McDowell: “Cracking the Coding Interview”
- Brooks: “The Mythical Man Month”
- Hunt, Thomas: “The Pragmatic Programmer”
- Martin: “Clean Code”
- Cooper: “The Inmates Are Running The Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity”
- Fowler: “Refactoring: Improving the Design of Existing Code”
- Feathers: “Working Effectively with Legacy Code”
Practice, Practice, Practice!
Practice makes…improvement. Think of a problem you want to solve. Any problem. The best way to retain a skill is to develop a project that requires lots of iterating.
Code at least a few hours every day. You don’t learn sport by reading about tactics, or learn an instrument by reading music without playing. Coding is much the same. The best way to learn is by doing.
Do mini side projects. Yes, they should be simple(to start with). Be sure to gradually build up in complexity, or you’ll undoubtedly overwhelm yourself. The best way to learn a new technology is to build a project with it. Remember to make it useful, and more importantly, make it fun.
Here are some project ideas to get your wheels turning:
- A blog
- A unit converter
- A credit card validator
- A mortgage calculator
- A change return program
- A personal budgeting tool
- A website for your portfolio
- A formula to calculate your taxes
Want more? Check these out for starters: Github List, Project Euler, 5 Project Ideas, and Programming Tasks. Some of these websites will help you learn web development, while others are almost purely to teach you how to think like a coder.
As a small exercise about half a year ago, I scraped realestate.com.au and did some stuff with numbers to calculate how long it would take to save up for a housing deposit. The website I built can be found at aussieHouses.
Work on projects with other programmers. Get involved in open source. Assist some friends.
Read open source code. Watch some repositories on Github. Get to know the software behind the software you write in Ruby on Rails, jQuery, Twitter Bootstrap, etc. Read code by great programmers (and groups of programmers who are collectively great).
And that's how you learn how to become a web developer.
LEARN MORE ABOUT FAST TRACK
Want to become a junior developer? At Coder Academy we have Australia's first and only accredited fast-track coding bootcamp that will set you up for a new career in tech. Our immersive course helps students acquire in-demand skills through hands on, project-based training by industry experts over six months.
Now enrolling domestic & international students in Sydney, Melbourne & Brisbane! Study now, pay later with FEE-HELP!
Are you a woman interested in coding? Check out our Women in Tech Scholarship!
BECOME A FULL STACK DEVELOPER IN 25 WEEKS OF STUDY
Seriously considering a coding bootcamp? Learn more about Australia's first accredited coding bootcamp.