Hacker Newsnew | past | comments | ask | show | jobs | submit | reedF211's commentslogin

A good programmer should wake up at 6 am in the morning get a solid 2.5hrs of coding done by 8:30 am, at 8:30 leave for work, work till 6 (it goes without saying that the lunchbreak must be spent trying to learn the Haskell or if you are feeling lazy answering questions on stackoverflow). Commute from 6 to 6:30 (it's a bonus if you listen to a technical podcast during this time and no stuff like TWIT does not count, perhaps audio lectures from the Advanced Algorithms course on MIT OCW). 6:30 to 7:00 time for supper and excellent time to catchup on r/programming and hackernews. 7-8:30pm is the time for relaxation by doing some recreational mathematics, doing problems from project Euler and that proof from The Art of Computer Programming excercises which you have been itching to get a go at! 8:30pm to 1 am code contribute to that open-source project, write patches for the Linux kernal and continue working on your startup.

Anyone who does less programming that what is mentioned above cannot call himself a "good programmer", I would have serious reservations in calling that person even a mediocre programmer.


Once you've got a family, that changes my friend ... you need to set aside at least an hour a night to teach your kids how to code.


And if you don't have a family, but are planning one, ensure that the other potential parent can pass your technical interview.

Funny story - Bill Gates' first question to his wife was said to be "What was your math SAT?"


Well, not that funny, when they first met she was a MS employee. He didn't pick her up in a bar with that line!

PS Would that work?


This would probably make for a good card in the "30 Day Rejection Therapy" app...


If they are born without knowing how to code, drop them off at the fire station.


I call BS. There's a continuous five-hour stretch between 1 AM and 6 AM when you're not being productive.


You should at least set up some script to automatically refactor your code or search for prime numbers or something during that time.


Be careful, you can't unfind some primes.


I guess not everybody caught the irony


I catch the irony, but I'm not confident that it really contributes to the discussion here. Look at the comment thread it's produced: practically nothing of any consequence or interest.


Yes. Good programmers must also be humorless drones that post disapprovingly when others are clearly enjoying themselves.


Humor is funny. That post was a sarcastic expression of an obvious truth. Neither the tone nor the obviousness was what I come to HN for.


Don't you mean sarcasm or are you being ironic?


Sarcasm is a form of irony - one meaning of irony is saying one thing, and meaning another. "Sure, that's a great idea" is both sarcastic and ironic (although not ironic in the sense people most commonly use the word, which non-ironically, is not that ironic).



I tried... but that's a description of what now I consider my sad-teen-years.


Where did you find my schedule?


Hats off to you, sir. That is the most excellent troll post that I have seen in a very long time. Well done!


Ridiculous.

You should already know Haskell (and ML), and be writing your own research language.


Does that mean you code in the shower?


Shower? Have you ever smelt a REAL programmer?


Well played. :)


Oh man I hope you're joking!


That's funny. When you're 20 and just starting out you need that sort of intensive learning.

When you're 30 and you're seeing the same thing with a new name for the 2nd or 3rd time it takes a lot less effort and time to keep up.


I don't think anyone needs that amount of intensive learning. Eight solid hours a day is plenty to be an expert after a couple of years.


Then you're an expert. For about three months. Meanwhile while you're up to speed, things outside your organization are changing. If you're not paying attention, you end up with the proverbial "10 years of experience" comprised of 10 years of the same experience. I've seen several of my friends who just coded at work find themselves without jobs when times got tight, and unable to find a new job because they had out of date skills.

Investing in my skillset on my own time with my own rules is an investment in me. I don't particularly care if it makes me a better programmer - it's a contingency plan to make sure I can support my family in both good times and bad.


I think it varies wildly upon the situation. I've had 3 full time corporate jobs and not one of them required enough depth of knowledge to become an expert at anything besides SQL. I've pretty much learned all that is necessary to add any random feature requested to the codebase I work with so I could let my skills stagnate for years here and be no worse off at this job. IMO, doing so would eventually make me a bad programmer.


Garbage Collection, Garbage Collection, Garbage Collection, where is garbage collection?


First, it's a bit late to bolt this on to the language now that mountains and mountains of libraries and applications have been written to use manual memory management.

Second, a lot of people use C++ because they need low-level control of memory use and can't tolerate GC pauses. If you're writing the kind of app in which GC is acceptable why not use Java or an even higher level language like Scala instead?


Left out, which IMHO is a good thing. The C++ language as it stands right now, especially with the C++0x additions has provided plenty of new features that are going to help developers build amazing software with more power.

Not everyone wants or needs garbage collection and it would be a downright pain to bolt it on now.

