Technologically and socially, I feel like we’re in a very awkward place and time. It’s official that we can no longer live without our smartphones, our email, our snapchats, and facebooks. Yet we also hate ourselves for it. For the cost it imposes on our personal time, our family time, our time for personal reflection and focus, and our mental and physical health.
As a software developer, I love all of it but like many others feel that something is out of balance. I find myself drawn to pre-industrial times, crafts, nature, and a slower way of living. I often find myself being nostalgic for a childhood without push notifications and asynchronous communication. Yet I cannot give them up because they define my relationships, my industry, my hobbies—they enable them, make them possible and help them thrive.
I’m not alone. If we were forced to choose what is healthy, what is sustainable, and what is more meaningful, my peers and I would no doubt choose that which is real and natural instead of virtual and artificial.
I swing from deleting all my apps, to installing them all back plus more. I swing from feeling guilty to feeling indulgent in answering all my technological cravings. I’m a binge consumer of digital things. This is no doubt a problem of discipline, one must control their compulsions. Unplug, go for a walk. Sure, I’ve always said, but I am made like everyone else, from the same faulty organic processes.
We can play a prediction game: what will satisfy all these needs and eliminate the inner contradiction in me and in you? The ultimate end is to surrender to a virtual life, the end state is one of living in bits and wire; it’s the virtual reality that will be developed in the next twenty or thirty years. A virtual world where everything is perfect and everything is possible. In this world, there cannot be any resistance or guilt. A fully virtual life, ironically, could be the answer to all our banal and civilizational problems. I think that’s where we are going, and it will eliminate any last vestiges of our luddite past.
We are having a problem of adolescence—a problem of being in between. We know where we are going. We are going to where our nature is. We strive for consistency and cannot help ourselves until we achieve it.
So you want to start programming, but not sure where to begin? There are many ways to learn how to code. In this post I will be covering the different ways of learning programming, and the pros & cons of each. First things first, you do NOT have to go to college to get a job as a programmer. However, I recommend it. You will be subjected to all of the different sects of programming, and get to see what kind of programming interests you the most. You also have an instructor at your disposal for idea exchange. You DO have to be dedicated to learning all that you can on your own time, whether you’re in college or not. Now, let’s take a look at different learning media:
There are a few options here. You can find text tutorials in books, online, and sometimes in the program console you’re working on. This is a great way to get your muscles (both brain and fingers) used to the language you are coding in. A great site for this is Codecademy, you will need to register (it’s free). Cons: you could miss some important programming concepts if you only follow tutorials.
There are a number of really great video series on youtube that will not only give you coding examples and tutorials to follow along with; but insight into general programming concepts and good coding practice/tendencies. A personal favorite of mine is Jesse Warden’s Intoduction to software development for the basics. Highly recommend if you’re new to coding. He’s funny and very informative. Cons: it’s harder to ask questions, you may or may not get a reply, and you have to wait for responses.
These are harder to come by (at least in my area). However, I have watched multiple recorded workshop sessions on youtube and they are a great starter for anyone new to programming. You follow along, get to take notes, and you have multiple event staff there to help get you set up and answer any questions you may have. Most of these that I have seen you bring your system and they will help you install what you need to start coding. If not, they provide detailed information on how to do so ahead of time. Cons: usually cost money, can be difficult to find, could have to wait a while for the workshop date.
Classes are one of my favorite ways to learn. Reason being, most programmers are lazy, myself included. A class helps me stay motivated to practice, practice, practice (because I have a due date for my work). Almost all the programming classes I have taken have been online (or half online half face to face). They usually consist of a mix of the previously mentioned learning media. You’ll have a book, tutorials, videos, and a person to answer your questions. You do not have to pay to go to college in order to take classes. There are many classes online such as Coursera, MIT’s open coursework, and W3Schools. Cons: They take a bit of dedication, but programming itself does too!
When you’re taking introductory programming classes in college you have a ton of information to take in at once. I suppose this is why many instructors leave out the good stuff; the stuff that would make your life and all of those assignments ten times easier… So here is my list of tips for beginners:
1) Begin in your native OS. Trying to figure out a bunch of hoopla to get your tools installed correctly in unfamiliar territory is asking for a headache.
2) Do not try to code when you have a headache, are super tired, or impaired in any other way. Rest first, you need a well-functioning mind to produce good code.
3) IDE, baby! Integrated development environment. I love bare bones text editor and command prompt/terminal just as much as the next guy; but I am a bigger fan of efficiency and speed. Anything that can cut down time I spend developing is my friend. Less time with technology = more time with family = happy boyfriend and daughter. Employers are all about it too (of course)!
4) Know how to get information! Develop Google skills. I had no idea it was a skill to “Google something” until I took my first database class and learned aboutcorsera queries. Read this and this, then tell everyone you know to do the same. Otherwise you might soon be the person everyone who is lazy or not tech savvy asking you to do their research for them. (& trust me, that sucks.)
5) Find your niche. I know after your first hello world you will want to learn multiple languages, have a ton of projects, and just be so excited you can’t contain yourself! Stop. Learning a new language takes time. Eventually you can and will have a stack of languages under your belt, but it takes time. If you want to work as a programmer you need to figure out what you want to do, and what to learn now. There are many options (web development, databases, applications, software, the list goes on…) so do some research, find what interests you, and try to stick to that for a while.
6) If you’re in college, taking a programming class, or learning from a coding book from your library- beware! Most beginner books will give you steps to follow for assignments in order to get some practice. I have no idea why, but many of those will give them to you in crazy order where you don’t write your main method until step 5 and by then you have 13 lines of code. No main method, no compilation, no test, no run. You should be compiling and running your code every 2-3 lines. Do NOT attempt to write all of your code out then run it. If you’re doing exercises from books don’t be afraid to go out of order, you have to be able to run your code early on.
7) Learn as much as you can! We live in the world of information. Watch YouTube videos, get a learning app, check out online course sites like corsera and MIT’s open coursework. Even if you’re in school, they can only teach you so much. Learn all you can whenever you can.
8) Manage your time. Don’t do it unless you’re passionate about it. Developing takes a LOT of time. You really have to be devoted to it if you want to become a programmer.
9) Read, write, and review code. If you’re in school utilize your instructors. Learn as much as you can from their feedback and don’t be afraid to ask questions!
10) Code things for you and use them! Work on small projects (remember games and other big projects have many, many people working on them), don’t set yourself up for disappointment. Get involved. Join a user group if you have one in your area. Contribute to an open source project. Be active in forums. You will learn so much this way. And remember to always stay up to date!