TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Going from programmer to engineer

29 pointsby srvermaalmost 13 years ago
Hey HN,<p>Long time lurker. I've finished up enough schooling to become a mediocre programmer. What I mean is I've learned enough C and done enough labs like implementing a paging algorithm or building a socket to be considered a mediocre programmer.<p>I want to take it to the next level though. I have plenty of ideas that I think up of where I'm like "why can't I just write software to do this, it'll be much easier". However, every time I sit down and try to learn MVC or django or iOS to implement my ideas I usually get stuck and flail and call it quits. Kind of a shame, I know, but I need some advice on HOW it's done. What resources or books do you use to go from someone who can do some kinda cool stuff to really cool stuff? I'm looking for that jump from amateur programmer to someone who can build a web app after a good few months.<p>What resources have you used to get there?

20 comments

mcantelonalmost 13 years ago
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.<p>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.<p>Try a lot of things and make lots of mistakes. At some point it'll all just make sense.
NeilSmithlinealmost 13 years ago
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.<p>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.<p>As the project already exists, you'll be able to look at the code's design and work with the other devs to learn.<p>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.<p>You can look at the pull request history for the work I did at <a href="https://github.com/bdewey/org-ruby/pull/20" rel="nofollow">https://github.com/bdewey/org-ruby/pull/20</a> - 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.<p>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.<p>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.
评论 #4122380 未加载
issaalmost 13 years ago
You really can't go wrong here (ish). I recommend picking a language/framework you are comfortable with and just start building something. PHP, Python, or whatever. Just dive right in. There is no secret---just try, make mistakes, learn from them, try again. repeat.
brittohalloranalmost 13 years ago
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.<p>On the plus side:<p>-There's a TON of documentation, resources and help online.<p>-It's really fast to get started, so you'll get quick wins. This is key for motivation.<p>-It will slowly introduce MVC to you, but you don't have to build it yourself to get started.<p>On the minus side:<p>-There's a lot of 'magic' stuff going on, which can be confusing when you're used to explicit C code.
评论 #4122319 未加载
keylealmost 13 years ago
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.<p>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.<p>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.<p>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.<p>It's a computer, it can do anything. Period.<p>EDIT: do read books still, watch talks, they greatly open the mind.
评论 #4122467 未加载
blaabjergalmost 13 years ago
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?<p>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.<p>"Nothing is particularly hard if you divide it into small jobs." - Henry Ford
评论 #4122374 未加载
ssmcalmost 13 years ago
For me, motivation is key.<p>I pick something I want to make, and make the feature that provides the most "bang for my buck" per say.<p>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.
krigathalmost 13 years ago
Stuck learning Objective-C? This should kick you off: <a href="http://www.youtube.com/watch?v=1Xqn5IHbusA" rel="nofollow">http://www.youtube.com/watch?v=1Xqn5IHbusA</a><p>65 really simple to follow tutorials, most of which are 6-7 minutes long. He does tutorials on pretty much everything; from iOS to go kart building.
double051almost 13 years ago
If you find yourself stuck anywhere with MVC or Django or iOS or anything else, going to <a href="http://stackoverflow.com/" rel="nofollow">http://stackoverflow.com/</a> will almost certainly save you time and frustration.
yitchellealmost 13 years ago
Dude, you will need to jump in, and preserver with it. You said "my ideas I usually get stuck and flail and call it quits", quitting means that you will stop learning. As soon as you quit, the game is over. Persistent is one of the key ingredient to gaining the knowledge.<p>I think that you should join an open source project that uses the same framework that you want to learn. There are plenty of projects from github, source forge, bitbucket, google code etc. That way, you get access to already code that is working, and able to get some guidance from the folks already working on the project.<p>Good luck!
aswath87almost 13 years ago
This is what helped me.<p>1. Focus on one simple app, one framework(I'd recommend Django over Rails if you are new to web development), one reference book (<a href="http://www.djangobook.com/" rel="nofollow">http://www.djangobook.com/</a>). 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.
capkutayalmost 13 years ago
Focus and diligence are probably the most important tools to succeed as a software engineer. Also, having lots of mental stamina is helpful. You read the tutorial, write code, get stuck, take a break, re-read the docs, write more code, repeat. Only way to do it...<p>Possibly collaborate with somebody? Some people work best alone, but pair programming or working with someone else can help you stay focussed, learn and teach with others, etc. Good luck!
overgryphonalmost 13 years ago
One small step at a time. It doesn't matter what platform, framework or language, you pick a project and figure out what simple thing you can do to start.<p>You make mistakes, fail, backtrack and all of that is necessary to reach your goal. Amateur or not, everyone gets stuck and flails around for awhile. The difference between the person who has a few app a few months later and the person who doesn't is whether they kept going when they got stuck.
signalsignalalmost 13 years ago
The best resource is building something you consider useful. Start small and make it a personal project. Don't even think about making money on it or else you will destroy the enjoyment of making it. It doesn't have be long term, in fact it is better if you don't plan on maintaining it but instead build it and evolve it with every iteration.
tonyjwangalmost 13 years ago
I've started and stopped programming, but feel like <a href="http://www.teamtreehouse.com" rel="nofollow">http://www.teamtreehouse.com</a> has been really helpful. They have lots of videos to help fill gaps in knowledge, with a bunch on building web apps from start to finish, including RoR and other languages/frameworks.
viscantialmost 13 years ago
How you deal with the frustration associated with learning programming plays a huge role in how far you'll go. You can't read a book to learn how to press on when frustrated. The best engineers that I've ever worked with had an uncanny ability to motivate themselves through those intense moments of frustration.
评论 #4122534 未加载
yawniekalmost 13 years ago
its simple: try harder! learning a language is usually much easier than learning to use a framework efficiently. it just takes time and a lot of motivation. so its completely normal that you get stuck.
jwingyalmost 13 years ago
It's kinda funny, because I often think this way but in the opposite direction. How the hell does one build a socket anyways? (Yes I will go and google this now so save your lmgtfy links :))
ectoalmost 13 years ago
Buy an Arduino and hack on it! It will open a lot of mental doors for you.<p>If you're not down with electrical engineering, just start a web project. I've found the easiest way to learn is to do.
评论 #4122322 未加载
yashchandraalmost 13 years ago
You can ask yourself a few questions and get started accordingly. For example, what languages are you interested in ? PHP ? Python ? Java ? Pick up 1 of them. Since you mentioned Django,I assume you are working with Python. But then, play around with at least 2 frameworks. May be try Flask (micro-framework in Python) which I am falling in love with. Build the same app in both frameworks. I personally did User management/registration app in both Django and Flask. Start small. Build layers on top. There is no one way of course but building a few small apps just for learning will help tremendously.