Feel free to use one of the umpteen other programming languages that does provide garbage collection, clearly if you are complaining about that you are simply using the wrong tool for the job.



It's really not such a big deal if you use "new" parsimoniously and use containers and RAII as much as you can.

I can count on my hands the number of new and delete I have written in my code in the last three years.


It's rather harder to count the number of times there were idioms you could have used but didn't because using them in C++ wouldn't have been practical or efficient. I'm thinking in particular of closures which captured state, and functional/monadic style chained method calls each building on the previous function's return value (think: something like .NET LINQ).


It sounds like you're referring to C++98 while the article specifically talks about C++0x. C++0x adds closures to the mix so it's now very possible to implement something similar to .NET LINQ in C++.


No, I'm not; I explicitly mentioned closures which capture state precisely because that's where C++0x gets thorny. You can capture by copying or by reference; what you don't get is wholesale movement of the variable into a heap-allocated location, the way variable capture works in almost every other language supporting free mutation of variables.

I wrote about it in an earlier thread: http://news.ycombinator.com/item?id=2617990


My bad, I wasn't familiar with the term. I'm still not convinced this is a limitation though. If you want to modify an object, passing by reference usually makes perfect sense. For those occasion when this is not the case, you probably already have a smart pointer in your hand, capture it by copy. A counter example would be great.

BTW the behavior you describe has been achieved in the C language family with Apple's C block extension, not that it's relevant since it's in no way standard (aside from Objective-C++)


In languages where it's appropriate.

Not in those where being close to the metal matters.


C++0x introduces a bunch of smart pointers to the standard library (and boost provides them externally for previous versions). What are the advantages of garbage collection over these?


The mere fact that you have to use smart pointerS is enough of a drawback; not only do you need to start decorating various types explicitly, but you must choose which smart pointer types are appropriate, and avoid issues of circular references (in the case of refcounting) and persistence of references (in the case of scope-guarded objects tied to a stack frame); worry about logical ownership hand-off from one smart pointer container to another, etc.

The real power of GC, though, is freedom to use idioms that are simply impractical, or especially, not exception safe, in its absence (see my comment earlier).


Most second-generation immigrants (and even the first generation ones who came to Canada as kids) identify themselves as Canadian. I do. "rejecting origins" part of moving on and settling into the society. I would not expect anything else, most of us have nothing in common with the country of our ethnic origin. "Where are you from?" is one of the most offensive questions and it is not white people who ask me that that question that often, it is almost always older first generation immigrants. Perhaps they don't realize how offensive it is.

Sticking to your ethnic origins decades after you have moved to a different country leads to tribalism and ethnic nationalism which are two of the most poisonous things to a country.


How do you find time to work on personal projects after all the school work and possibly part time job? I have so many things that I want do but there just isn't enough time after all the assignments and the job.


Luckily for me my job of 20 hours a week has been quite flexible working in my free time. It's also not been terribly challenging Rails development which makes things easier. Aside from that I have pretty much spent my last semester working from 9am till 11pm all 7 days a week. Glad it's over now though! :)


Oh noez... the bubble!!!!!!!


For anyone still saying "there is no bubble"...


There is no programmer bubble. There is a massive shortage of highly competent programmers that has very low correlation to the trend of more people taking intro CS classes.

There may be an investment bubble, but I don't think the average person taking CS106A this quarter has any idea of that beyond maybe that Facebook is a bit overvalued.

People are taking CS 106A (and B) because

* They're humanities majors that want to fulfill their engineering requirement to graduate

* Our intro CS classes are very well-regarded as fun and approachable.

* It's interesting, and people see that computers are getting more and more important.

Honestly, almost none of the people in A this quarter plan on using CS in their jobs. People in B are considering a CS major/minor and/or just enjoy CS.

People in 107 are probably going to major or minor in CS (or EE), so there will be an increase in majors, but not a huge one. Not enough to create a bubble, at least not yet


$100K that's utter bs. Anecdotes mean squat. Most CS graduates start at around 45-50k. Suggesting that even a a sizeable minority makes 100k out of college is being ill-informed at best and dishonest at worst. If we are talking in terms of anecdotes, I know several history majors making good money working for the city whereas some new CS majors are still working at bestbuy.


For Stanford CS grads, it's anything but BS. From what I've heard (being at Stanford), it's usually somewhere around $80 - $120.

Google, for example, pays $8,000 a month - just for interns!


