Live data from Hacker News

Ask HN: Where to start?

news.ycombinator.com

1–10 of 16 posts

Ask HN: Where to start?

#1
TLDR: My main question is, how do you start learning/working with 'modern' programming languages/practices/tools.

I am in my late 20's and a developer for a few years. The problem is I'm a Coldfusion developer. I have these ideas that I want to create, but I don't want to write them in Coldfusion. I would like to use something like Ruby, Python, Go, or even Scala. I've taken Coursera courses on Ruby and Scala. I do understand them enough to go through the courses, but it's hard to grok the environment.

I've been a Windows guy, and just recently bought a Macbook, hoping it would push me into learning the environment. But in reality it's been a bit of culture shock. I get confused using all of these tools. I tried setting up my machine with Boxen, until I couldn't figure out the error it was throwing and got frustrated and reinstalled. I think this is the third time I've reinstalled OSX.

Homebrew, ZSH (and oh-my-zsh), Puppet/Chef, Vagrant, Rails, Gems, Rake, rvm, rbenv, Node, npm, Angular/Ember/Backbone, virtualenv, pip, etc, etc. Even things like git, setting up ssh/certificates, and just generally command-line things are intimidating.

I get that a lot of people just intuitively know these now, because they 'grew up' with them, so to speak. But to someone just trying to get into it's incredibly overwhelming.

Things like TDD are foreign to me too. I understand it at a high-level, but actually writing tests is hard for me.

I know things well enough to know that I should use it, but not enough to know how to use it.

I want to write software, but I don't want to write bad software. I definitely suffer from analysis-paralysis. If I don't know that I'm doing it right, I find it hard to start. One of my ideas is something related to bitcoin, so I know that it will be attempted to be hacked. That brings a whole new aspect in hardening servers, writing secure code, auditing, etc.

I'm just at my wit's end. Maybe you all could point me in the right direction.

Re: Ask HN: Where to start?

#2
I'd almost recommend staying with Coldfusion. If you're good with it, you can spend all of your time shipping apps instead of spending all of your time learning. Still learn on the side, but don't try to learn a bunch of languages and have nothing to show.

Re: Ask HN: Where to start?

#3
If there is one skill you should focus on above all else its refactoring. With that in mind, just start and expect to rewrite as you learn.

As for specific tools, I too only recently picked up a mac and while it was a bit painful at the start there is plenty of instructions out there for getting your environment set up.

Good luck!

Re: Ask HN: Where to start?

#4
Start with smaller projects, something simple based on either what you already know, or an existing lesson/blog/book. Then adjust it a little bit, work iteratively, towards the new stuff.

It's really easy to get lost in the big picture of what you want to do versus what you can do. Try not to do that. Just work on smaller bits involving the new stuff, falling back to what you already know at times, and keep at it. If there's a way you can do ColdFusion with Ruby/Python/whatever, go for it.

If you haven't seen it yet, Zed Shaw's Learn Code The Hard Way[1] series does a good job of getting you to use the right tools for the environment. Which is something I see frequently ignored by these sort of online lesson plans... it's not the languages themselves that are difficult to learn, but getting accustomed to the tools to use them, and the best practices.

[1] - http://learncodethehardway.org

Re: Ask HN: Where to start?

#5
You might benefit a lot from just watching how Unix-based developers work. Screencasts are a really good way to do that. You can learn a lot from just watching and following a long. Just re-type things verbatim at first - while you're getting comfortable. Do not copy/paste at all. If you're doing web projects then don't even think about anything other than Ruby or Python. Try them both out, pick whichever one seems more comfortable. Don't sweat it.

Re: Ask HN: Where to start?

#7
post #5

You might benefit a lot from just watching how Unix-based developers work. Screencasts are a really good way to do that. You can learn a lot from just watching and following a long. Just re-type things verbatim at first - while you're getting comfortable. Do not copy/paste at all. If you're doing web projects then don't even think about anything other than Ruby or Python. Try them both out, pick whichever one seems m…

This is a really good idea. I think it would help a lot. Do you know of any good screencasts?

As an avid collector of links, I know of these paid sites:

[1] https://www.destroyallsoftware.com/screencasts - Seems more advanced than an intro course.

[2] http://www.letscodejavascript.com/ - Looks good, but for javascript. It does look like it's better geared toward beginners.

[3] https://peepcode.com/ - Has play-by-play's, but it's quite expensive.

Re: Ask HN: Where to start?

#9
post #6

I was frustrated at finding a beginning to end tutorial when I was trying to learn rails and ruby. I finally found it with Michael Hartl's book/online guide. http://ruby.railstutorial.org/

Thanks! I forgot about that site. I was looking at it before, but was waiting for a Rails 4 update. It looks like a Rails 4 version of it was just recently put out, so I'll definitely go through it.

Not in reference to railstutorial.org, but I think the hard part about finding resources online is that it's hard to determine if it's still a good resource or outdated. This one looks good though!

Re: Ask HN: Where to start?

#10
post #5

You might benefit a lot from just watching how Unix-based developers work. Screencasts are a really good way to do that. You can learn a lot from just watching and following a long. Just re-type things verbatim at first - while you're getting comfortable. Do not copy/paste at all. If you're doing web projects then don't even think about anything other than Ruby or Python. Try them both out, pick whichever one seems m…

Totally.

Taking it a step further, if you're able to find a friend or a willing mentor, pair program for a couple sessions to get the flow of things. You'll get into it quicker, will be able to ask complex questions and get solid answers, and probably have some fun along the way.

And both the easiest and hardest way to learn a language or framework is to put yourself (or have someone else put you) up against a deadline. Urgency is a good thing.

Don't sweat the nitty-gritty when you're just starting out. You'll get to that stuff when you need to. You can always refactor in better code. And that refactoring will encourage you by showing how much better you've gotten.

EDIT: Meant to mention the great http://railscasts.com. Together with the pairing I mentioned above, RC really got me up to speed on Ruby / Rails - came from a generalist C#/PHP/JS background a few years back.

Post reply on HN