

I want to be a software developer. Where do I begin? - gotrecruit

i would really like to learn how to program and develop production-ready software. i would like to begin with PHP and either concurrently, or subsequently, learn python. how do i begin? the purpose of my learning is firstly to be able to personally work on developing features and apps for my e-commerce site which is based on joomla (it was developed by professional developers).. the second purpose is that i want to be able to apply for software&#x2F;web developer jobs eventually because i&#x27;d like to work in that field.<p>i don&#x27;t know if it&#x27;s relevant but i&#x27;m currently using a windows machine, and i&#x27;ve often heard from people that windows is a terrible environment to learn programming and to program in. is it necessary for me to get a mac or linux machine?<p>and to reiterate: where do i begin to learn how to develop production-ready software, i.e software that is ready to be shipped? i&#x27;ve done codecademy and similar stuff before which seems really simple and easy, but i can&#x27;t figure out how to translate that &quot;knowledge&quot; from those sites into actually writing something useful and &quot;shippable&quot;.
======
jawns
So I take it you didn't accept the full-time web developer position you were
offered 174 days ago?

[https://news.ycombinator.com/item?id=6094641](https://news.ycombinator.com/item?id=6094641)

Are you still planning to return to school for a CS degree this January, as
you said you planned to?

[https://news.ycombinator.com/item?id=6450381](https://news.ycombinator.com/item?id=6450381)

That would be a decent way to pick up programming skills.

~~~
gotrecruit
yes, the full-time web developer position was turned down because i felt
inadequate for the job. i only got the offer because i listed myself as "lead
developer" for a project on linkedin, when in fact i did very little actual
development. it was more of a personal project that i wanted to develop for,
but ended up overwhelmed by how much i had to learn before i could actually
develop anything useful.

and yes, i do intend to return to school but it would be in fall this year,
not january because the school that offered january admission did not make me
an offer...

~~~
gearoidoc
Out of curiousity, what makes you think you "only got the job" because of the
title on LinkedIn?

Did you consider that the company hiring maybe saw potential in you? Or maybe
even existing ability that you don't recognise (our industry is rife with
impostor syndrome)?

Perhaps they realised you wouldn't be a lead dev but had you earmarked for a
more junior role.

My basic point is: be optimistic and courageous. The worst case scenario is
you learn something. If there's one thing I've learnt recently it's that no
one will hold anything against you for taking a leap of faith.

~~~
gotrecruit
well, i guess i left out another detail which i didn't think was important
since this thread isn't about that. it's a very long story so i'll just
mention the important part but it WAS in fact a junior web developer position
in NYC, which sounds awesome. problem? i am not a US resident, and failed to
obtain a visa to return to the US after i graduated from college. i would have
absolutely at least taken an interview if i was legally able to attend it.

------
gearoidoc
What have you tried so far? If the answer is "nothing", then you need to start
YOURSELF.

Being a "self-starter" is CRUCIAL to becoming a good programmer. You'll only
discover your favourite languages/techniques/etc yourself by trying them out.
No one is going to lay down the pathway for you (ie. Do X, Y & Z).

Windows is fine for development. I find OS X easier to configure but thats
probably because I only switched to Mac after having several years experience.

There's nothing different than "production-ready software" and any regular old
software. Production ready suggests that it has been tested - that's about it.
Tons (in fact far too much) "production" undergoes no or very little testing
so I wouldn't get hung up on labelling.

Make something, anything.

------
talmir
I started programming in the old, dark days of pre-internet when the only ways
to learn programming for a young lad was to either find a book on the subject
(In Iceland the books were pretty rare at the time), find a older more
experienced person to teach me or just hack at it myself.

I went with the last option. I spent many hours staring at the DOS based
Pascal IDE and in-built help documents. I managed to create a few programs on
that which laid the foundation for when I got into C++. After a few years of
learning on my own I found that I could not find a job working on code until I
got my education which caused me to go get a university education at the age
of 26. Now I have a couple of years of development experience both using C++,
Python, Javascript and a myriad of other supporting languages.

Today, all you need to do to learn to code is to code. You have the wealth of
the internet at your fingertips. Choose a language, find a project and code.
Create games if you have no ideas. Clone existing games (Like Tetris, Simcity
or somesuch). In this industry the old adage "Mileage matters" applies.

Eventually, before you know it, you will be churning out production ready
software.

I know I cant pinpoint the exact method I used to get there. All I can tell is
that somewhere along the way, through millions of keypresses in multiple
programming languages, I picked up the right habits.

You can do it to :)

