Live data from Hacker News

Ask HN: Going from programmer to engineer

news.ycombinator.com

11–20 of 35 posts

Re: Ask HN: Going from programmer to engineer

#11
IMO, find an open source project on Github that you think is cool and is, at least, partially working. Then eyeball the code, ping others working on the code, etc... You should be able to find a project that is a good fit.

Because you'd be joining a project with other devs working it, you'll be able to start with small changes and progress to bigger ones. As you're not the only dev, you don't need to get the whole thing done, just your little piece.

As the project already exists, you'll be able to look at the code's design and work with the other devs to learn.

Like you, when I wanted to learn Ruby, I was nervous biting off a big project. So I worked on the org-ruby gem. I only made a tiny mod to it but that gem is one of the gems that Github uses. IMO, that's very cool.

You can look at the pull request history for the work I did at https://github.com/bdewey/org-ruby/pull/20 - If you read the interchange I had with the developer, you'll see that he really helped me understand Ruby, Rakefiles, and the org-ruby gem.

I imagine that the gem owner spent more time helping me than it would have taken him to implement what I did, but he seemed happy to help.

When you think you've found a good project, you may want to send the devs the question you posted here and see what they say. Perhaps they'll be thrilled about the help, perhaps not. Better to figure it out before you start.

Re: Ask HN: Going from programmer to engineer

#12
Maybe start with microframeworks. Something like Flask (Python), Express (Node.js), or Sinatra (Ruby). Once you get a bit comfortable in them start using template engines to separate your logic from your presentation. Then look at adding libraries to support different storage engines, etc.

Using microframeworks, you will basically have to implement a lot of things from scratch, but you'll end up recognizing the patterns of common web application development. Knowing these patterns will make it easier to learn monolithic web frameworks like Django. It'll also motivate you: at some point having to reinvent every wheel gets old.

Try a lot of things and make lots of mistakes. At some point it'll all just make sense.

Re: Ask HN: Going from programmer to engineer

#13

How do you get stuck? Are there actual technical or pedagogical barriers, or do you simply get bogged down in the amount of stuff to learn? If it's the latter, I think some structure and simple project management could help. Break down your projects into smaller, more manageable parts that you can focus on and actually complete before you get stuck. "Nothing is particularly hard if you divide it into small jobs." - H…

I think the first part -- what I've learned in school has given me a good foundation to programming, but I'm not sure how to take functional C programming and make web apps out of my knowledge.

I've tried reading some tutorials and there is also a ton to learn, but it's mostly the pedagogy of learning something like MVC. Although, I certainly agree with what you're saying about dividing. That does help me nudge further along anytime I attempt these projects.

Re: Ask HN: Going from programmer to engineer

#14
post #3

I'm a mechanical engineer who taught myself to code and now I've written a full-blown web app. I'd recommend jumping right into Rails and building and breaking stuff, which is how I learned. On the plus side: -There's a TON of documentation, resources and help online. -It's really fast to get started, so you'll get quick wins. This is key for motivation. -It will slowly introduce MVC to you, but you don't have to bui…

Heh - its funny, I was really unnerved at my last internship where I was using PHP, it felt so weird with all this abstraction because of my C background but it felt really nice being able to not worry about to details and let the magic take over as you stated. Anyway, when you say Rails, are you talking about RoR, or just plain old Rails (is there a difference)? The stuff you learn from rails, did it teach you good…

Check out web2py as well. It started life as an aid for teaching web development, so it's geared towards getting you to focus on the important bits (and not on configuration/boilerplate code).

Re: Ask HN: Going from programmer to engineer

#15

IMO, find an open source project on Github that you think is cool and is, at least, partially working. Then eyeball the code, ping others working on the code, etc... You should be able to find a project that is a good fit. Because you'd be joining a project with other devs working it, you'll be able to start with small changes and progress to bigger ones. As you're not the only dev, you don't need to get the whole th…

Wow - totally forgot about Github, after reading your exchange I think I certainly have a new avenue to look into now. I know reading about programming is never a good substitute for actually doing, but seeing other code helps out tremendously. Thanks!

Re: Ask HN: Going from programmer to engineer

#16
post #13

How do you get stuck? Are there actual technical or pedagogical barriers, or do you simply get bogged down in the amount of stuff to learn? If it's the latter, I think some structure and simple project management could help. Break down your projects into smaller, more manageable parts that you can focus on and actually complete before you get stuck. "Nothing is particularly hard if you divide it into small jobs." - H…

I think the first part -- what I've learned in school has given me a good foundation to programming, but I'm not sure how to take functional C programming and make web apps out of my knowledge. I've tried reading some tutorials and there is also a ton to learn, but it's mostly the pedagogy of learning something like MVC. Although, I certainly agree with what you're saying about dividing. That does help me nudge furth…

MVC is just a design pattern. Nothing magical. I'm sure you came across many other patterns whilst learning C programming.

Re: Ask HN: Going from programmer to engineer

#17
This is what helped me.

1. Focus on one simple app, one framework(I'd recommend Django over Rails if you are new to web development), one reference book (http://www.djangobook.com/). Quick goals and instant gratification helps when you are starting out. 2. Reading the relevant chapter(s) of the book before starting the implementation has worked better for me. 3. Build the UI first (use Twitter's Bootstrap to get this done quickly). I am more motivated when I 'see' the end product.

Re: Ask HN: Going from programmer to engineer

#19
For me, motivation is key.

I pick something I want to make, and make the feature that provides the most "bang for my buck" per say.

IE: When I tinker around with my Arduino Uno, I always try to get something to move first (turn the motors). Huge motivational boost for me. THAN, I figure out how the heck to get it to talk wirelessly with my laptop.

Re: Ask HN: Going from programmer to engineer

#20
Just do your own thing. I wrote a lot of PHP when I was learning 10 years ago. Because it was PHP everywhere and that's all I had in hands. Do I do a lot of PHP today? Nope, occasional hacks and quickies, that's it. But from there I went to actionscript, javascript, C#, Flex / WPF / Silverlight... Touched C, C++, Haskell, Python, Go... Heck I even have some Haxe on my computer.

Whatever you have in hand, pick it up and do stuff. Pick a language that you can run easily, debug easily, and that is mature in the sense that whatever you google for, you will find. Try and pick a project that you are passionate for and open a github repo and give it your best shot. Try and implement the same thing in different languages if you think it's fun, or try tackle large problems with simple solutions that may only work 60% of the time.

Who cares, just do stuff that you can then show. Get an internship anywhere, stick in for a year or two. Then move on to the next place. Surround yourself of smart developers. Seek them and see how they think. Not wankers, genuinely good people. Not only they know their job, but they will love passing on knowledge. Ask them to review your stuff, bounce ideas, dumb questions, everything. That's far better than books IMO.

One thing is for sure, I don't learn much from books. Books help when you have a very gritty issue you feel totally helpless against. But most of the time, books as thick as bibles will drain you and turn you off and make you call it quit.

It's a computer, it can do anything. Period.

EDIT: do read books still, watch talks, they greatly open the mind.

Post reply on HN