Here's the nationwide average http://www.payscale.com/research/US/Degree=Bachelor_of_Scien... .The average pay for a senior software engineer is 77-101k. Hardly the 80k norm for fresh grads that the OP is suggesting. It might be the case at Stanford(although I'd need to see statistics before I concede that) but the op's explanation for the trend mentioned in the article was a broad indictment non-cs majors rather than it being specific to the culture at stanford. Google Pays $8000 a month interns? They hire co-op students out of my school $14,000 for the entire 4 month term which comes out to about 3500 a month.


Where are the 80k$-120k$ offers coming from, geographically? The reason I ask is that 80k in S.F. is roughly... 50k in Austin, TX. 120k in S.F. is roughly equivalent to 70k in Austin. (Based on Salary.com's cost of living calculator.) 50-70k is probably a nice starting salary in Austin, but not exactly mind-blowing, imho.


80-120 is the case in at least New York, SF, SV, and Seattle/Redmond.


Google, for example, pays $8,000 a month - just for interns!

Do you have a source for this? That seems exceedingly high. And even higher on an annual basis that the entry level salary you're mentioning.

Though I could see how paying a few extra thousands could help convince a college grad to take an internship there. Google then has their foot in the door… (but still, it would be odd to then get an offer for less than what you were making as an intern)

Also, these salary threads from the past couple of days make me feel underpaid.


I'm graduating from Stanford with a BS in CS this year and I'm interning at Google this summer, and I'm being paid less than $8000/month. I've also been told that I'm being paid a "master's intern" rate, so presumably interns who haven't completed their bachelor's are being paid less. That said, Google's intern salaries are extremely generous (just not $8000/month generous).

Also, the Stanford CS department conducts a salary survey of graduates every year, and for 2009-2010 the average salary offer for CS/EE undergrads was $79,333 and the median was $80,0000.


I do have a source for this, I saw the offer myself. I was also told that this is given to all interns, no matter what department. That being said, maybe this applied only to grad interns - maybe undergraduates get less.


It's Stanford.

You can have a look at stats of Cornell CS grads: http://www.engineering.cornell.edu/resources/career_services...

The median was ~ 75K in 2009



Reading this thread and the other salary thread I have noticed a disturbing trend among developers i.e the amount of greed. It seems that a lot of developers are motivated by finances rather than pure reasons of love of programming. msluyter's post exemplifies this perfectly. In what universe is 50-70k not mindblowing for a fresh grad? That is more money than enough money to live comfortably in most places in North-America. I'm not graduated yet but just last summer I worked for this company making 3k a month for the entire summer (36k for the year) and I had more money than I knew what to do with. Here's my expenditures:

After taxes and other deductions I took approx 2200/month. $475/ month for rent living with a roommate. $55 for internet. ~$50 for monthly bus pass. $150/month for food. $100-150 miscellaneous utilities. All in that's about $880 a month for essentials. That left me with $1320 a month spending money. I bought video games, went to movies etc and still had a lot of spare cash. This with co-op pay of 3k a month. I cannot see a reason how anyone can say that 50-70k is not enough, except greed run amok.


It's not greed, it's lifestyle inflation from being a grown up, combined with location. You are a student, you don't have a family or a car, and you can tolerate living with room mates outside of a major city. That's a totally different situation.

A 1br apartment in SF in a part of town where you don't have to step over human excrement on a daily basis is $1800-$2000. Add another $500 for a new building (the one I live in is 100 years old). A new-ish car payment is $500 + expensive insurance. Add your $400 or so for food + utilities and your starting burn rate here just as a single guy is much closer to 3k per month, let alone what it costs to have a family. Also, $5 a day for food? Really? Around here lunch is $10.

Just saying, I don't think it's greed.


And don't forget all those graduating with massive student debt. If you have to pay back $100K plus or minus....


I've heard from Indian students at my university that grade screening in ridiculous in India, is that true? When applying coop employment here in North America many of them are shocked that so many companies don't have a minimum gpa cutoff and even the companies that require a minimum GPA to consider you have a reasonably bar 3-3.3 at worst. I've heard stories about people needing to get straight As or some ridiculous benchmark like that in India. Sounds like a toxic environment for the student, no wonder there are so few startups coming out of there despite a booming IT industry. What college kid would spend their time on a side project when they are being held to such ridiculously high academic standard.


Yes this is applied by some companies in India, however the reasoning behind it needs some explanation. Personally in my college there were around 350 CSE and IT students. The top companies(in India) say your Amazon, MS and Google have a lengthy interview procedure and cannot possibly go through this will all the students. So they screen grades.Note that, this happens typically only in the second tier instituions and not the premier institutions which do not have the problem of a huge student strength. For this reason typically students from other majors(electrical,chemical etc.) are also not allowed to sit for programming interviews.


I guess one way around this for a student is to contribute to open source---that could get you an interview at those companies.


Sadly many students will ask - "give my code away? For free!?" This will also probably lead to "Heck, the code is free, let me copy it."

Also on the point of getting interviewed - most companies just want someone who can learn, and has good enough grades and a workable grasp of English. Once you pass the tests, you are sent to their training centers where they will teach you whatever skills you required. The Tata training campus and is course is considered to be the equivalent of a 2 year Comp Sci. education in India.

Having a good grasp of code, is not necessarily an asset to get you into those jobs.If you want to strike out on your own and jump ahead of the curve, then I can see the merits of the suggestion.


Yes it is.

Effectively for an undergrad 2 things matter - Your grades and your pedigree (IIT, Engineering students are the most valuable, and this combines with the reputation of institution. Commerce students are next in line, and arts students last.)

Basically these are proxies for ability discovery. Its pretty brutal.


As a current college student I can tell you that what you are saying is an exaggeration. A small subset of Linear Algebra is required for graphics . I took linear algebra in first year of college and forgot almost all of it by the time I took a second year graphics, needless to say I had no problem picking up the concepts in a weekend from scratch. The amount of LA required is a very very small subset compared to all the crap you do in a full blown LA course.

Most students in the CS program hate math and CS theory courses. Subjects like Algorithm Analysis, Discrete Math, Automata Theory which often get cited as examples of stuff that self-taught programmers might not know are boring and annoying. Almost every student in the department dreads these courses but has to hold his/her nose and take them to fulfill the degree requirement and most people promptly forget these courses after passing the exam unless they have real interest in the topic and are taking fourth year electives in the subject. To be honest I don't think the self-taught programmers are missing anything.

And congratulations for digging up a use case for Calculus in CS. I can site examples of CS fields where say Cognitive Psychology has huge influence. The fact still remains that it is completely irrelevant to most of CS unless you are interesting in that one obscure area (in which case more power to you).


Your reply comes across as extremely bitter. I could definitely understand being pissed about taking an American History or Anthropology prereq or something, but are you seriously saying that algorithms are "boring and annoying"?

As a self-taught programmer who is just wrapping up pre-program requisites for the CS program at a decent school, I am drooling to get some formal instruction in algorithms and FSAs. And I'm sorry but I've even gleaned some good understanding of time complexity notation from my pre-calc/trig class.

I just don't get this, I guess. I'm dying to get some formal education on the more scientific and heavier math subjects. These are things I wouldn't ever teach myself because I am so task-oriented when I program. Why "waste time" mastering the concepts of FSAs when I've got a web application to build?

I hope you learn to appreciate the potential for greater understanding that these boring and annoying classes give you. You have made the choice to discard their value on your own faulty assumption that your limited understanding of the world is a complete understanding of the world. It makes me kind of sad that all the liberal arts majors in the world are happy as pigs in shit to be studying Proust and how to make coffee, while here you are shitting all over a high quality education in a hard science/engineering that will undoubtedly provide you a lucrative, comfortable career if you choose to pursue such a thing.

I can assure you, as a 31-year-old man who was self taught until last fall, I have definitely missed those topics.


Algorithms would be interesting if we actually studied algorithms. Algorithms classes are nothing but thinly veiled math courses and an exercise in writing proofs. I have absolutely zero interest in mathematical aspects of CS and at this point in my education these courses which are being forced on me are just preventing me from taking the more interesting classes that I want to take like Compilers and Networks. There is nothing more annoying that being upper level student and being forced by university to take courses which you have zero interest in and as a result not getting a chance to be in interesting courses that you actually want to take.

I'm not trying to sound bitter but as I mentioned a vast majority of students barely tolerate these courses and only take it because they are being forced to and once they pass they don't think about such dry material and end up at the same level as "self taught programmers". In that sense I don't think self taught programmers are missing anything. If you are interested in this stuff than more power to you. It's just that from my experience I highly doubt that many self taught programmers would want to or enjoy learning these topics anyways.


The House example is horrible. In the show rarely does house diagnose an illness thorough intellectual debugging. In most episodes House sits around and insults his team while they run tests and about 5 minutes from the end he out of nowhere has an epiphany (while talking to Wilson most of the time) which often has little to do with what tests the team ran and he solves the case.


OK, maybe in Season 7, but in Season 1?


Yes, absolutely.

If you like House (for the medical mystery aspect rather than the snark), you may also like Berton Roueche's writing. _The Medical Detectives_ is a pretty good collection.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: