- it's not for everyone, you sit for hours in front of a computer not socializing
- it can be a very rewarding career, there are many tracks one can go down
- it requires a mindset that learning never ends, many people have stopped learning, so restarting that process is difficult
- that switching careers typically takes full time effort to be successful.
- to checkout the Grasshopper app to get a taste of programming
- try an online course before spending significant money on a boot camp
- bootcamps are a better path than self teaching, but to be very careful when selecting, top ranked and widely know is the way to go
- sometimes it can be better to learn a little programming to automate processes in your current role, rather than switching careers to become a full time programmer
I am not a super smart person either - I had an average talent and got average grades. However, the asset I do have is that I am OK with sucking and failing at something over and over again. I think this trait is more important than intellect.
Are you the kind of person that can bang their head against a problem for many days not quit? If so, you can be a software developer. Some natural intellect will help, but perseverance is likely more important. In fact, maybe being somewhat unintelligent is even better since you will be used to not succeeding at everything so easily.
*Caveat - it took me about 7 additional years to actually become good at writing code.
You are wrong. Software is a passion of yours and had been all of your life, but that's not the case for many or even most of the many millions of developers out there.
For them, it's just a job and it can be learned just like you learn any other job.
I studied history at university, did a lot of traveling after graduating, working casual jobs for years. I was 28 when I started work as a junior developer after spending a few months doing an evening course in the UK. (1998)
I chose programming as a profession not because of any passion for the subject (I had none), or experience working with computers as a teenager (I never had one). I chose it because even back then, in 1998, it was a lucrative profession, and one that I could learn 'on the job'.
Things were a lot different back then. On the job training was more of a thing and CS courses were not always packed to the gills at university.
You can be a great doctor without immersing yourself in medicine from a young age. You can learn to be a great vet, lawyer, school teacher, even writer. Writing code, building software - it's no different.
>What do you say to someone who wants to get into software development?
Tell them you need to put in the work, but the rewards are worth it. Tell them it's a varied field, as varied as medicine (where there are nurses, GPs, plastic surgeons and heart transplant surgeons). Tell them that even though they might make lots of money, that money alone won't make them happy and that the office politics is no better or worse than any other profession.
A lot of the time this voiced desire to get into software development is really approximately the same seriousness as a new year's resolution. Some flash of desire for self-improvement that quickly dies, before or occasionally after the first attempt. I also see something similar from software engineers who want to get into my subfield(s) - they'll ask very specific questions about which textbooks to buy, videos to watch, etc. for every tiny topic. I'll answer them, but have no real belief they'll achieve their goal. Often the goal is felt to be satiated upon spending money to order a textbook. I myself am not immune to this phenomenon, of course, as the hefty physics textbook sitting unread on my desk can attest.
Entertain their desires, encourage them, but give them opportunity to gracefully fail without destroying their savings and mental health by flaming out of a bootcamp.
I mean, 90% of development these days is knowing what parts to glue together and where to get the parts. You're converting business rules into code: for the most part, it's really not that hard.
Want to help your friends get into software and don't know what to say? Tell them to go for it. Let them decide if they like doing it.
2) You're competing in a global heavily saturated market and need to find a way to stand out (all the qualifications, certifications, github repos, friends you can get to land the first proper position)
3) You're not special but you're not a failure either. Software dev is a rollercoaster of feeling like you're one or the other
4) Don't aim to be a software developer, aim to solve a problem you're interested in (software development for the sake of software development is terribly dull - 99% of the problems are boring - find the 1%)
5) Ignore the hype. You won't be a rockstar programmer, top 10 app store, bitcoin millionaire tomorrow because you bought that Python book
The most important base-level skill seems to be the ability to hold the concept of what I call "signal flow" (and others would call "state") in your head. The two jobs I've done in my life that I've done for money AND for fun are programmer and recording studio engineer. They are essentially identical. Hear me out:
When someone sings into a microphone, the signal travels through a cable, into a pre-amplifer, then an equalizer that cuts out the low end, then a compressor to limit the dynamic range, maybe you add some reverb and some delay. You need to be able to understand what is happening to the signal at every stage. For example, if you run the signal into a compressor BEFORE you cut out the low end frequencies with an equalizer, the results will be dramatically different. If you add delay (an echo) to the signal and THEN add reverb, it will sound different and you probably won't get the natural sound you are looking for.
When I was training audio engineers, if they didn't QUICKLY grasp this concept, they were most likely going to struggle.
Software is pretty much the same. You need to know what each function is doing, the state of each variable as you step through, etc. If someone without any programming experience has trouble following the value of X:
X = 10 Y = 15 X = 5 X = Y+X X = ?
Then they will struggle learning.
More recently, software has become a question of having a wide range of shallow knowledge, and the ability to google really well. But I think the fundamentals are the same.
I do know a few people that got into it later in life, but those just did it, they didn't ask friends how to get started. So usually when someone asks, I unfortunately immediately predict they won't make it - since everything you need is available online, a person that asks already is showing lack of motivation or "digging" skills.
Computing is now such a ubiquitous part of life that it's interesting to a much broader set of people than it once was.
I won't assume this is true of you, but I'd say this assumption a lot of programmers have that they've always been intrinsically interested in computers is cart before horse. It's probably more that computers were relevant to other things they were interested in - themes like math, gaming and sci-fi - and that provided the hook. The intrinsic interest came later.
Being real about it, these were some of the only major themes that computers were relevant to until relatively recently, and that's a decent explanation of why we see a concentration of people with those interests in the industry today.
As the relevance and impact of computing broadens out, massively, we should expect and welcome a much wider array of people becoming interested in it where in the past they wouldn't have been. It's not that they are coming to it late, they are exactly on time for it to align with their interests, just as it was for you.
You should use the benefit of your experience to encourage and help them to get started!
Bootcamp is a really good shortcut. It's no surprise that most bootcamps arrived at the conclusion that front-end dev has a lower barrier to entry and focus on that. Kudos to them. It's a great way to get started.
Working a software-adjacent job can also lead you to software (I took this route), whether that is being a data scientist, data analyst, or any job that might benefit from a bit of python scripting. It greatly reduces opportunity in some cases (for example, a lawyer who leans to code to help his day job), in other cases, it simply delays it (if you really want to switch to SWE, you kinda still have to start at a junior position at some point)
Self-taught is absolutely possible. But it also means you have to do both the course planning as well as the learning, which adds another layer of challenge. It really takes a lot of dedication to go this route.
Software is unique in the sense that your skill becomes obsolete much quicker than other fields. It's a double edge sword - on one hand, you have to constantly learn new things, on the other, this dynamic creates a lot of jobs, because you don't have to wait for people to retire or switch jobs. A 3 year react dev is consider senior, same goes if you have 2 years of prod experience with k8s right now. You just don't see that in other fields.
Your lifelong learning and passion are a key part of your identify, and most probably the reason why your friends respect you and trust you enough to approach you about software.
Unless your friends are trying to replicate you, it won't be necessary for them to develop the same lifelong understanding as you. If all they want to do is to learn about software, they could just learn a little bit about it, or as much as they can given their late start. That might still satisfy them.
If you want to be a good friend, it's important for you to distinguish between their ambitions and your passion. Try to see things from their point of view, and only share as much information as is necessary for them to be able to see the next step of the big picture.
For example, if they don't already know any programming languages, you could just tell them that there are different languages that suit different applications, and ask them what they are interested to work on. Don't talk in detail about the merits of particular languages because they won't be able to grasp these details yet.
If they say they just want to be able to program Excel, or to write an app to help their grandmother remember something, then you just need to tell them about the tools that exist for those applications.
Don't tell them too much. Just point them towards the right starting point, and tell them they are welcome to bring more questions to you as they arise. That will keep the conversation relevant to them, and avoid the difficulty of having you talk for too long about things they can't understand or appreciate yet.
As usually, it depends. If by getting involved in software you mean "passionately doing software for software's sake", they are likely late. If you instead mean "getting a superpower helping you think through and implement solutions to your not-computer-science-problems" then they are never late.
There has been some discussion whether everyone should learn some coding in the school. Frankly, I am quite irritated by some commenters arguing that it is not necessary because "not all are going to be software developers when they grow up". Well, not everyone needs to be mathematicians and we still teach some math to all kids. And not everyone are going to write novels, but we still teach kids to write. As I said, wring code is a superpower to thinking, and any curious mind should be encouraged to at least have a look.
(I am commenting as if the question is about general interest in coding, not career change towards software development.)
Changing culture is an insane amount of effort for lead positions, and an impossible one for anyone else.
Respect yourself or your mental health will start deteriorating. If this trend isn't caught early, it can take a very, very, long time to recover. It can also be be expensive, and I'm not talking about just monetary cost of therapies, but it can cost you in many other domains. And it creeps up on you, trust me; you don't notice until it's too late.
Depression/stress (burnout) literally damage your brain on a physiological level. It's no joke.
Edit: unfortunately you’ll need to know Leetcode to break into a lot of jobs. Honesty just memorize solutions for two weeks. It sucks but it is what it is and it’s easier to go with the flow than get angry at it
I'd say do it.
---
On the other hand, if someone likes the idea of writing code itself, I'd say don't go to a bootcamp — learn python from FreeCodeCamp — there's a whole world out there that you can do if you learn how to manipulate computers and data
What? Of course you are wrong. It sounds completely alien to me why someone would even have such doubt. It sounds arrogant too.
Anyway, to your question, tell people to try for themselves for some time and let them discover if they have joy coding something. Joy is important.
It is completely ok to get into software development for the money, but if you don’t enjoy the daily work of programming something the chances of you get a rewarding career out of it are slim - personally and financially.
Software development is different from some fields in that you have to continuously study software development. That does not really happens with most office jobs (marketing, HR, finance, sales) and happens in a much slower pace in field jobs (plumbing, carpentry, etc). That’s why joy is important.
It is very possible that someone could discover the joy of programming later in life.
My personal recommendation is to go with www.freecodecamp.org. Try it for a couple of months and try to identify if you like going through the tasks. And if you get happy after solving a particular trick one.
freeCodeCamp is free, well done, with very small tasks that allow you to adapt to any schedule you might have for studying.
If you feel something is too complex to teach then do not teach that thing. Learn that thing better from experts who have simplified that complexity into an elegant framework. Then teach that thing.
Today things are higher level so I think there is room for a wider range of folks. One group are folks that are great at spreadsheets and the like. Gamers or someone who is interested in tinkering with javascript. Perhaps they have a technical career that requires attention to detail.... a tax lawyer, medical billing, accountant? Music? Ok. Otherwise it will be tough.
My first thought is to sit them in front of the PBS Computer Science Crash course series. (Can be found on Youtube but need NewPipe or PBS app to watch commercial free. Watch at .8x speed or slower, because I feel they speed it up to appeal to hyper teens.)
If they can get through to the last episode before giving up, I think they deserve a shot and encouragement.
This might get them to reflect on whether software is where they want to spend their energy and time. If so, then great, figure out how to get them pointed in the right direction. But, if they realize they are mostly interested in software because they've heard stories about sweet money and fame, maybe it isn't the best choice for them.
Like any field based on science, you can't really drop yourself into it and expect to do well. You need an education in said science.
Obviously there is the self-taught crowd, who are a special breed who love life-long learning. This takes time.
My recommendation would be to show anyone with an interest in software development the Python REPL. Using REPLs gives a good taste of the concepts of programming without all the foreign concepts of IDEs, etc.
I feel like there are many paths to computation and I’ve met many people who have become functional technologists from various backgrounds. I think the most important thing to figure out early is do you like programming. Do you like this kind of thinking?
I like trying to help people figure out a problem that they can solve, in their own life, by writing a little software. Reformatting spreadsheets is a perennially good choice. Every office worker can use that.
Beyond this - I like referring people to Peter Norvig's essay, "Learn Programming in Ten Years".
I usually offer a free copy of the book and they get really excited.
After a month or so, I sometimes hear back about what they learned from the book & how they are applying it to their journey of becoming a software developer. Those who stick with it usually land jobs within 12-18 months.
Otherwise I don't hear back from them at all. Their loss.
People will go into detail about their learning path, projects completed, and hours spent learning.
It is highly US centered, but it definitely seems possible for someone to start late in life and learn enough to become employed as a developer.
So tell them anything is possible apparently.
Give them a heads up it is not for everyone. If they can grok the course. Give them another.
If they can’t get past the first course, have a heart to heart.
1. Software that is undeniably evil and has a net negative effect on humanity for money
2. Software that isn't directly evil but you'll be adding features that exclusively make it worse
3. Software designed to help the former two groups work more efficiently."
That sums it up pretty well.