
Ask HN: How do I become a Software Developer? - _zero
I&#x27;m 24 Y&#x2F;O and have no experience with developing software whatsoever.
I graduated High School 7 years ago and didn&#x27;t have a plan in mind for the future. Recently I&#x27;ve realized how much time has passed and how little I&#x27;ve done to improve my situation.
5 years ago I worked as an intern doing QA Testing at some startup and it was a fantastic experience which opened my eyes to a world that I knew nothing about. But since then I haven&#x27;t made any moves towards becoming a part of that world. 
I honestly feel quite disgusted with myself for not challenging myself mentally, for not having a career at this point in my life and not having money. I guess being unemployed for the last 6 months has really given me time to reflect on myself.
I have a plan in mind, which basically consists of throwing myself into programming for however long it takes until I become proficient in whatever language(s) I choose and then crafting a portfolio. But my dream is to build something of significance that will not only change my life, but the lives of others around me as well.
However I&#x27;m starting to think that maybe I&#x27;m not good enough and that it&#x27;s too late, especially when I read stories of people younger than me kicking butt and taking names.
Math was never my strongest subject and if I had to go to college, there&#x27;s a good chance that I&#x27;d be placed in remedial classes, just to give you a picture of where I currently stand. But I realize that the internet provides me with nearly unlimited resources to improve myself and achieve my dream.
My father and I fell out recently so I&#x27;m finally on my own, which is a good thing because now I really have an incentive to go all out, so to speak.
I&#x27;m lost and would like some guidance. I lurked for 2 years or so and decided to create an account today to post. I&#x27;d like to hear your story of how you got into Software Development and your struggles along the way. I&#x27;d also like some feedback on the best way to go about making my dream a reality.
======
trcollinson
To be frank with you, start working, hard. This is going to be your largest
huddle. When you read this message, what were you doing? On Facebook (or some
other social media)? On some game? Watching your giant Netflix queue? I don't
know what it was but it probably wasn't coding. And if it was, then good!
You're already on your way.

I honestly don't mean any of that to be mocking. I am just saying, a lot of
people fail because of distractions from their primary goal. So now you have
to ask yourself, what are you willing to give up? Are you willing to block out
all of those distractions so you can start to learn a new skill? Only you can
decide that and only you can make yourself fail if you don't.

