

Ask HN: What you wish you'd known - markthethomas

Compiling resources to share with developers who are just starting out or people interested in learning about programming and computer science.<p>So, the question would be:<p>What tools&#x2F;ideas&#x2F;articles&#x2F;books&#x2F;#{anything} do you wish you had known&#x2F;had&#x2F;been told etc. when you were first starting out?<p>Looking to distill all I can, so even a helpful maxim that changed how you think about programming could be really helpful.<p>Thanks all!
======
productionQA
Coming from someone who had no formal "schooling" in CS and really not a clue
where to start, my biggest piece of advice is:

Literally read everything you can get your hands on. When you come across
something you don't understand, look it up, because 9/10 times it leads you to
something better than where you started.

I would now consider myself a fairly experienced amateur, although it took me
much longer than expected to get up to speed. It took me a long time to get on
the right track, if you will, and by that I mean getting a base understanding
of programming in general and then on top of that, figuring out what exactly I
should be learning and in what order to eventually pursue a career in Web-
based Development/Engineering.

I had no one close to me in the space that I could get advice from either. So
I really am a raw use case.

That being said, I think what would have helped me the most is finding a
resource that addressed all of my short comings:

\- If I want a job, what is hot in the industry, where is it trending?
(Answer: JS and Mobile)

\- If I am interested in pursuing X, what is the first language I should take
a look at, or at least some framework buzzwords (i.e. Web: Rails is/was hot,
APIs are driving the future, JS is very hot. So, Ruby, JS, maybe Python).

\- Where should I look for go to resources / where can I ask questions (SO,
HN, etc.)

The biggest problem I ran into is that even after I slowing found the answers
to these questions, I still didn't know how to get started other than buying a
book. However, I found that the majority of books don't "tell a story" and the
majority of online resources (blogs, etc.) are not geared towards absolute
beginners.

I not only needed to understand the basic such as syntax, but I needed to
understand how things fit together at a high level and the best way I found of
doing so, was having a resource walk me through the baby steps of building a
real-world application, from start to finish, tying in the larger picture as
the end of each chapter.

I mean, you have to understand that someone who is brand new doesn't even know
how the backend and frontend relate to each other.

Basically, for beginners, even those resources that are "targeted" at
beginners, assume too much.

I guess that is something to chew on, but what it comes down to is that I wish
I had a resource that told the high level picture better and guided me in the
right direction from day 1, as far as "Where do I start if I want to learn web
development, and why I am starting there?" And give me a few good resources to
get me going.

------
Jallal
My comment will certainly not be helpful, but I think the best way to start is
still to follow the most common advices you can find in a book or on the
Internet. There are no shortcuts, especially when you're an adult that cannot
afford to spend as much time as a younger (because of work, family, etc).

To answer the question (the thing I wished I had known), I would advise you to
start by learning anything that will help you for your whole career. It may be
boring at first, but on the hindsight, it will be very rewarding.

To be more specific: \- Learn to type on a keyboard. Really. I wish I had
course about touch typing when I was younger (got to learn alone), and when I
look around me, I notice many people still don't know how to type.

\- Learn Vi/Vim. Same as above. Vim is spread everywhere, is powerful and the
principles behind it are strong. Vi exists for nearly 30 years, and won't
disappear before a very long time.

\- Learn to work on a Linux/Unix/BSD environment. Even if you do not use it on
a daily basis.

\- Start with a language well established (well, do not start with C++
though). Not because they are better, but they have stood the test of time,
are likely to be still there for some years, and, more importantly, you'll
find quality resources/books that will help you when you'll stumble on a
difficulty.

\- Finish what you start. Already mentionned, but very important.

\- Practice, practice and practice. There is no shortcut.

------
josephschmoe
First day:

Follow tutorials. Get something to compile.

First week:

Download an IDE, particularly a JetBrains product if you can. They're really
amazing, especially if you're new to coding. Try to make something simple.

First month:

Find a friend who knows how to code. Ask for advice when you get stuck.

Second month: Master the debugger. Learn every single thing you can about how
it works. Seriously. This will save you a ton of time in the long run. Learn
absolutely everything about it, especially conditions, step into and watches.

After that: Write as many projects as you can - and complete them. If you're
having trouble with something, ask your friend how they might approach the
problem. At this point, the biggest thing you need to learn is how to ask the
right questions.

------
brandonmenc
Fully completed small projects trump unfinished grand designs.

Also: drop everything and read SICP.

------
techaddict009
I dont know if I should share this here or not. But will share as I got
benefited a lot from it.

Lynda.com if you wish to start learning any kind of new programming language
or using any famous software check out lynda.com for the tutorials. You may
behind basic courses for the same there. Buy membership and learn out.

------
markthethomas
Just to clarify, this isnt for me but for others. :)

------
porter
It takes longer than you think.