Just go build stuff!

(Oh and regarding the operating system question. The OS does not matter at
all. You can code in all of them. I started out in windows. Currently using
linux for my dev work. Its just a matter of preference)

------
westiseast
Good luck! Don't rush yourself and consider this a long process (1-2 years)
not something you can nail in 6 weeks. In all honesty you might be a long way
away from actually pushing code to your existing site, so put that out of your
mind for a few months and start simple.

I started with little things like a personal blog, tinkering with features on
that, doing some fun and simple project websites, helping do HTML/CSS design
stuff for other more complicated sites from friends (where you inevitably bump
into backend and frontend code challenges) and then started building my own
e-commerce site. Note that whole process was around 2 years. Get stuck into
doing ALL of these things yourself (ie. front-end, backend, server setup etc.)
because it will eventually help. I learned Python by proxy - starting with
Django and then regressing into Python. I'd suggest you do something similar,
because pure Python is perhaps too low-level for what you want right now (ie.
pushing website code).

And yes, Windows is a bit of a crappy environment to develop in. Lots of great
open-source software is written by people developing on Linux/OSX and as a
consequence, their code/documentation/communities tend to ignore Windows.
You'll make stuff work more quickly, more easily and with more immediate help
from the internets if you're using Linux/OSX.

------
shubb
I'm going to give different advice.

You should ideally try to get work at a software focussed SME, where you can
learn from good developers, and slowly grow into larger and more difficult
projects.

There are lots of different small software companies serving different
markets. HackerNews and SV seem to be full of consumer targeted ones, because
of the potential for rapid growth. But a lot of SMEs do B2B or government
work, and you may find that because they are less cool, it is easier to get
them to take you on. They are also more likely more focused on making good
software and actual money, than building perception of growth to get a good
exit for the founders.

At least round where I live, you can find these small companies in office
parks and industrial estates. Find one that is doing something you think is
cool, and vagually chimes with your portfolio. Then write them, and ask if you
can do some kind of a placement with them. Try to talk to the engineering
management, as HR just get in the way. Once you are there, and get on with the
people, it should be pretty easy to get a junior role out of them at the end.
If you are up front that you want this at the start, a lot of them will treat
you more seriusly.

Think about what you can offer them - they will have projects, ranging from
adding unit tests to writing a better time sheet system, that they would do if
they only had time / free resources. Get them to talk about those things, and
then sell them that you want to give it a go.

Other commenters - do you have any suggestions for a better way to make the
initial contact?

~~~
gotrecruit
to be honest, i actually did think about what you said (before you said it) -
i wanted to apply for internships or even full-time jobs at the local office
in my country for LinkedIn, and offer to work for them for free in exchange
for being able to shadow an experienced developer and learn from him/her.
however, i can't imagine being able to offer them anything in return to the
point where they would agree to such an offer. all my friends tell me i should
be paid for learning, so apply for jobs and learn on the job but again, i
don't know how i can market myself to the employer where he/she feels like
it's a win-win rather than simply them investing resources into training me
and then me leaving after i learn them.

but i will go ahead and contact some of these companies' engineering
departments, i think it might be a good idea. do you have any suggestion as to
how i should approach them?

