Live data from Hacker News

Ask HN: How to become a better programmer?

news.ycombinator.com

21–30 of 63 posts

Re: Ask HN: How to become a better programmer?

#21
post #4

I can do everything I need to with PHP and MySQL, however I'm currently working on JSP, and planning to learn Ruby and Python. If you want to learn object oriented thinking I would recommend Java or C++. Fortunately I was already proficient at C++ before I started web programming so I already had a fairly firm grasp of object oriented thinking. As for learning programming languages, to my way of thinking the more lan…

Learning a C language (i.e. C/C++/Java) is great advice for increasing your programming knowledge. You'll learn how software works at almost it's lowest level. I wouldn't advise learning some architectures assembly language unless you really get C and want to really dig into low level programming. It's a great skill, but if you don't want your career to go that way there are better places to invest in your education.

OOP (as mentioned in the question) is a great thing to learn as well. Depending on if you have any experience with OOP I always point people to the book "Design Patterns" by Gamma et al. It changed the way I build software in so many positive ways I doubt I could even list them all.

Re: Ask HN: How to become a better programmer?

#24
post #7

"improve my PHP abilities to OOP" Reading that made me laugh. PHP's OOP is extremely flawed (among various other things, like their inability to universalize the $needle and $haystack argument order: http://bugs.php.net/bug.php?id=37088 ), so using PHP to "improve your technical abilities" wouldn't really get you anywhere except having a better understanding of PHP. I think that what you're trying to accomplish reall…

What are the extreme OOP flaws still present in PHP 5.3? And how does the needle/haystack issue relate to PHP OOP?

Re: Ask HN: How to become a better programmer?

#25
I wouldn't concentrate so much on certain programming languages, instead I would concentrate on designing programms. I don't know your background. I guess you are learning on your own, so I would recommend http://www.htdp.org or http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Compute.... Some people will recommend Structure and Interpretation of Computer Programs. This book maybe the best on programming, but I don't think it suits a selfteaching individual.

Re: Ask HN: How to become a better programmer?

#26

Since nobody suggested it, go to college/university and learn about data structures, lists and processor architecture. It will help you become a much more insightful programmer.

This advice is so bad I think it just gave me cancer.

The OP is asking "what abilities are required to effectively build complex web apps and services?"

99.9999999999% of data structures in web programming are arrays and hashes. Look those up on wikipedia and read it, then you are done, now get to work.

Processor architecture??? Is that really to be taken seriously? Not only was it previously not relevant to the OP's question, but its becoming more irrelevant because virtual machines and the "cloud" paradigm.

OOP details are great if you are going to write your own libraries or plugins, but its not necessary for cranking out websites. Most of the time the OOP you are going to be dealing with you can fake.

Javascript is a must have, but you don't have to get so fancy with it. Just enough to drive a popular framework. I'd recommend jQuery, it seems to be the emerging winner.

Learn the CSS, broken browsers, and the box model, which will waste so much of your time.

If you just want to work for yourself try a few web frameworks and go with what works for you. Using anything from PHP to rails to Django, you could take over the world, they are all good.

Look into scalability. Its fun stuff to learn about, even if you never lucky enough to need it, here's a good place to start http://highscalability.com/

As part of scalability look into AWS like EC2, EBS and S3, they are game changers. You don't have to use them, but if you need them, they are there to save your ass.

Learn about "viral" marketing and how sites go viral.

Learn about database backup and recovery, and as part of scalability learn how you can scale databases.

Learn about unit testing, QA or even something like Selenium, figure out which works for you best and in which ways.

Learn to figure out what users want and what itch you need to scratch.

Figure out how to make interfaces that don't suck. And when you do, let me know how.

Re: Ask HN: How to become a better programmer?

#27
PHP is mostly an imperative language with a C-like syntax. In imperative languages with a C-like syntax most OOP is just syntatic sugar on a pointer called "this" with a bit of RTTI checks for casting. If your code is unmaintainable with out OOP, OOP isn't going to help.

A far more effective skill to have is to figure out how to build a complicated application simply rather than switching to language that makes it easier to increase line count and have semi-working code.

I know PHP isn't cool anymore but at the same time, Facebook was built with it. One person can't build Facebook (in it's current incantation) so it's pretty useless to try and find the magic framework that will let you. Figure out how to prototype quickly: once your userbase exceeds the capabilities of whatever tech you have picked you'll usually have enough users to find capital/revenue or have it knocking your door down. At that point it's easy to find the skills to port to whatever the language / paradigm de jour is.

Figure out how to make the SMTPs of the world not the X.400s once your not building X.400 you can implement SMTP in just about any language.

Re: Ask HN: How to become a better programmer?

#28
post #12
post #2

It's important to differentiate between the technical ability to build web applications and the craft of programming. It seems you are interested in the former, in which case I would recommend learning a popular framework (Ruby on Rails or Django). While you are learning a framework you'll pick up the base language just fine. If you'd like to learn the more general craft of programming, Peter Norvig has some excellen…

Between starting with Ruby on Rails or Django with Python, is one better to start with than the other?

Despite what a lot of people will tell you ;) Python isn't really a web app language (really, at all, in the slightest). Stick with PHP or learn RoR.

In all seriousness if a web app is your aim, and you have on in mind, then stick with what you know and get good at it - it will suffice :) at the end of the day there is no particular limitation with PHP that RoR or Python will solve - if you get the point of having to worry about scaling etc. then they all have the same issues/solutions :)

EDIT: if your going to disagree that's great! But lets hear some reasoning - there is no logical reason to pick Python to learn from scratch if you already know PHP and wish to start a web app. Seriously speaking it's a waste of time; python is a killer language (and by far my favorite) but PHP and RoR are much saner choices for a web app :)

Re: Ask HN: How to become a better programmer?

#29
post #26

Since nobody suggested it, go to college/university and learn about data structures, lists and processor architecture. It will help you become a much more insightful programmer.

This advice is so bad I think it just gave me cancer. The OP is asking "what abilities are required to effectively build complex web apps and services?" 99.9999999999% of data structures in web programming are arrays and hashes. Look those up on wikipedia and read it, then you are done, now get to work. Processor architecture??? Is that really to be taken seriously? Not only was it previously not relevant to the OP's…

I agree with your conclusion. but I had to downvote for the poor presentation of the answer.

Re: Ask HN: How to become a better programmer?

#30
post #29
post #26

Earlier quoted context omitted.

This advice is so bad I think it just gave me cancer. The OP is asking "what abilities are required to effectively build complex web apps and services?" 99.9999999999% of data structures in web programming are arrays and hashes. Look those up on wikipedia and read it, then you are done, now get to work. Processor architecture??? Is that really to be taken seriously? Not only was it previously not relevant to the OP's…

I agree with your conclusion. but I had to downvote for the poor presentation of the answer.

Style over substance? Another reason down-voting is a disgrace for this website and should have stayed removed.
Post reply on HN