What are good ways to develop the programming skills you need to be able to make a living from programming, when you're not a student at a university?
-
The question is being asked because I'm considering changing fields. I'm currently in a field where it is difficult to make enough money to live off of, and I am considering learning programming and becoming a freelance programmer. I took a programming course in college and liked it. However, I'm no longer a university student, and any further education in programming I would need to learn in the context of not being a university student. The questions I would like perspective about are: 1) What types of programming should I learn if I want to work as a freelance programmer? The type of work I'm thinking about at the moment are along the lines of pretty basic web development, as opposed to very complicated stuff. However, I'm open to suggestions, whether for web or other work. 2) How much time will it take me to develop enough skills to be able to make even a basic living off of programming? I'm honestly not trying to get rich, just want to make a living. 3) What methods would you recommend for developing such skills? books? classes that people who aren't university students can take? 4) What are the best languages to learn if I want to be a freelance programmer? Thank you.
-
Answer:
Simplest, way, build stuff for people. Do a couple of free webites...
Quora User at Quora Visit the source
Other answers
If you want to quickly get started on programming, especially web development, I suggest starting with Codecademy(http://www.codecademy.com/). It is a quick, fun but a very "legit" way to learn all the web programming basics. Go through it in the following order: 1) Web fundamentals 2) Javascript 3) jQuery 4) Web Projects 5) Python 6) APIs 7) Study other people's codebits (little projects on Codecademy) and try making your own codebits. You can use these as your portfolio too to show your clients if you are programming freelance :) If you want to go further into web design, I suggest reading this blog post by fellow Quoran : http://www.karenx.com/blog/how-to-become-a-designer-without-going-to-design-school/ If you would like to keep your options open to a software engineering job, it is good to know Java or C++, but most importantly it is essential to know data structures and algorithms. You can learn these from the following Coursera courses: https://www.coursera.org/course/algs4partI - Algorithms I https://www.coursera.org/course/algs4partII - Algorithms II https://www.coursera.org/course/aofa - Analysis of Algorithms (credits for this knowledge to fellow Quoran from one of his answers). Finally, the key to getting a job is nailing that job interview. I am not a web programmer so you have to look out for other answers to this question from web programmers on how to do that. As for software engineering interviews, the book "Cracking the Coding Interview" will give you a solid practice on writing code on a whiteboard and the thought process behind thinking up an appropriate algorithm. Luckily a PDF of it can be found here: (http://www.valleytalk.org/wp-content/uploads/2012/10/CrackCode.pdf) Good luck! (:
Rajarshi Roy
For me, competitive programming was what it worked to me. Let me explain. I am a self-taugh programmer, no university, no math background, nothing. I started two years ago. Then, I fall in love with code. And thinking about how to practice code, I found competitive programming. Then I started my own blog about competitive programming, and then, it became my hobby. Then, after more than a year of practicing in competitive programming and with the help of http://www.pluralsight.com, (where I did a lot of courses) and http://www.coursera.org (A great website too) and with the help of all the great people that I had met thanks to the blog. I started to look for a job. And I got it last december! This way worked for me! It was hard, but it doesn´t matter which way you choose, what matters is that you love that way and enjoy doing it, building things. Good luck finding your way!
Oscar Bralo
University is definitely not a requirement for learning how to code. I've been coding since I was 9, and while it took me a couple of years to become even halfway decent (where I could completely projects and libraries from scratch) at it, I never really did it seriously until 4 years into it. 1) Learn a language from the basics, before you target a platform - I tried to learn Android and Java at the same time, and it definitely slowed me down. Had I actually taken some time to learn the basic syntax and concepts of the language before I start Android, I'd have definitely gone much faster. Instead, I had to stop my Android projects to constantly go and lookup stuff like "why is 5/2 not giving me 2.5" (spoiler: Integer Division). 2) After you learn a few language, learning the rest is kind of automatic - Over the past 7 years, I've worked with 16 languages, ranging from JavaScript to Java to Visual Basic to C++ to x86 ASM to python and so on. After the first four or five, I had a very good grasp of how programming works, and learning new languages simply became a matter of syntax. Granted, best practices differ from language to language, but binary search is the same regardless of whether you implement it in Java or C++. 3) Build stuff - Schools and universities often teach you the concepts, but not how to use them. If you know how to implement a linked list, but have no idea where it is useful, it is not going to get you very far. Instead, learn the concepts, and then build stuff with them. It doesn't matter how small the project is. No one's asking you to write SKYNET. You can make a Tic Tac Toe game to learn basic AIs and conditional statements, write a calculator to figure out the finer points of math, make a maze game to learn path finding algorithms and so on. Building stuff will teach you more than any theory class will. 4) Learn from others' works - There's millions of open source lines of code out there. Going through other people's code is an excellent way to learn how to go about stuff. I spent much of my first year going through open source projects, messing with them, breaking them and fixing them to learn how things work. 5) Reinvent the wheel, and then don't - When you're learning, don't get tempted to use libraries for everything. People have done almost everything possible to simplify and reduce the amount of code *you* have to write. However, if you try to implement as much as possible on your own (obviously, you need to be smart here. Not using a library and rewriting the networking stack is just plain stupid), you'll soon be in a position to not only comfortably use libraries, but to improve upon them and perhaps write your own.
Raghav Sood
First of all, being a student at a university has nothing to do with making a living off programming. What does matter is the skills you learn and can show off through your personal portfolio (which I highly recommend you make), as well as showing the want to continue your learning and knowledge on the topic. In regards to learning basic web development: http://www.codecademy.com has a great web fundamentals course, although it surely will not teach you everything you need to know. Also, look into the JavaScript and jQuery courses they offer. Again, this will NOT teach you everything you need to know in order to be a freelance programmer. There's other online websites that can help you learn the fundamentals as well, such as http://www.codeschool.com. For me, I learned the best by taking what I learned from books and tutorials and applying it to little projects that I had ideas for. This is the best way, IMO, to learn how to effectively program and make things work. Tutorials are great to get a head start on what/how to do things, but they are not enough for you to be able to be a freelance programmer; that will come with practice and applying what you've learned to "real-life" projects. In regards to how much time you should spend in order to learn the skills, I would give yourself AT LEAST 6 months of continuous practice and learning so that you are fully prepared when you reach the point where you are confident enough to interview for a position. Of course, while you're learning you can always be trying to pick up freelance work for friends, family, colleagues, etc., that know you are in the process of learning. Hope this helps, best of luck on your journey!
Kyle Maune
I'll be blunt here - given your questions and the basic background you provided about yourself, I think you're considering the wrong career to change to. Please do not take this the wrong way, you will understand what I mean when you read my answers. I'm just saying this because to make a living out of programming, you will need to be wanted for your skill. I do not doubt your ability to learn and that you may grasp it all beautifully, but to make a living out of it giving your current situation, it may be tough. 1. Honestly, this question concerns me, because there is no "panacea language" to learn. Programming is a highly dynamic field, and while it is true you can pick other languages easily after you pick your first one, you cannot expect to become a jack of all trades, because you will be a master of done. This one field when you know many languages, but "master" a very few (and I'm using "Master" loosely here because I have been programming since I was 14 and I am still learning - and all my life will be like this). So which language should you learn? It all narrows down to what you want to do. You have stated you want to do "basic web development" but how do you define that as? Front end development, back end development, just design? Anything completely differently? All of them, perhaps? I read "basic" as "I want to write HTML for a living", but your skill will be worthless. The good news is, HTML is the only markup language you will need for "basic" front end development, the bad news is, it can be a pain to write it when you throw CSS and JavaScript (which you will do if you do front end) into it. You have undoubtly heard how front end developers hate a Internet Explorer. Make your website work on all browsers without letting any tears out. I dare. For back end development the array of languages grows a bit. PHP is widely used and it powers the biggest percentage of websites in the world. It's easy to learn and it's learning curve is really small. The bad news? It receives a lot of backslash from the development community due to it's low barrier for "noobs". A respectable developer will not care about something like this, but many do. You can also use Ruby on Rails, Python, Microsoft's ASP... There's many. Again, what do you want to do? "Basic" vs "complicated stuff"... Such general terms, I just can't help you much with that. More bad news? Web developers aren't necessarily in a high demand. So anyone with slightly more skill than you can take your job away any day. Software has many fields. I personally am lover of the mobile apps area. The good news? It is a growing area and iOS and Android developers are still in high demand in many places. The bad news? The learning curve for them is much steeper and can be frustrating. Dealing with app markets approvals is a pain. You could spend months writing what you think will be the next ground breaking iOS game but Apple will refuse to accept it no matter what. You will then have wasted time and money. For the record, iOS apps are written in Objective-C, but there are many C libraries so if you decided to write iOS you'd have to be comfortable with languages. Android Apps are written in Java. Making your Android app work properly in most devices can be a pain due to the defragmented ecosystem. To resume this answer... Really, what is THAT thing you want to do? It's for a living, but might as well choose something you like. This is not a field that accepts mediocrity, so chances are sticking "with basic web development", whatever that really is, won't give you enough for a living "Basic web development". Just please don't be this guy. 2) I hate this question with a passion! People who usually ask me this questions are eager teens wanting to program or young adults wanting to start with development. Your case is a tad a different, so I guess I'm forced to respond. The answer is... From the moment you start until the moment you die. I said this before, it is not something you just learn and are done with it. Standards change, new ones are introduced, languages evolve, and you have to keep up with everything related to your field. No matter how "basic" it is that thing you want to do, you will have to keep up with it, because it will change, just like everything human-made does. How long until you can use a certain skill professionally is a different question, and the answer is "it depends". What are you planning to do? You can write the most basic HTML fluently after one weekend, if even that, but again that skill won't be enough (see photo above). To put it into perspective, I released my first software to the public 4 or 5 years after I started learning to code. There are many factors to this and some people may have done it in a matter of months and others in a matter of decades. 3) People learn differently. I started learning on my own with tutorials and books. I think a good book is the best teacher you will ever have. If you fancy absorbing a lot of theory and applying it later, read. A lot. Nowadays we have things such as http://codecademy.com which offers free dynamic learning curses. It's a good place to start, but it certainly is NOT everything you will ever need. You read a lot in this field, so I hope it's your kinda thing. Personally, I love reading programming books. They give you a lot. I find actual classes to be boring beyond words and super dynamic tools such as a codecademy cut a lot of content in order to keep it simple and to keep people interested. I have said time again that that the best way to learn is to start your own projects. They don't have to be things you will release to the public. As long as it solves a problem for you, go ahead and do it. Even if you drop your projects halfway, the knowledge you obtained from them will be extremely valuable. But sadly, for the looks of it, you might not have time for that. Another way to learn is to drop by development IRCs and get your ass sarcastically beaten and to be made fun of. If you can endure that, you will be fine and eventually get along with your fellow devs. Keep in mind this field is not exactly overflowing with nice people. Reputation is important and "extreme n00bs" are in general not very welcome unless they prove to the community they can do more. 4) first, see answer 1). It doesn't really matter if you're a freelancer or if you work for a firm. Your skills have to be relevant to what you want to do and you have to be good at them. It wouldn't make sense for someone who does back end web development to be interested in Objective-C unless they want to transition to that area eventually. It doesn't matter if you're a freelancer or if you work for a firm. If you don't have a portfolio with nice projects or at least strong certifications you will never get hired. (See photo above) It doesn't matter if you're a freelancer or if you work for a firm. "Basic" is not going to be enough to make a living. If you don't brush up your skills to tackle the "complicated stuff" you will never get hired. (See photo above) To close up, it doesn't matter if you're a freelancer or if you work for a firm. There is no "best language" to learn and it all narrows to what you want to do. This is not a field where you can get by with mediocre skills and live happily. As the world innovates, more people are needed in IT, and only those who can keep up with trends and are willing to develop their skill further are going to survive. You cannot learn the basic requirements for a "basic" job overnight. Again, I have no intentions to discourage you. After all, I think programming is a beautiful thing that everybody should learn. I just think that wanting to change careers from a job that doesn't pay well to a job you think will pay well is a bad idea. Contrary to popular belief, not all programmers are well paid. Many of them surely are in your same income situation. You don't have to be a university student to learn everything you need to make a living out of programming. I am self taught and last year I received an offer to co-start a local company. College didn't teach me anything new compared to what I already knew when I got in. I got my skills by experimenting, playing, and being made fun of by other people with higher skills in the field. Everything you need to learn to program is time and dedication. That's really it.
Andrés Ibañez
Related Q & A:
- What are good ways to save up for an iPod Touch?Best solution by wikihow.com
- How can I make a living as an artist?Best solution by Yahoo! Answers
- What are good ways to promote my website?Best solution by Yahoo! Answers
- What are some part time jobs I can make a living by?Best solution by wikihow.com
- Is it normal to get a sort of rash when you're cold?Best solution by ehow.com
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.