~~~
shubb
You mention linkedin. The reason I said SMEs is that things at a small company
are less process driven. If you want to intern at linkedin, then you probably
have to apply to head office, and probably then intern at head office. But at
a small company, if you convince the chief engineer you are in.

I got my start at 14 knocking doors on a local industrial estate. I came
across a little company developing java accelerator chips for mobile phones.
Later they got bought by arm, and that technology became jazelle, which I
guess opened the way for running Android on a little mobile proccessor, but
when I was there it was 10 guys in a lab.

The CEO liked my enthusiasm, but I was pretty useless. On my first day, I
tripped the power for the building, and on my second I injured myself
soldering, and came in crying while they were negotiating with Samsung in the
next room. Still got the scars. I hope at least they found me amusing.

The best way to get in somewhere small as an intern would be through your
personal network.

Knocking doors is acceptable for children, but I think it would come across as
for an adult. If someone you vaguely know asks their boss if you can come
intern, they will probably say yes.

I'm assuming, from the rest of this thread, that where you are at is you are
in your late teens, and thinking of going to college in 6 months or a year.
Being so young is actually a big advantage.

People generally want to help young people. They have an expectation that you
won't have much experience, but they will want you to succeed because they
would have liked someone to help them when they were young.

If you don't have many software engineers in your network, go to local events,
talk to people, and be up front about what you are looking for. If they can't
help you, they will direct you to people that can.

Oh, and keep in mind that while at the moment web/apps are the big thing,
software and engineering are bigger than that. It might be that in a decade,
the big thing will be applying AI to data to help people make decisions. Or
you might want to get into computational biology for drug development. Going
to school is pretty important for that stuff.

------
DanielStraight
If you've done Codecademy, you should understand the basics (what is a
variable, what are functions, etc). The next thing to do is pick a project and
build it. A good place to start is something like a blog, or calendar, or some
other simple application like that. Heck, an HN clone would be a good starting
project.

Once you pick a project, just take it one step at a time, asking for help when
you get stuck. Don't worry about making it production-ready. It's inevitably
going to be full of vulnerabilities and bad coding practices, don't worry
about it. There isn't a programmer on Earth who hasn't looked at their own
code from 5 years ago and thought, "What on Earth was this guy thinking when
he wrote this???" Build a few projects and you will pick stuff up as you go.
Once you feel like you really understand what you're doing, then you can focus
on making something production-ready. For right now, just get a few things
built without worrying about the details.

