I know of several people who start learning to code in their mid 20’s, and are doing fine now.
However, it’s very subjective what a “good living” is.
Compared to the rest of society, programmers (anyone who writes code) and software engineers (a subset of programmers, with more emphasis on “engineer”) might make a relatively higher salary.
However, just as with any field, there are different grade levels, and how well you do depends on what level you are able to attain, and that has a correlation to how much time you spend working on your craft.
If you work hard and dedicate yourself to software engineering now, you can probably make a decent living in 2–3 years. Whether that will exceed your earning capacity in whatever other endeavors you may try, or are currently in, varies widely depending on your individual background, circumstances, opportunities, and experiences (and ability to grow in all of those).
I think it may take 10–20 years of smart and hard work to get to the top tier of any field, software engineering included.
If you’re able to keep your head down and stay focused, go for it. If you’re easily distracted by others around you and are discouraged by others who seemingly effortlessly have more success than you, this may not be the path for you.
I have one friend who was working in the field of tech and executive recruiting, who was considering a switch to software engineering when he was already in his early thirties. I quoted to him a proverb, “Do you see a man skilled in his work? He will stand before kings; He will not stand before obscure men,” and he decided to stay the course and excel in what he was already good at. Fast-forward two years and he’s now crushing it as an executive recruiter, making much more impact than he would have, compared to if he had switched his career to software engineering.
Assorted tips and tricks for IntelliJ
Start the IntelliJ JVM process with additional memory
Open the application once, normally, after a new install before editing this file.
a. Otherwise, the signatures won’t match and the OS will think that the package has been tampered with, and security settings will prevent launching of the application. You will then have to delete the entire application and reinstall it.
Quit IntelliJ (Cmd+Q)
emacs "/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions"
vi "/Applications/IntelliJ IDEA.app/Contents/bin/idea.vmoptions"
Increase the following settings from their defaults (note: only works if your machine has sufficient RAM):
Start up and enjoy your upgraded IntelliJ on steroids.
Note: These steps must be repeated after every upgrade.
Other options listed here: http://tomaszdziurko.pl/2015/11/1-and-the-only-one-to-customize-intellij-idea-memory-settings/
random: my new favorite coding adjective recently is “enriched”
val enrichedObj = obj ++ someAdditionalStuffs
reminiscent of / inspired by https://en.wikipedia.org/wiki/Enriched_uranium
When writing shell scripts or other types of executables, you often put a directive at the top of the file to indicate which kind of interpreter to use.
Oh wait, that didn’t work?
Okay, that worked on my Mac. But why all the guesswork? There is another command that is better.
env. Use it as a directive like so:
And if it’s a
env is kinda like
which. It takes the first argument and figures out the full path of that, and uses it as the directive
man env to read more about it.
#!/usr/bin/env INTERPRETER makes your script more portable
the ability to run your script anywhere, on any OS/platform
The holy grail goal of programming/CS = write once, run everywhere
It is somewhat circular in that it depends on
env living inside of
/usr/bin/, but I believe it is a convention that is much more rarely broken than where
another CS vocab word.
The quality of being predictable, doing expected things.
e.g you walk into a dark room, you expect the light switch to be near the doorway opposite of the door hinge, not a mousetrap clamping down on your fingers when you reach along the wall.
Originally posted on Quora: Jonathan Tsai’s answer to What is the most valuable programming language to know for the future and why?
I will have to agree with Michael Hanson’s answer as well as some of the other ones that suggest learning multiple programming languages is more beneficial than picking just one.
I myself am a multi-linguist of both human and programming languages. If you randomly survey a large body of people living within various civilizations in the world on what the most valuable human languages are, the answers you’ll get back are likely to be English, Chinese, French, Spanish (not necessarily, but roughly, in that order).
When you know multiple languages, learning additional ones become much easier, because through immersion/osmosis, you are made aware of the different types of parts of speech, recognize the cognates and influences of one language to another, etc. That’s why you will frequently come across Europeans who speak at least 3 languages (English, French, and the language of their country), and Indians who speak 3-5 languages or more (English, Hindi, the language of their state/region, + neighboring state/region).
Programming languages actually have a much simpler syntax than human languages. The more you know, the easier it is to learn more.
I would rephrase the question as plural instead of asking for a singular response: What are the most valuable programming languages to know for the future and why?
If you like lists, this section is for you, but not in any particular order:
- Python - frequently used by scientific and statistics communities and data science; it’s a fairly easy language to learn and remember with libraries for just about everything you would need, and a very active development community who can whip up a library if one doesn’t exist already. Personally, Python is really easy to me and reads and writes just like pseudocode. I’ve written as many as 100-200 lines on a whiteboard or a text editor in one sitting and was able to execute the code in the interpreter without any syntax errors.
- Ruby - I am not a regular practitioner, but Ruby is also very powerful in that it is an interpreted language like Python, which means that it doesn’t need to be compiled before it’s run. A lot of famous websites are built on, and many of my friends who are paid handsomely, use Ruby, due to the popularity of the Rails framework (Ruby on Rails)
- Java - This one is nice because it’s a compiled language and the compiler can optimize the heck out of the code, and it runs really fast. There are lots of Java practitioners, and the majority of financial websites (banks, stock trading platforms, etc), will use Java because of its outstanding speed and performance characteristics. Incidentally, Java is also the language used by the Android operating systems, so if you want to learn to write for something like 79-80% of the world’s mobile users, this is the way to go. (Source: 2014: The iPhone 6 Had Better Be Amazing And Cheap, Because Apple Is Losing The War To Android; 2015: Apple iOS And Google Android Smartphone Market Share Flattening: IDC)
- Shell Scripting / Bash - Unix utilities are awesome. They are lightweight, fast, and often times, you can just use an existing Unix utility for doing common but advanced tasks like searching and sorting on a single machine, and additional various things.
- C++ / C - it still powers lots of high performance systems, but is a bit more cumbersome to write than Java, hence the reason that Java is the language of choice when building such systems. However, this is a very low-level language, and the thing about programming languages is that their interpreters and compilers are quite meta–if you chase it up/down the stack far enough, you’ll find that some/most of them are inevitably implemented in C. Not much daily use, but if you like learning the nitty gritty or really knowing what’s under the hood (analogous to learning Greek / Latin to having a better grasp on English), then this is something you have to learn.
I would be hard-pressed to give you a ranked list since I don’t know the statistics off the top of my head, but my impression is that the above are your programming language lingua francas, and most likely the highest value in terms of popularity/ubiquity, economic value, and utility.