You do not need a college degree to learn coding. Some of the most famous and successful coders are self taught or have degrees in completely unrelated fields.
With the Internet it is far easier than many of those famous coders path took as many of them had to rely on library books and had they had no Google or even Amazon to order books from.
Today everything exists free of charge and worldwide for anyone to become a proficient coder.
If your goal is to gain employment as a coder then lack of a degree is not a complete barrier, but it is a speed bump.
The goods news is it is very possible unlike even just 20 years ago where it was practically impossible. Until the .COM bubble in the 1990’s most corporations hired coders just as they would any other position and did so in very 1970’s ways. Degrees were required, but stupidly so the degree could be in anything. I myself was without a degree and I regularly lost out to junior coders who had degrees in helpful degrees like art history and political science. There is nothing wrong with either of those degrees, but their applicability to Computer Science is null.
So how can I get work?
First you need to get experience. But how can you get experience if you cannot get work? Here are a few methods that I have used and seen used successfully by many.
Target Small Companies
Target small companies to whom IT is a need, not a function. You want to target a company that is small enough that it does not have a dedicated HR department or person. This roughly means a company of 20 people or less.
For example a small accounting firm that needs some in house IT and support. Sure its not coding, but its a foot in the door and surely you can do some scripting and other automation and update their web site. Once you prove yourself the company will give you more leeway and face it, you are likely to know more about IT than any of the accountants.
Get involved in an active open source project. This has multiple advantages. With open source you begin to actively mix with more experienced developers and learn to work in a team. You also gain verifiable experience that if significant enough many employers will consider as valid experience.
And a final benefit is that you are contributing back to the ecosystem in a meaningful way.
Find a small local charity or other non profit and volunteer to work for them. For example you might find a local food bank and develop a mobile accessible website to present information and allow the food back to communicate with those who they serve.
Each of these projects can then be added to your resume/CV and count as verifiable experience. Be sure to collect the names and positions of those you communicate with and ask if you may list them as a reference. Most people will be glad to do so.
Roll Your Own
Even for volunteer work you should operate as a sole proprietor of your own consulting business. You do not need to establish a corporation to do this and you can simply operate as a self employed person and choose a DBA/Business name.
I suggest that you do not choose something based on your name. So if your name is John Doe, JD or John Doe Consulting should be avoided. Such names make your company to be small. Avoid cheesy names too, 420 Consulting is not likely to gain the type of attention that you are seeking. Pick something professional, but don’t be afraid to have a little fun so long as its classy.
Once you have established a name, even your volunteer work can credited to your company and gives you a more professional profile. There is also a bonus – if you are doing a good job word is going to get around and you are very likely to pick up odd but jobs from companies who cannot afford experienced developers.
Once that happens, even if the money is small…. then congratulations! You’re first paid work makes you a professional developer. This also further bolsters your work experience and employability if that remains your target.
This paid experience is so valuable to list on your resume/CV that at first you should be willing to take any small sum if you can afford to invest the time required. Just avoid taking large projects at this point, focus on smaller bite size ones. As you take more and more jobs, you can raise your rates to meet make it worth your time rather than a loss leader.
Many coders are introverts and do not socialize well. This trend is changing and not as bad as it used to be, but its still a fairly common trait. But when conversations involve tech, such introverts readily network. But push that network. The more contacts you have, the better your chances are of someone mentioning you when someone needs work, and as people travel between different companies whether for employment or even normal business your network becomes amplified.
After spending 1-2 years gaining experience you can list it no your resume/CV and other employers will start to consider you as a valid candidate. It will still be a rough ride at first, but experience will lower the speed bump to a manageable size.
In other cases you may find that the company you’ve been working for is a great fit and remain there. Its often easier to be a big fish in a small pond, than it is to be a small fish in a large pond.
There is no best programming language. Repeat after me. There is no best programming language.
There are languages that are better at certain tasks than others, but there is no one best language for all things and even for a particular tasks there are often several good languages without one being the best.
Furthermore, every language has its “warts”. Some languages certainly have a lot more warts than others but can still be a good choice in many cases despite their warts.
For a comparison of languages refer here.
There simply is no way to answer this in a generic manner. It depends on aptitude, dedication, and time that you are willing to spend on studying. It could range from 6 months to 2 years, with most probably closer to the 2 years.
But what does a “good developer” mean? We all have varying definitions. In my estimate how long it may take you to reach a junior developer level where you will be capable of doing basic tasks and on the border of employability.
The good news is that with the Internet many other bigger obstacles have now been removed and resources are freely available to all.
A good developer never stops learning. I have been developing for over 35 years and I still am continually learning.
Contrary to popular belief you do not need to be super strong or have advanced math education to code.
99% of coding only requires basic math skills and good algebra. Coding is basically an extended form of algebra.
Higher maths are rarely used in coding and when they are, it is typically abstracted into a library for the coder. Gaming engines use a lot of math to do their rendering, but even the most experienced game programmers normally know little or none of the advanced math but instead program against a game engine which hides and does all the math for them.