Read this:
[http://prog21.dadgum.com/188.html](http://prog21.dadgum.com/188.html)

When you're starting out, _do that_. Don't worry about full understanding. Get
a solution out there, even an imperfect and brute-force one. Obviously, you
don't want to stay at that level, but like I said, you're going to hate your
code 5 years from now anyway, so don't worry about it too much.

Read this too, the first quote on this page:
[http://www.goodreads.com/author/quotes/113989.Ira_Glass](http://www.goodreads.com/author/quotes/113989.Ira_Glass)

~~~
gotrecruit
yes i feel that i do understand the most basic stuff, plus i've taken some
programming-ish classes in college as well (such as VBA for Excel and another
freshman class which also dabbled a little in basic programming principles).
i'm just at a complete loss as to how to go from that basic understanding, to
actually being able to write something useful and then subsequently be good
enough to be hired as a junior or entry level developer. my ultimate end-goal
is to develop software for my own startup because i have many ideas which i
have previously tried to hire outside developers to implement, but failed
miserably.

i'll read those links right now! thanks!

~~~
DanielStraight
I really think you need to start with a very simple project that you can see
through to completion. Writing your own blog or calendar app is pretty simple
if you don't try to add any advanced features (like WYSIWYG editing or
something like that).

For a blog, just make a new post page where you can type in a new post and
then an index page that shows all posts. If that's too simple, make a log-in
system and support for multiple authors.

For a calendar, just make it so you can click a day and type in an event which
gets stored and shown when you load the page. If that's too simple, do multi-
day events and recurring events. Or build a week view and a single day view as
well.

This is the kind of project you would build in classes. It's the only way to
really learn how everything fits together to make a full web app. Learning on
the job is pretty much the only way to really learn software development.

------
mittermayr
One advice from someone who has taught and studied this for over 15 years:

Don't get tangled up on what's hip and cool now, it might be disastrous for
someone just starting out. Here on HN especially, we obsess about exotic new
languages and frameworks. But they often have very little support for true
beginners. Even Rails/Ruby is a pain to setup and understand for a beginner,
they make it look so popular and easy, but you'll quickly end up in a huge
confused state of things you can probably not relate to each other.

PHP would be my suggestion, play with it for a month and try to get as far as
you can, get a grip of how things tie together and such. Then, you can re
evaluate what other languages might be interesting or why certain aspects of
framework driven movements might make more sense.

Pick the easiest, oldest tool you can find and work your way forward,
historically and all will make much more sense.

Disregard your environment that first few weeks, Windows totally works, you
don't need a web server, just use something local. Your dev friends will tell
you PHP sucks and ruby is the shit, but consider that this does not
necessarily translate to "when just starting out".

The hardest part about programming is never the language. It's always the
ability to know how to address a given problem, tactics. Later in life, you'll
be able to use any language thrown at you, it's the problem approaching that
really makes a good programmer. Learn concepts, how a web server really
operates, how a browser works, that stuff. All a programmer does is building
bridges between existing technologies and people (behavior).

~~~
nyrina
Since he wants to start with PHP, I doubt he is going the hip and cool now
route.

No offense to PHP, but it really can't be considered hip anymore.

------
tgflynn
It's a little hard to tell from your question where exactly your problem lies.
If you've done codeacademy I assume you've already got some coding skills.

You say you don't know how to apply those skills to doing something useful. I
would start with an idea for something you want to do. You have an ecommerce
site so I'm guessing you have some ideas for improvements you'd like to make
to that site. I would start with one of those ideas (hopefully a reasonably
simple one at first) then try to figure out how you would code that. Implement
your change (in a development/test environment, not on your live site), do
some testing and when you're satisfied your code is working push the changes
out to your live site.

I'm not exactly sure what your hangup is about "production ready" code. As
others have said there's no special magic that separates "production ready"
code from any other code other than testing and reviewing your code to make
sure you're following security best practices (which should be pretty easy
with today's environments, the frameworks typically provide you with simple
methods to sanitize inputs and prevent things like SQL injection). If you were
building a site from scratch you'd have other things to worry about, like
password handling and secure credit card processing but since you already have
a site I don't think you'll need to deal with those more sensitive areas at
first.

If you'd like to a have a professional spend a few hours reviewing your code
before it goes live that's a service I can offer you. My website is in my HN
profile and contact info is available there. Feel free to email me if you're
interested.

~~~
gotrecruit
yes, i do believe that i'm not an absolute and complete beginner, but if there
is a theoretical 100% expert on programming, i'd say i'm maybe a 5% at most.
i've taken classes in college related to programming but not ACTUALLY
programming (for instance, excel VBA programming, and another freshman
programming class which did not actually teach in-depth programming but
introduced me to the basic principles) and i've also done codecademy and in
fact finished all the php and python classes but i have no idea how to
actually translate the stuff i learned into actually writing something useful.
for instance, my e-commerce site is based on joomla and i tried to read
tutorials on how to develop for joomla and i got absolutely nowhere. i don't
know which IDE to use, i want to implement a daily deals feature on my site
but i have no idea where to start, etc.

when i say "production ready" code, what i meant was i want to be able to
confidently list on my resume that i can write code that can be shipped, and
to be able to actually legitimately apply for developer jobs. right now, the
best i can do is finish codecademy exercises, which is not good enough.

thank you so much for your offer, and i might just take you up on it! you guys
are so generous and nice here, frankly i'm quite touched and inspired to start
right now.

