Programming as a Second Career
The movement of encouraging people to take up programming as a second career is to be seen at its most “thrusting” in the USA. A quick Google search will reveal many organisations providing and evangelising about training and motivational courses for those thinking of taking up programming as a second career. Some of these companies are very successful commercially even though their products may be more superficial and less thoroughly developed than might appear at first site. Yet, there are nuggets of wisdom to be found in these sites and lessons to be learned from all that “marketing and evangelising” hype. Remember, always, that those “free offers” are rarely as ideologically pure as they appear. The idea is to tempt you in and then to get you to “start paying”, either directly or indirectly.
A sensible sounding approach .. which I have adapted from, explores
possible options and strategies as a series of questions and answers provided by the author and those who responded and added their thoughts, experiences
This is the starting question - Help Me Reboot My Career, This Time As a Programmer
I'm a 41 year-old father/husband considering a career reboot. Considering programming. How to get started at my age?
I've read a lot of comments lately from folks who seem to make really good money writing programs, coding, etc. I have considered looking into it many times in the past, but always figured it was too late to go back to school, starting over, etc. Recently looked at a free online course on Java and found that I dig it. I think I could get into this. I like systems. I like structuring things, nit-picky syntax things, etc. And I want to be able to build my own programs and apps (I get ideas). So ...
Where to start?
- Is this something I would need to go back to school for?
- What kind of degree?
- Or can I take some courses and get a certification?
- Do the answers depend on whether I intend to work for someone else, freelance, build/sell apps?
Elaborating further leads to the following questions:
- Can I start with free course materials, websites, podcasts, videos, books?
- At what point would I be able to actually make a bit of money while learning?
- Is there a particular language I should start with?
- Do I also need to learn other things, like Photoshop, to go along with coding, for design purposes?
- What else do I need to know that I would not think to ask?
Context and circumstances are important e.g. Presume I know nothing and have to go cheap. I can put in more time than money.
The above excerpts get to the point and ask all of the really important questions ... The person who posed the questions already has skills that make him “very employable” .. and, to me, the most important skill exhibited here is “common sense”.
The other trait, which I look for when interviewing potential job applicants on behalf of clients is “do they have a certain obsessive streak, namely", getting to the bottom of a problem, fixing things (very important in programming as bug spotting and fixing is a vital skill to acquire).
There were many constructive contributions in the discussion that followed that I will try to excerpt and summarise and annotate in the next few paragraphs.
Although I have never used them I would suggest looking into MIT's (free) OpenCourseware.. maybe start with the intro to Java? The have many. [ My experience is that the MIT OpenCourseware is, as one might expect, usually of a high standard. However, it is not necessarily the most uptodate. ] As far as language goes, plenty of people have strong views on the matter and declare you should learn X, Y, or Z. However, if you go about it correctly then the language really should not matter that much.. Sure, it will matter at first, but as long as you learn the concepts as well as the literal language-specific syntax/constructs, you will find it is pretty easy to jump from one language to another.
[ I agree most wholeheartedly. The above observation is crucial to being a succesful programmer. The hallmark of a good engineer (and programming can be considered as a branch of engineering) is an ability to see the important concepts and be able to apply them to various problems. However, some programming languages are easier to start programming in than others. Modern commercial IT systems make heavy use of frameworks and different frameworks come with different languages. These frameworks can be quite complex and be associated with steep learning curves. As some of the better paid, and hence more demanding, jobs require mastery of some given framework it is probably sensible to do some “digging around”. Later on I will discuss various frameworks in the context of learning to program and developing a programming career. ]
This chimes in with the following contribution to the above discussion :
As someone who thinks in several different computer languages, it's great to be able to code and whatever language you pick is fine. What I could use more of (at a few years older than you, as a professional programmer without a degree) is more specific domain knowledge. So I'd say: Find some process in your life and current work that could be improved with the application of computers, and learn what you need to to optimize that process.
If that's learning Java to build some wide scale web app, that's a great start. If that's learning C and embedded systems to build an automated drape controller, that too. If that's learning Perl to sort through some huge data set and distill it to a usable report, that too.
Programming is a tool, and it's a pretty refined one compared to when I got into the game. What's interesting isn't the tool itself so much as what you do with it, and at 41 you probably have some domain knowledge that'll make the "what to do with it" even more interesting.
The next contribution to the discussion was also quite insightful
I am a late starter in programming myself -- didn't take my first programming course until I was nearly thirty. It can be done, but you *really* have to enjoy it. You don't need to learn Photoshop, unless you want to be a designer/coder (say, a front end dev for web pages). You're right that whether you need a degree or not depends on exactly where and how you want to work.
What I would suggest you do is try to do a lot of work for yourself right now. Start out with a simple language (Java is good; Python might be better -- there are all kinds of online tutorials for this) and start building basic programs on your own. Lots of them. If you get stuck, look on the internet and at places like StackOverflow for help. If you find this enjoyable after a few months, then you'll be ready to decide how deep you want to go.
Another tip: doing open source projects is a great way to gain experience, and looks really good on a resume. But it can be *hard*. Don't even try until you've been coding for a while. Good luck -- it can be done if you're dedicated.
One thing that you might be thinking about the contributors to the above discussion thread is that they all sound quite well educated with probably a college or university education. However, for those that have not had the benefit of a higher education it is never too late to start.
This might involve taking (in the UK) a maths GCSE if thinking on embarking on a career in bookkeeping and administration, or data analysis. It is also worthwhile obtaining an English Language GCSE as this is often required in many jobs. Many software tools have programming languages built into them and these too can provide a good introduction to programming.
Mastering tools such as Microsoft Office (or the Open source equivalents such as Open Office or Libre Office) can not only open many opportunities in the job market, but also serve as an introduction to programming and to the pursuit of a new career. As an example a mastery of Excel and Access can be a very useful skillset to have when thinking of training as a bookkeeper.
Another important thing is to become part of a community or support group. Web technologies can be used to advantage here and runjumpdev is a nice example of what is available and possible.