Readit News logoReadit News
Posted by u/ramesh31 4 years ago
Ask HN: What do you say to someone who wants to get into software development?
Occasionally I have friends who really want to get involved in software, but they have zero background in it whatsoever. I'm never really sure what to say. Computers and programming have been a part of my life as long as I can remember. It's the only thing I was ever good at or wanted to do. I can't really understand how to articulate that. It seems impossible for me to recommend someone do this stuff without having that lifelong level of understanding and context and passion. Am I wrong? Is software really not that hard, and able to be learned later in life?
verdverm · 4 years ago
I tell those friends

- 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

sixothree · 4 years ago
1. My number one suggestion - have intellectual curiosity to the point of obsession. You can succeed without this quality, but you won't be as forward looking and will be doing what is required by the task at hand.

2. Heathcare has been secretly booming for the last 10 years without very much attention at all. The convergence of regulation and technology leaves a _huge_ opening for innovation right now. Specifically, as of this year the patient will own their data and can use whatever application they choose to ingest and utilize that data. It's a big deal. I wish I was in a place where I could be part of the end-user experience.

> there are many tracks one can go down

I think this one is very important - both for the person giving and receiving advice. There are so many paths just for software development specifically. The paths absolutely endless. And that might be exciting or present opportunity. But it's also a responsibility of someone giving advice to make the person aware of the vastness but also to help them navigate it all.

Yes there are three or four major languages, but you could find yourself working in one of hundreds. There are many support technologies - front-end, back-end, api specific, frameworks, hosting, data storage and models.

And related to but not specifically software development, there is QA, devops, project management, and many other support fields that require an understanding of how software works.

digisign · 4 years ago
> this year the patient will own their data and…

Anyone have a link?

gregkerzhner · 4 years ago
Really, entering software isn't that bad. I didn't have any coding experience before college, and after my first year (which only entailed two software classes - I took a lot of humanities that year too), I had a job writing code for a research project. Thats a pretty quick path to employment - about 100 hours or less of training total*. I think any motivated person with a decent predisposition for math and logic could pick up the same skills in 6 months of effort, maybe even on nights and weekends.

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.

btheshoe · 4 years ago
To provide more perspective - I went from not really coding to an internship offer from a big tech company in about 12 months, and I didn't even work particularly hard. I still have no idea how to code though
DarrenDev · 4 years ago
>Am I wrong? Is software really not that hard, and able to be learned later in life?

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.

ahelwer · 4 years ago
A few friends have asked me about this, idly wondering whether they should join a bootcamp or whatever. I enjoy teaching, and am quite good at it, so I give them an offer: a free 1-2 hour 1:1 introductory programming lesson. About half the people take me up on it and none of them have yet subsequently applied to a programming bootcamp. One person maintained a baseline interest and I occasionally give them more free lessons, which I find is a nice group virtual activity to maintain a long-distance friendship.

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.

aeonflux · 4 years ago
What subfield would that be?
ahelwer · 4 years ago
Formal methods and distributed systems. I'm also fairly knowledgeable about quantum computing.
HeyLaughingBoy · 4 years ago
There is nothing special about software development in terms of a career. You learn it like you learn anything else. Some people have a natural aptitude, some people will never get it, most are in the middle: capable of becoming competent developers.

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.

Graffur · 4 years ago
> it's really not that hard

I think this is a myth that people who learned a long time ago and learned over a long time say. It is hard - there's a lot of complexity involved. It does a disservice to other software engineers.

adjkant · 4 years ago
Many things have difficulties and complexity. I would phrase it not as "software isn't hard" but that "it is no harder than many other things". This specific questioning is not often employed for many other equally complicated and difficult fields, which I think is a bit unfair and often acts as a gatekeeping mechanism that has led to diversity problems in the field.

> It does a disservice to other software engineers.

How does that phrasing affect any other engineers?

deltaonefour · 4 years ago
I highly disagree. Software engineering is hard, but out of all the engineering disciplines out there it is the easiest. That's why it's a very normal thing for software engineering to be learned in boot camp or without any assistance.

Most other engineering disciplines are much harder in the sense that the benefits are not immediately practical and the answers aren't as straightforward. Not many people are going to learn electromagnetic theory on their own.

Many software engineers think they're smart because software allows developers to hit all these epiphany points on a constant basis. You hit successes and you can learn convoluted concepts quickly because software presents it all to you in an idealized abstraction. It also quickly tells you whether your attempt at a solution was correct or wrong. It allows for quick learning. The reality is.. all of this happens because software tends to be easier.

Other forms of engineering don't provide you with that many euphoric highs when you learn a new concept or solve some problem because they are so few and far in between. This itself is an indicator that those other fields are punishingly hard.

Just to re-emphasize. I am not saying software is easy. Software is hard. But easier than most other forms of engineering.

jeffreyrogers · 4 years ago
I remember helping a friend with his intro to CS homework in college. It was fizz-buzz type programming and extremely simple, but he could not understand what the code was doing or how to change it to make it work. And this friend is very smart and successful in his career.

Things that seem easy to people who already know how to program or who have the mind for it are very confusing to people just learning.

Fire-Dragon-DoL · 4 years ago
I recently put my wife through a programming videogame (exapunks). She gas a mechanical engineering degree. She has great memory, but she said the hardest part was holding 2 nested loops in her brain to foresee the execution.

That's when I remembered that way back I had similar problems. It takes time to develop that skill and the average person will struggle with that

ojl · 4 years ago
Sometimes, if it’s a large and complex code base, the difficult part can be knowing where to glue parts together, and how it relates with the rest of the functionality. So even if one has the aptitude to learn programming well, both patience and some grit is good to have to make a good career of it.
drdunce · 4 years ago
1) Software development takes 2 weeks to be able to do, and 15 years to be good at

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

issa · 4 years ago
I spent a lot of time thinking about this over the years and I have a few key thoughts:

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.

hirvi74 · 4 years ago
I like your analogy, perhaps because I was a musician at one time lol.

I always used to analogy of cooking. You have ingredients, and you want to bake a cake. Slapping all the ingredients in the bowl at once, won't make a cake. You need to know what to add, when to add, how much to add, how long to bake it, what temperature, and the order of it all. (good recipes are algorithms after all).

Once the cake is made, do you have the tenacity to improve (troubleshoot) it? The cake is way too sweet!!! Can you figure out why? Was it too much sugar or too much icing? Was there sugar in the milk? Perhaps caramel would be better than sugar, etc..

It takes a certain style of of thinking. One that requires, like you said, knowledge of the "state" of things, but also it requires accounting for many possible outcomes of said states e.g. input sanitization and/or input validation.

It's not a forest vs. the trees style of thinking, but the forest AND the trees. The deeper you go, the larger and denser the forest becomes.

emmanuel_1234 · 4 years ago
This is exactly why I really like functional programming / OCaml. It feels like piping modules to let data flow through, which is an abstraction I seem to be most comfortable with. Unlike OOP, which is nothing like this and offer a much more "realistic" abstraction (e.g.: the typical Vehicle > Car analogy), that in my head crumbles a lot quicker when faced with programming problems.
vasco · 4 years ago
I usually say that it's good for everyone to give it a try and ask what they want to do. If they just want to learn for learning sake or because of a plan to switch careers, I'll mention python casually and then I'll wait. Most people will give up after trying it once or twice and that's fine. I never actually had anyone stick with it enough that they wanted structured help.

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.