~~~
tgflynn
Ah, it sounds like what's happening is this: joomla is a large piece of
complex PHP code and you don't know how to figure out how to integrate the
changes you want to make into it. Also there may be a lot of code in the
framework that looks strange and you're having trouble figuring out how it
works.

I've never worked with joomla myself, but I'll try to give you a few ideas
about how I would approach figuring it out if I had no clue and the
documentation wasn't helpful.

The steps I would take are:

1) Get a local test instance of your site setup.

2) Figure out how to insert a line of code that generates some sort of output
that you can see as soon as it's executed (ie. a "print statement"). Usually
this will go to some server log file. There should be something in the docs,
hopefully an example, about logging.

3) Make a guess about what code gets executed when a page you're interested in
gets rendered. Most likely this will be the php file that you see in that
page's URL.

4) Once you've got a first message to print out try to reason through the
control flow of the code, adding print statements here and there to test your
understanding of what gets executed when.

By following this approach you should start to get a feel for how the joomla
code works and eventually you will find out where code for your new feature
should go. If you still have trouble figuring that out try to find a similar
feature already implemented in joomla or some add-on or extension and see how
that was implemented.

If you want a recommendation for an IDE I've found that Eclipse with the PHP
plugin works pretty well, but for this process of understanding the joomla
code I would just use whatever text editor you're comfortable with, an IDE
will probably only get in the way of your investigations at this point.

------
elwell
You're on the right track; just jump right in.

I would suggest focusing on one scripting language to start though. Python or
PHP would be fine choices. I learned on PHP and still use it. If I was
starting now, I probably would have gone with Python, but you're fine either
way. Facebook is built on PHP. Google uses Python a fair bit.

There's nothing wrong with learning programming on a Windows machine! People
who are avoiding doing real work quibble about these things. Especially for
web development, it doesn't matter. (If you want to get into native iOS dev,
you should get a mac)

 _Choose a simple project and learn as you go._ Some ideas: a todo app that
connects with a database, a journaling app that writes to text files and let's
you do simple edits, something else you're interested in.

------
pjmorris
Peter Norvig wrote an essay that you might find useful, "Teach Yourself
Programming in Ten Years." [1] Don't be put off by the timespan, apply what
you find useful. One tip, clipped from the article, itself clipped from
somewhere else:

""the most effective learning requires a well-defined task with an appropriate
difficulty level for the particular individual, informative feedback, and
opportunities for repetition and corrections of errors."

I've found volunteering a useful way to enter a professional environment where
I'm not yet comfortable being paid for my output. Find people doing what you
want to do, and offer to help.

