Becoming developer: A Starter Guide
January 09, 2022Table of contents:
Introduction
I'm worried the bar is too high
More important than starting is stopping
Where do I get started?
Is it right for me?
Where can I learn to code?
Where can I get advice?
Appendix
Introduction: I don't know anything about technology, but being a coder 1. sounds really cool! How do I do it?
Do you want to become a software developer but have no idea where to get started? Or maybe, you simply want to learn more about software development (aka 'computer programming', 'coding 1.', 'engineering', ect). Is it the right career for you? Perhaps my experiences and misteps can help you? Switching or starting a new career takes time, diligence and patience, a process which I've lived through. Do as I say, not as I have done.
If you have asked something similar to the above question, then you have come to the right place. Maybe you have a fascination with technology, maybe you simply want to try something that seems challenging, or perhaps your desire is entirely pragmatic and you would simply like to make more money. Whatever the case, I am going to try and sum up some of the important points to beginning a new career in software development. Oh, and by the way, if you just want to make simple websites for a living on squarespace or wix or whatever, this includes you too!
You can probably do it. The bar is Lower than you may think
It's true! There has never been an easier time to learn how to program. Most of the hard problems have been solved and abstracted away so that even extremely complex tasks can be performed rather simply and elegantly!
The good news: many people begin their software development careers without learning computer science at a university. Believe it or not, the bar is actually fairly low in terms of what do you need to know to "get a job" or "make some money." Even so, there are some things you should be aware of before you venture any further:
Don't seek a job in technology if you are not able to use a computer for at least 4 to 6 hours per day.
Don't seek a job in software development if you don't enjoy solving puzzles, problems, or learning the intricacies of how things work. Enjoying the thrill of discovering the mystery is a requirement.
When to stop? Or, stop making excuses and stop already.
Oddly, users of sites like reddit and quora routinely post questions like the following: Is twenty|thirty|forty|fifty too old to start coding? Is coding hard? Is coding a good career? How smart do you have to be to code? Can I make more money if I am a coder? Questions like these make me think that people lack faith in themselves and it seems many need permission from others to make changes in their own lives.
Stopping (the precursor to all future activities), is perhaps, the hardest thing you'll ever do, but it has to happen before anything else. Why then does putting a halt on the current trajectory frequently feel so difficult? No one likes to end anything without a feeling of closure in sight. Learn to create the closure you need to stop. Making excuses for ourselves enables the repeating our reality, or perpetuating the place we're stuck at. Stopping gets you unstuck. So, if you're reading this, I want you to think about where you are right now, how to stop, and then you can think about starting something. Carve out a good chunk of time so you can think about moving forward onto something new. In this case, software development.
Stopping is very important in the development process too, especially at the beginning when you are first learning and wasting time is very easy to do. Your first year or two writing software you may think you are on the right path to completing a particular task, but actually your direction is totally wrong. However, you have already convinced yourself that your trajectory is correct, so you keep rigourously going forward, charging headfirst into battle. You want to force your way through the problem. Your instincts tell you that the solution you have is the correct one and if you can just manipulate the code the right way it will "work." No, totally wrong. In this case your elephant has taken you over. At this point, you must do everything in your power to stop. Let the elephant inside you pout for a few minutes, and then when you're ready reframe the problem for yourself, put in some time to really think about it and do the required readings to complete the work task correctly.
Is it right for me?
Knowing whether something is right or wrong for you must be felt to be realized. There are some intro courses offered by places like Codefellows and Coding Dojo that aim to help you determine if programming is right for you. Candidly I have no idea what those courses are like. They are usually a hundred bucks and last a couple of hours.
The best place to figure out if it's right for you is to start learning and applying what you learn. The best place to learn the web basics is from Mozilla. Mozilla makes the firefox web browser and is also a great source for documentation related to web browser apis 2.. Go here to see the Mozilla Getting Started with the web tutorial.
The best place to start learning how to write code in scripting languages for the web like Javascript or Python is really by going to one of those learning sites like Codecademy. Codecademy at least has an interactive window that guides you through various modules, each one providing a new lesson and more context during your learning. They do a good job of introducing code to someone that has no prior knowledge. Spend a couple of hours on there, then take a step back. Stop and reflect on what you've learned. Do you like it? How does it make you feel? If it feels right, then move onto doing some basic web tutorials. Try coding a basic website from a tutorial. Digital Ocean has a tutorial here that I would recommend.
Where to start? Or, ways to start coding. Or, how to start building a career now!
Starting un-like stopping, is oddly, very easy. Learning how to code is a straightforward process, however, not always easy. Fortunately, the web is full of so many learning resources it's not easier to become a dev than ever. There are hundreds of different websites that teach how to code, coding bootcamps, university courses on learning platforms like Coursera or EdX. Indeed, when starting out the problem is not "how to learn" but "holy cow! what do I learn?"
It may be harder for you to pin down what to learn. You must set your sites on a specific target to be efficient with your time. There are many kinds of developers, all of which work on different kinds of projects and have different skill sets. Pick your flavor of dev. What kind of dev do you want to be? What kind of industry do you want to work in. There are so many different kinds of devs:
Web developer is a generic term. They may specialize in front end development and sometimes full stack development. They may build user interfaces that the user of the web site interacts with. A web developer could be responsible for standing up entire complex ecosystems using already provided "services" from other tech companies. The services may all be combined to create a cohesive experience. This kind of dev may help businesses manage and expand their web sites. Often this kind of developer can find work at least initially (when starting out) by only writing html, css and emails4. Marketing sites at large companies often need this work frequently. Especially large companies will have many 'internal only' sites that need this sort of work.
Software Engineer Specializes in complex systems, algorithmic thinking and is a master of the at least either the front or back end. A common misconception is that front end development is easier than back end. Both are equally complex depending on the scenario.
Full Stack Developer A jack of all trades. Builds on the front and back end. Stands up web services and APIs2. that web sites can utilize to more easily achieve their goals. The full stack dev will also build the basic front end architecture. I have not met a full stack dev that enjoys creating pixel perfect front end experiences.
UX Developer / Design Developer / Design technologist Helps bridge the gap between design and engineering at large organizations. They ensure that devs meet the standards set by design teams and that design teams do not exceed the limitations provided by engineering.
Dev Ops Engineer Creates build pipelines for project deployment and application publishing. Helps teams use larger more complex services provided by companies like Microsoft (Azure) and Amazon (AWS)
Software Architect Designs the high level software design. Hands designs to devs and they build the system.
Computer Scientist explores and develops new layers of abstraction for the complex systems that already exist.
Game Developer You know what video games are, right? Game devs often need to have exceptional coding skills.
the list goes on...
As you can see, there are many options. If you are coming from an industry that is more unrelated to technology and you have very little experience in tech, you would be wise to stay in that industry leveraging your hard earned skills while using technology to further your career there.
Recommended places to learn to code:
Mozilla - As mentioned earlier in the article. Getting Started with the web tutorial. Also, Digital Ocean has a tutorial here that I would recommend for building a basic web site.
Codecademy - If you know nothing go here. It's not worth using exclusively to learn, but offers good introductory courses.
Harvard CS50 Only if you feel ambitious and have at least an extra 10 hours a week to study in addition to the course lectures.
Bootcamp. If you really want to learn quickly, go to a good bootcamp. Either Codefellows or Coding Dojo. They really do a good job of exposing students to many important concepts. Some bootcamps have many phases. Don't feel like you need to go through all their different courses. You may only need to take a couple of classes to start looking for work. But don't expect to land a job at a top tier tech company right away.
Wix, Squarespace, Wordpress Not coding per say, but you can start building websites with platforms like these without much development knowledge. It just takes the time to go there and learn their workflows. You may not be writing code, but you will begin to learn some of the more important aspects of starting out: being able to produce something tangible for your portfolio. Yeah, first thing to do is to make a web site, get your stuff up there3..
Advice
Reach out. I'm happy to entertain questions. Email me for advice
Not a bad place to ask questions: Reddit learn programming
Appendix:
In addition to the term software developer I have used the word "coder." Sometimes, people outside of the tech industry are unfamiliar with the term developer. For any and all such persons reaing this, a "coder" is a developer. No one working in technology actually uses the word coder, because it sounds ridiculous 😇.
API stands for application programming interface. The web browser has an API so that developers can "talk" to it and tell it to do things.
My Website – as you can tell it's fairly bare bones. What will not be able to tell is that my site has had at least seven or eight different versions. Your personal website is really important place for establishing your own brand and a place to work on evolving your work.
HTML, CSS and marketing emails are the lowest bar skills for any dev jobs. CSS is deceptively complex though. Practice it thouroghly. I consider it like a good ingredient in the kitchen – tastes delicious, but often times very easy to f#$% up if you don't know what you are doing. Don't ever marinate a filet mignon.