Next, start building something. Honestly, you don't need to understand math at
some high level to build great software applications. Go pick something and
build it. Look at Jennifer Dewalt
([http://blog.jenniferdewalt.com/](http://blog.jenniferdewalt.com/)). She set
out to make one website per day for 180 days and blog about it. Imagine the
amount of dedication to complete such a task. And look at how much she learned
in that time! Just pick things are build them. Learn. Grow. Start right now.

~~~
_zero
>I don't know what it was but it probably wasn't coding.

You're right, I wasn't coding.

I waste a lot of time on the internet not being productive, so I'll change
this. I signed up for a codecademy account recently, so I'll challenge myself
by doing some exercises there daily.

>So now you have to ask yourself, what are you willing to give up?

I think I'm finally ready to give up all of my distractions. I'm getting sick
of not making any progress.

>Look at Jennifer Dewalt
([http://blog.jenniferdewalt.com/](http://blog.jenniferdewalt.com/)).

This is great. I bookmarked her website and I'll check out her work. Maybe
I'll do something similar once I feel capable enough to build something.

>To be frank with you, start working, hard.

>Learn. Grow. Start right now.

Thank you :)

~~~
nphyte
go here [http://www.freecodecamp.com/](http://www.freecodecamp.com/). if you
stick through it you'll learn enough to get a job. Also it's not a cakewalk.
goodluck

~~~
_zero
This looks pretty neat. I'll check it out! Thank you.

------
ruraljuror
It is great that you have a goal and a direction, but you are pinning your
hopes on something that you do not know very much about and you may not even
like. It is easy to read about coding on the internet and think it is the
answer: that you are going to lock yourself in a room for 6 months and when
you come out your career and life will be sorted. This is a delusion, a common
delusion many of us have to one degree or another. I switched careers to
become a software developer and I'm already trying to figure out how to get to
the next step. There was another post earlier today about a career switch and
the poster seemed to be blaming it on the company. Becoming a software
developer per se is not the answer. You need to focus on becoming a well-
rounded person, part of which may involve becoming a software developer.

Being a dev involves a lot more than just coding; communication, organization,
teamwork, etc. all go into development. These are skills that are harder to
pick up from the internet than coding. It is for these reasons that I would
recommend that you consider going to school as a good way to start your
career. School is a clear cut path in a situation like yours where you are
going from basically no experience to starting a career.

School is not the only way, but I personally would bet on it as the better
outcome. Do not let math be a deterrent. You can learn it. Check out Barbara
Oakley's book A Mind for Numbers and read Lockhart's Lament. It does not have
to be an impediment. Finally, as you mentioned there are a lot of resources
online. MIT Open courseware has a lot of awesome resources, especially the
intro to programming with Python. Coursera is also obviously awesome. But if
this career were as easy as spend 6 months or a year studying and come out
making $100K then everyone would be doing it. You need a more realistic plan.

So you have a general direction: software development. Now make some short-
term and long-term plans about how to lead a good life and do what you're
interested in along the way.

~~~
_zero
Thanks for the insightful comment. I feel that a dose of realism is always
helpful, especially when it comes to something as important as a career.

You're right that I don't know much about development and that I might not
like it.

I grew up on the internet, from the days of AOL chatrooms during the 90s to
various other websites and message boards. I learned how to repair computers
as a teenager because of the internet and my interest computers. Now I can
function as an (entry level) I.T. Technician. I focused a lot on maintaining
hardware, software and Operating Systems, but never looked into creating
software until pretty recently.

But what really got me interested was what Edward Snowden did. Because of his
sacrifice I started to get interested in cryptography and open source
software. I moved away from Windows to Debian just to experiment, and it turns
out that Debian is actually pretty cool.

I believe in the utility of the internet and computers. To me, it just feels
like the right step to take and even though I may regret my decision in the
future, I'll still give it a shot and try to accomplish something. Besides,
it'll be nice to challenge myself with a new hobby :)

I'll check out the book and course recommendations. I'm probably using math as
an excuse to continue procrastinating because I'm afraid of failure, so I
won't let that deter me. And I'll definitely consider going back to school
once I start working again.

------
happycry
Let's start with stating a positive. You're enthusiastic about developing
software. You have no idea how many software engineers dread writing code (and
thus delivering bad software).

Luckily, there are tons of great resources out there to learn to make whatever
you want. Don't be overwhelmed by what's out there. Although HN is a fantastic
place to keep up with what's going on, it's very easy to get caught up in the
noise.

Learning to write software is like learning to do anything else. All it
requires is practice. I was fortunate that I went through a university and it
opened my eyes to a lot of theoretical things, but I am where I am today
because I spent a lot of time outside of university learning things that were
more practical.

I can point you to a few resources to get started (there are plenty more that
people here can recommend!)

Generic Programming:
[https://www.codecademy.com/en/tracks/python](https://www.codecademy.com/en/tracks/python)
[http://openbookproject.net/thinkcs/python/english3e/](http://openbookproject.net/thinkcs/python/english3e/)

Web: Ruby on Rails -
[https://www.railstutorial.org/book](https://www.railstutorial.org/book)
Railscasts - [http://railscasts.com](http://railscasts.com)

At the end of the day it depends on what you're interested in and what you
want to make. I find that when I want to learn something new I try to remake
what someone else has already made. That way I'm thinking less about the idea
and more about how that software should be constructed.

------
burritofanatic
I left law, ended up in QA, and am now a full time software developer. I think
being in QA helped a lot when it came to teaching myself - would be employers
would be glad you had work experience in a professional software development
environment. This will be to your advantage, though trying to go dev from a QA
role at the same company may be more difficult for political/business reasons.

I think the thing that got me where I am now within a reasonably time period
is picking a type of technology (in my case, it was learning iOS and Git well
enough) I wanted to work with, then stick to that until you become employed
while attending every hackathon and relevant meetup, time permitting. You'll
need projects that demonstrate your aptitude and ability.

If you or anyone else is interested, my story is actually on Codecademy:
[https://www.codecademy.com/stories/155-from-lawyer-to-ios-
de...](https://www.codecademy.com/stories/155-from-lawyer-to-ios-developer),
and I've even written a book about the transition:
[http://quitlawandcode.com/](http://quitlawandcode.com/)

You're going to do fine. I know it seems like such a binary and insurmountable
transition, but the more hours and practice you have, the more OOP and other
concepts will just click for you. Also, you're not too late! I started at
learning at 30.

FYI: I'm terrible at math, though I love learning, and would like to re-visit
it when I have some more time (probably when I have high school aged kids).

------
morepyplease
Similarly I'd like to ask how to jump industries. I have 12 years in
enterprise IT as a network and systems admin and the last 5 years I've been
living and breathing powershell at work, developed several python/flask side
projects (one full site with cc processing, coupon code checking with JS,
email notifications, user registration, etc.). Learned to use git, developed
my first published windows store app, and now continuing to learn c# for fun.

I find myself enjoying coding more and more each day and IT support less and
less. But I "know" IT territory very well. From IT managers, to day in day
out, to projects one cam expect. I live and breathe it. I feel out of my
depths even applying or building a resume for a development job and have a
family to support. What's the safest and best way to get my bearings and jump
into a dev job?

Work is supportive of my advancement in coding, but its leveraged as a cheap
way to automate processes.

~~~
andymurd
\- Work is supportive of my advancement in coding, but its leveraged as a
cheap way to automate processes

You are the magical "DevOps". Put that on your resume and wait for the offers
to flood in. Just tell prospective employers that you want more "dev" than
"ops".

------
csorrell
Well, I was 25 when I started learning how to code. The big motivator for me
was the birth of my first child, and I was sick of minimum wage labor jobs.
Transitioning into software was a long process for me. I spent about two years
working at it in the evening hours before I was able to land my first real
job. There's a steep learning curve upfront and it takes a lot of effort. I
would recommend signing up for classes at your local community college if you
can. See if you like it first, then re-evaluate your decision after a semester
or two. If you're like me, being enrolled in some kind of program is going to
help keep you focused and on track.

Best of luck. You can do it!

~~~
_zero
>Well, I was 25 when I started learning how to code. The big motivator for me
was the birth of my first child, and I was sick of minimum wage labor jobs.

I don't have kids, but I certainly can relate. My family immigrated to the
states from the Caribbean, making me a first generation American. They aren't
well off and even though we aren't that close, I'd like to be in the position
where I can assist them and their kids if they ever need help. I feel that the
best way to do this is to pursue this path that I've chosen.

> I spent about two years working at it in the evening hours before I was able
> to land my first real job.

That's impressive. Thanks for the inspiration.

I know that nothing in life comes easy and that basically you (sometimes) get
what you put in. I was uncertain yesterday, but I think today I'm ready to
take the first step towards this crazy dream of mine.

>Best of luck. You can do it!

Thanks! And good luck to you as well. :)

------
bwldrbst
I was interested in coding from a young age but was a terrible student. I
barely scraped through high school and never completed any tertiary education.
By 22 I was unhappily working as a pizza store assistant manager.

I then took a pay cut to get a job as a tech support guy at a tiny local
internet provider. Over the next couple of years the company merged with a
bunch of other small ISPs and I found myself given more responsibility. Not
liking all the paperwork this involved I wrote some web based tools in perl to
make my life easier. This was noticed, as was the fact that I was cheaper than
a "real" programmer, and when they wanted to expand the dev team I was given
the job. Now, after more than a dozen years and quite a few different
organizations I'm a team lead on a pretty large and successful system.

I guess the point of the story is to build stuff, especially stuff useful to
you right now, and don't be afraid to take risks.

------
halotrope
I have also started my career in Software Development with a student job for
QA where I was manually testing iOS apps while studying marketing. I was 24
when I took this job because I needed money and was good with computers and
interested in software anyway. I am almost 28 now, working freelance with a
partner, recently incorporated our little agency, developing products on the
side and making around 120k$ a year pre-tax. So with some grid and
determination it is well possible. My advise would be to:

\- Ignore gatekeepers (The programmers at this first job ridiculed me when I
was asking programming questions)

\- When possible find a partner / mentor that you can learn form and with and
whit whom you can motivate each other

\- Keep on learning really hard, don't settle

\- Show some fucking passion and good things will happen :)

------
doobiaus
If you're not in an environment where you have mentors, or if you find
yourself easily distracted, sign up to a course at a school with proper in
person training and testing or you're just going to keep procrastinating.

~~~
tedyoung
Definitely agree with this. It can be hard to get started and/or stay with
doing the learning when you're doing it on your own. Some people just do
better when learning in the context of a group/class or with a pair/mentor.
It's really easy to spend time and find yourself just reading/browsing the
coding sites instead of doing the work, i.e., writing code, so either try and
set small, achievable goals, or find someone you can learn with.

------
coryl
I started when I was 24, that was 3 years ago. Since then I've shipped 3
million total downloads on the iOS app store as an indie developer. I've
learned enough programming to make almost anything I can think of. I haven't
actually ever looked for a job because I like my freedom so much, and I make
enough to survive.

Figure out what you want to learn/build, and just start. When you hit
seemingly insurmountable roadblocks, just take 20mins away from the computer
and come back. Stick with it, have a long run view rather than a short run
view.

------
meric
To become a software developer, all you have to do is develop some software
and keep doing it. I started when I was 13 and now 12 years later I think I'm
doing OK. I started doing Freelancing jobs since I was 19 or 20.

------
nikhilkalegregg
You are young. Becoming a coder is very doable at that age. I started self-
teaching myself how to code a little less than a year ago just before I was 24
with no prior experience besides believing myself to be raw at math just like
yourself. If you understand math, it should not be too difficult. Everything
is abstractions, and you get to create the abstractions. If you think about
coding in terms of just organizing tables, it makes it really easy. Some of
the fancier stuff might take some time (or some copying and pasting), but most
of the syntax that is probably going to intimidate you is not necessarily
useful in practice. Think of it as writing an argument in a philosophy class.
What are the system’s conditionality’s? What is the end goal of the program?
Sound, clean and uncluttered logic with a distinct argument and point is what
you are going for. Personally, I found that I learned very fast using PHP,
MySQL, HTML5, jQuery, JavaScript, and the LAMP stack. It gave me the
foundation to do AJAX (asynchronous calling) and learn a lot of the
intimidatingly sounding frameworks which are not altogether that useful,
necessarily (I only know as far as my opinion). But I would recommend checking
out that stack. They work together nicely and are not syntactically
challenging. Another thing I'd recommend is replacing your recreational gaming
like crossword puzzles, sudoku, etc with Project Euler. Its an enjoyable way
to learn while using competitive fuel/energy rather than draining any oil of
finishing a task for a task’s sake. However, for me, 100%, the single most
important thing was setting myself projects, and committing myself to them
despite my subconscious knowing they had no chance at success. The project I
chose was a music new-era napster/iTunes in the cloud website. I would
recommend something similar because it is relatively enjoyable to learn/code
and there are a million different ways you can improve any base product you
have, (offline playing, sharing at the blink of an eye, efficient uploading,
and you can get rid of Spotify, Pandora, etc. You can also make it illegal as
shit and feel like a cowboy and just see how great you can make it. Chances
are, it will be really illegal but better than anything else you can currently
get right now. Use that as motivation, enjoy the fruits of your labor, save
money, and inspire yourself to keep going.

Once you've exhausted the features you can add to a music app, you can execute
any idea that you come up with that utilizes the Internet, sharing, etc. You
won't necessarily become a master of 4D printing, but any theory you have
about anything you can test and create a physical representation of on the
Internet. Don't rush building it for the sake of finishing. Learn and
understand what you are doing and your next project will have the potential of
promis. I spent 3-4 months working on a website that I knew had no chance of
becoming anything. However, I just kept smashing my head against the wall and
making it better while slowly but surely improving my skillset to the point
where new things now come easily, because I understand the philosophy. Now
that I have moved on from that initial music website I can now pursue much
more innovative and intellecutually stimulating projects (which I wouldn't
have been able to do had I not spent so much time on a project that I knew had
no chance of success). Give yourself a throw away project, commit yourself to
it, and use it as training for the next one. If you truly commit yourself, you
should be able to build pretty much anything you see on the Internet 1 year
from now. That is not a guarantee! But you have plenty of time and there no
reason not to believe that you cannot.