[1] [http://norvig.com/21-days.html](http://norvig.com/21-days.html)

------
philosophus
There are several CS101 type courses available on sites like Coursera, Udacity
and EdX. If you already know the basics of programming, you might try an
intermediate level one that incorporates a project.

As for production-ready software, I'd start small then add things onto it. For
example, if you have a simple Tetris game, try adding music or porting it to
Android. Major software projects don't get built overnight and generally
involve teams of experienced developers, so that's not something you're going
to be able to do immediately.

You might want to look into Agile development methodology. That shows a way to
go iteratively from initial idea to something a customer would want to use.

------
dschiptsov
I would suggest a "long road" \- forget for a while all this PHP stuff and
invest some time "to know any better" and learn some theory to better
understand hows and whys that will arise in daily practice.

I suggest to take CS61A by prof. Brian Harvey (it is available on YouTube) and
_then_ with understanding of why something is better than other, take a look
at Scala and Clojure as appropriate tools to get shit done. PHP is a dead end,
and websites could be built with Scala or Clojure too.

I wouldn't recommend Haskell before understanding deeply CS61A and SICP.

HtDP2 and related course on Coursera is another decent start, but the path
described above should be taken afterwards.

------
didyousaymeow
The biggest hurdles I think most people face is maintaining momentum
throughout their educational process.

Most people want to start something new and quickly fall back into their old
patterns that didn't include this new thing. You have to make time in your
life so this becomes a consistent and ever present part of it.

So, my advise to you is to study for some period of time every single day,
even if it is a 1/2 hour. Make it a habit.

Start with reading a intro level book and make sure that you get through it.
Even when you don't understand what you just read. Just finish the book. Read
it every day. Parts of it will be easy to understand and it will start to sink
in. Then, do more.

------
wallflower
Developing production software is a function of how many times the software
you write is "evaluated". Where "evaluated" can encompass peer review,
customer feedback, formal QA, unit tests. The absolute best way to learn is to
teach it. And the best way to do that is peer accountability. Whether through
starting your own study group where you meet weekly to discuss/review your
joint coding progress or joining a company which has an apprenticeship program
as a core value.

Good luck! Fail faster in the hands and care of those who are better than you.

Also see [http://jenniferdewalt.com](http://jenniferdewalt.com)

------
Bahamut
I first learned on Windows - I have subsequently found that it is far better
to do development on OS X or Linux & prefer to do so now, but nothing is
really preventing you from doing dev on Windows.

My approach to learning was to absorb as much as possible as fast as possible.
I spent time trying to learn PHP, Ruby (for usage of Rails), and JavaScript. I
did not do anything with NodeJS then, but I did learn how to manipulate JS to
accomplish things I wanted to do. I did not know best practices, or was
comfortable with OOP.

If you want to learn web development, try building the websites you want. That
is probably the best learning experience to start.

------
henrik_w
Regarding production software: I gave a talk to university students on the
difference between professional software development and programming for a
university course, and wrote about it in "Working as a Software Developer"[1].
I also included ways to cope with the problems of SW development, and how to
become a better programmer. Maybe something in there can be useful.

[1]: [http://henrikwarne.com/2012/12/12/working-as-a-software-
deve...](http://henrikwarne.com/2012/12/12/working-as-a-software-developer/)

------
mcv
Windows is bad for programming only if you're familiar with Unix. A Unix shell
can be an extremely powerful tool in the hands of someone who knows how to use
it. These are the people who bitch about Windows. OSX and Linux are both
unixen, so these are popular with unix afficianados. But if you're not
familiar with Unix, Windows is perfectly fine as a programming environment.

And though I miss the unix shell, I'm currently working on Windows myself. I'm
not thrilled about it, but it works.

------
skrebbel
Windows is fine for development. Tons of people do it, it's just not hip &
trendy on hacker news. Don't waste time on learning a new OS if what you
really want to learn is code. Both PHP and Python have first-class support for
Windows, and so do most other tools (databases, webservers, etc).

Best way to learn is just by beginning. Set yourself a relatively modest goal.
It can be useful even if it's modest. Something you need, maybe for yourself,
or for some community you're in.

~~~
rimantas
What you say is true, but I think it is worth mentioning that majority of
hosting for PHP will be on some kind of linuxy/unixy system so familiarity
with that won't hurt.

------
phantom_oracle
I found someone else here that was also looking for real-world experience. If
you need some, contact me.

Our teams are almost at the stage of beginning to write the actual code, if
you can catch up on the documentation and have your system ready (a VM with
some Ubuntu-based distro and the correct dev tools) you can join us.

Also, you can develop on Windows. It isn't that bad. A lot of companies are
looking for .NET devs (which I think only runs on Win) so it is fine to use
it.

~~~
gotrecruit
hey can you tell me more about this? i'm definitely interested, but i don't
know if i can catch up on time (although i'm willing to put in the effort to
try!) to be able to contribute to your project.

~~~
phantom_oracle
Have you completed the Ruby/PHP/Python track on codecademy?

You say that you are beginner, which is fine, but you should at least have
done 1 of those 3 courses already.

Also, what is your email? You can use boun.cr to not expose your real email
address out here.

~~~
gotrecruit
Hi, yes a few months ago i finished all the PHP and Python classes available
but I think they have new ones now that I haven't completed (which I intend
to).

thanks for the link to boun.cr, it's a pretty cool site! i just used it and my
email is gotrecruit@boun.cr. please let me know more about your project!

------
philwelch
If you're worried about using Windows, you'll likely be fine running a Linux
VM on your Windows box rather than getting a new box.

------
aestra
I can't stress this enough but if you're going to deploy a web application you
need to be serious about and learn about web security.

[https://www.owasp.org](https://www.owasp.org) is a good place to start.

Windows is just fine, it's a personal preference. I learned (mostly) on Linux
but I use Windows at work, whatever.

------
n_coats
I'm in the process of throwing together a short and sweet e-book (20 pages)
with basic front end concepts explained from a zero background perspective and
references to more places you can go to further develop your skills.

It's $10, shoot me an email if you'd be interested in a copy or have any
questions!

Good luck on your journey as well!

~~~
alanctgardner2
To me, $.50 a page for a list of links to other resources seems like selling
shovels to people trying to get in on the coding "goldrush". That said, I'd be
into doing a review for my blog if you care to send a copy.

~~~
n_coats
It's more than links to other resources. Having transitioned from a
marketing/business background to a development career, I recall the areas that
gave me the most trouble when I first started and would like to simplify that
for others who would like to become more familiar with development.

I'll send over a copy as well, I'd be curious to get your opinion!

------
RankingMember
As I think someone else mentioned, hit up
[http://www.codecademy.com/](http://www.codecademy.com/) and you'll be on your
way. The only thing standing in your way is distractions, so start consuming
your stimulant of choice, go to a quiet room, and get learning.

~~~
elwell
OP said: "i've done codecademy and similar stuff before"

~~~
RankingMember
Whoops

------
veganarchocap
I wrote a blog on this fairly recently, it's helped a few of my friends, so
maybe it has some info you could benefit from, too :)

[http://www.ewanvalentine.co.uk/coding-your-own-
career/](http://www.ewanvalentine.co.uk/coding-your-own-career/)

------
JackMorgan
Right now my current suggestion is read and complete the first two chapters of
SICP. The book is free, the software is free, and you will learn an incredible
amount for your efforts. After that, you'll have a foundation you can easily
build a career on.

------
charlieirish
A few tips that have helped many in the past:

\- Start small

\- Don't worry too much about the language

\- Start with some free sources e.g. KhanAcademy, Udemy, libary books

\- Have a very small project that you can use to learn

\- Carve out some time each day/week to work solely on your pet project

\- Ask questions

\- Find a mentor

\- Don't give up. Everyone starts at the bottom.

~~~
imdsm
I think the main thing with this is that is has to be a lifelong activity.
It's not something you can do for six weeks and 'achieve', but more, it's a
continual learning exercise that never ends.

Start programming, make things, read things. Eventually you will realise that
you're pretty good.

Be willing to put in years too.

------
teddyh
Beware of technologies which are over-complicated to the degree one suspects
they are that way largely as a form of developer mindshare lock-in. You can
very quickly get discouraged that way.

------
leondutoit
When you encounter something you do not understand do not stop asking
questions until you understand it - ever. No matter how small the detail or
seemingly embarrassing.

------
Raphmedia
Three options in front of you: 1\. Get into a class. 2\. Books. 3\. Online
classes / screencasts (the best have you do exercices too.)

------
MervGriffin
Learn how to type using proper English syntax first. Once you have basic
sentence structure down, you can move on to programming.

~~~
gotrecruit
erm.. what? i'm not sure what you're implying, but English is my first
language...

~~~
squigs25
If it makes you feel better, I found his comment as strange as [i'm guessing]
you found it

~~~
gotrecruit
yes it kinda sounded pretty condescending, i wasn't sure if i misinterpreted
what he said or if i sounded like English wasn't my native language.

------
malditojavi
Be curious.

