Imagine you get more mail a day than you can read. You got two choices: spend significant time filtering through or risk missing the signal for the noise.
Now imagine every message in your inbox cost someone $100. First, it would significantly cut down on the volume. Second, if you know that a stranger spent $100 to write to you, you can assume it's not completely trivial - someone must have thought that what they have to say is so valuable that you're going to care and respond that they staked money on it.
Frankly, $100 is cheap. Say I have a startup idea that I think facebook would jump all over but I have no-one in my network who can help me bring it to FB's attention. I would GLADLY pay $100 for access to Zuckerberg - if $100 is enough to bring his inbox to a reasonable size such that my genuinely good idea could get the attention it deserves, it's well worth it. Frankly I think $100 is too cheap for someone at as high a profile as Zuckerberg.
Many of us get LinkedIn email from recruiters that we generally proceed to ignore. Now let's say a recruiter had to pay $5 to email me (if they weren't in my network): it would both cut down the amount of noise, and make me likely to take the email more seriously: if the recruiter was willing to put up money to make me aware of his opportunity, maybe there's something there.
Similarly, imagine it cost $5 to send your resume to a company. It would immediately stop people submitting their resumes for every posting in the world. The company could rely on the fact that any application for any position is from someone who genuinely believes they are a match and perhaps do away with machine resume filters, if the volume was brought down enough. In other words: although it would seem "greedy" to charge people $5 to apply for your job, it would end up meaning that more of the better candidates made it further through the process.
In general, putting a $ figure on a communication significantly increases the signal to noise ratio. $100 for Zuckerberg's attention is fair. $5 for my attention on LinkedIn is probably fair too - especially if I could set my own price. If I don't get anyone contacting me, I drop the price. If I get too many bogus offers, I raise it.
I am commenting for the first time in years to say.... Huh?!
If you are the leader of the team, you set the expectations and the tone for everyone else. Your belief that bad behavior is "guaranteed" dooms your effort to control it. You must make it clear to yourself that nothing inappropriate must be said or done, then make it clear to your team that infractions will not be tolerated. The expectation should be that no inappropriate behavior occurs, period.
Others have already told to you why your attitude will get you sued and that the behavior you describe is immature and unprofessional. Let me just add one more thing: miscommunication is an inevitable consequence of human interaction. By sanctioning any borderline behavior not only are you increasing the risk of someone reacting negatively, but you are leaving yourself without any way to reassure anyone that what happened WAS just a misunderstanding rather than evidence of a hostile work environment.
That being said, I have worked for, with, and managed people of both genders and many backgrounds. Not once did I encounter an environment where inappropriate behavior was exhibited towards anyone. Proper professional behavior should be a given, not an impossible goal to work towards. Are you sure your team has a problem? Or are you seeing your coworkers through your own lense?
Good luck, I think you are going to need lots of it.
The only reason I prune my FB friend list is that having random people on there reduces the value of the system.
I do a lot of college recruiting and I often connect with people I am interested in on FB. First, it just helps to connect faces to names when we try to remember later what we liked about a candidate. Second, it provides a easy way to keep in touch with them (eg: we didn't hire someone this year because they weren't ready, but maybe next year). But eventually the people from schools I recruit from became a hefty minority of my friends on FB, and FB started suggesting their friends to me. Which makes sense algorithmically but that's not people I know. Eventually I went back and removed all the candidates that didn't pan out, and FB went back to suggesting (occasionally) people I really did want to reconnect with.
Ugh sorry. Foiled by the HTML formatting. Here's what it's supposed to look like
There's a quote in Code Complete ( I think ) that one should be able to read code in the evening in one's armchair with a glass of brandy as if it were a novel. My personal version of it - and the criteria I impose on my team - is that I should be able to read and understand the code w/o having to think too hard or knowing much about what the programmer is trying to do. It's really easy to enforce this in code review - if I can sit at someone's desk and quietly read their code and know what's going on, it's good enough - either sufficiently-commented or self-commenting. On the other hand, if I have to ask what a section does, whatever the developer says to me verbally is also a good candidate for a comment.
The other key factor in commenting is that it must be clear not only what the code is doing, but why. For example, if I encounter the following in the code:
if (productType != SOME_TYPE and client != SOME_CLIENT) { sendReportToCleint() }
it doesn't help to have a comment saying
// Send the report, unless it's SOME_CLIENT buying SOME_TYPE.
I already know that... what helps is:
// Don't send reports to SOME_CLIENT for SOME_TYPE because their system // crashes on this message and they don't know how to fix it. This is // as per discussion with Jon Doe on mm/dd/yyyy
There's a quote in Code Complete ( I think ) that one should be able to read code in the evening in one's armchair with a glass of brandy as if it were a novel. My personal version of it - and the criteria I impose on my team - is that I should be able to read and understand the code w/o having to think too hard or knowing much about what the programmer is trying to do. It's really easy to enforce this in code review - if I can sit at someone's desk and quietly read their code and know what's going on, it's good enough - either sufficiently-commented or self-commenting. On the other hand, if I have to ask what a section does, whatever the developer says to me verbally is also a good candidate for a comment.
The other key factor in commenting is that it must be clear not only what the code is doing, but why. For example, if I encounter the following in the code:
if (productType != SOME_TYPE and client != SOME_CLIENT) {
sendReportToCleint()
}
it doesn't help to have a comment saying// Send the report, unless it's SOME_CLIENT buying SOME_TYPE.
I already know that... what helps is// Don't send reports to SOME_CLIENT for SOME_TYPE because their system// crashes on this message and they don't know how to fix it. This is// as per discussion with Jon Doe on mm/dd/yyyy
This is basically the principle of least astonishment
What??? Using any decent program you should be able to tell what your current balance is and what it will eventually be. Besides which, additional funds were being removed so it should simply show up as unknown or at best duplicate transaction which, if you bother to keep track of your finances, should stand out.
I agree that the Guy in the story seems to have not done a good job of reconciling his statements. I was pointing to the difficulty of keeping track of the balance w/o doing minute reconciliation:
If I write 2 checks for $10 and my account starts at $100, I don't at any time know if my account SHOULD have 100, 90, or 80 dollars in it. If one is diligent about his finances these things should be possible to spot (I am not sure what the article means when they say the statement was so convoluted that the Guy couldn't reconcile it)
My point though is it's easier to use credit. I charge 2 things on my card, the statement comes, I can review it, and then transfer the payment from my checking account. This way my account is debited once at the time of my choosing, which would make any other attempts to wire money out stand out. Of course I would still have to review my Credit Card statement with dilligence.
We just had a story on automatic bill pay where I voiced my support for credit cards over writing checks. This story supports that:
First, if someone defrauds your credit card, you're not liable. Dispute the charge and you're done, the onus is then on the merchant to prove the validity of the transaction. With cash accounts, once the money is gone, it's gone.
Second, checking accounts are difficult to reconcile as can be seen from the linked story. The person in question despite being financially sophisticated, was not able to be SURE about what his balance should be. Because the checks settle out of your account at the timing discretion of the recipient of the funds, it's not possible to say what your balance on any given day should be, which makes it hard to spot problems as they occur.
While the Guy (hah) in the article probably cannot avoid writing many checks due to his business, the fewer checks an individual writes the easier it is to keep track of one's balances. As long as you have the discipline to not abuse your credit card, it's the way to go.
I know empirical data isn't proof but I have been paying bills on the net for years and it's been working very well. The basic setup is: all bills are auto-charged to a credit card. I review the card's statement at month end and xfer cash from Checking if everything's correct. This has a few benefits:
- cash back from the credit card on $ I'd spend anyway. - no letters to mail / statements to be late on - since cash only moves into the CC from checking acct once, I don't have to micro-manage my Checking balance throughout the month. - CC statement represents a nice sum total of my monthly spending.
Not only have I not had problems with this, it actually makes sense financially:
- save on stamps
- money back on CC purchases
- CC = interest free loan for a month
I also keep track of all my balances in Microsoft Money. That gives me a very good overview of my overall situation while the monthly CC statement gives me depth on each month's spendings.
Maybe this system isn't for everyone but it's been working for me for 6+ years.
I already know I am going to be raked over the coals here so I am providing the warnings upfront: the link bellow (1) goes to my own site (2) contains a list of books with links to Amazon and (3) is a work in progress and has jacked-up CSS.
If you're offended by any of the above, don't click. But just in case anyone's interested, here's a link to MY PERSONAL take on books that have helped me become a better (I would even dare say, good) programmer. Since I work in the financial industry, the are links to some good financial books as well.
" do NOT write code on whiteboards with markers in my real job, why should I have to put up with that in an interview"
Because the purpose of the interview is to watch you and talk to you, have you describe your thoughts, etc. It's much more informative to me to see you correct your bugs based on visual review of the code rather than because the compiler or a test-run drove you to it.
The problems you're asked in interviews are trivial implementations, and you're rarely judged on the finer details that the compiler would catch. The whole point is to see what you can do based on your knowledge alone, w/o trial and error afforded by compilation.
Funny, but it's a good point. How do the employers know that the candidate is showing his/her own code? Even if they are, most likely the code for show will be polished to perfection over however long that takes, and probably not representative of their code while working on a deadline. Far better to give a test during the interview and have your best engineers present to evaluate the candidate
There would still be value in this. It's understood that your code would be better than your average code in this case but that's ok. If the code submitted is good, it will mean one or more of the following:
1. You know what good code looks like.
2. You understand that the job application process is important and took the time to make code good.
3. You possibly gave it to someone else to review.
Trust me, it's rare enough that someone would be good enough to do that. Most people would submit crap even given all the time in the world to polish it off. The ones who manage to submit a good sample would still form a better candidate pool, no matter what technique they used.
I am a big fan of Opera and was initially very disappointed with the 9.5 version that came out today. Much of non-trivial rendering was broken (for example, the chats in Gmail Chat were totally messed up.) I couldn't believe that my beloved Opera delivered such a turd. It was very very disappointing.
For some reason I decided to uninstall Opera, remove my profile and try again. This this time it started to work and WORKS GREAT. I guess there's something in my profile that's been there for years (it's my original config going back years...) that somehow messed up 9.5
So heads up. If Opera 9.5 works weird for you, try running on a clean profile.
Public companies are now being run by the shareholders that take out payday loans, refinance their houses...
84% of Yahoo stock is held by institutional investors, mutual funds, company insiders, and people who own 5% or more of the firm. Which one of these demographics do you think is taking out payday loans?
Your question probably doesn't have a single answer - both choices present positives and negatives.
Other people seem to have done a thorough job of identifying the pros and the cons, so I want to focus on a single aspect of it - recruitment.
(Disclaimer - I've been involved in college recruitment in my company for a few years. Currently I am responsible for recruitment from NYU)
* Top employers cannot recruit at every single school so unless your school has a large and well-reputed CS department, you're not likely to see them at your job fairs or setting up on-campus interviews. Landing that first job is very important to putting your career on the right track, so this counts for a lot. Not that on-campus recruitment is the only way to get into those firms, but it helps when the companies are looking for you rather than the other way around.
* The above holds double for internships and co-ops. A top company may allocate its intern slots for certain schools so being in those schools helps.
* Having a well-known school on your resume helps, and quite frankly it helps beyond that first job. If a senior resume lands on my desk and I am not familiar with the company the person's experience is with but am familiar with and respect their education, that counts for something.
Ultimately, if you have talent and you leverage your education, you will be successful no matter which school you go to. But all things being equal, you do want the three things I mentioned above working in your favor, not against you.
Shameless plug on the topic - I am looking for entry level programmers who would like to work in NYC. Excellent company (you've heard of it) whose main business is developing financial software. Feel free to contact me if you're a student or recent grad interested in such an opportunity. It shouldn't be hard to find or guess my email address.
I know you got a few replies already which hopefully clarified this. If not, here's my own way to visualize this. Hope it helps.
The two doors you didn't pick have combined probability of winning = 2/3.
Now one of the doors is opened to show a goat, so its probability of winning is = 0.
If two doors have combined probability 2/3 but you know one of them has 0 probability, the other door has the 2/3 of the probability concentrated in it.
"The waitress, (receptionist, librarian, whatever). She was openly blatantly flirting."
"I think she was just being polite."
"No, She wasn't. She was openly blatantly flirting with you and you're too stupid to see it."
What is your wife trying to accomplish by doing that? Next time this happens, flip it around a bit:
"The waitress, (receptionist, librarian, whatever). She was openly blatantly flirting."
"Yeah I am hot shit, I get this all the time. Ladies love me"
Let me know what she says.
is why clicking on a spot in the "progress bar" for a video or song doesn't take me to exactly the spot. The seeker just jumps forward or backward a little in that direction.
That's how scroll bars work (in Windows at least) and I've seen some people use that feature. Perhaps the developer of the player you're pissed off about does a "fast forward" more often than a seek, and he wanted to be able to skip forward a little bit just by clicking somewhere in the right direction on the progress bar.
Dr. Edmond Schonberg, AdaCore Inc. (Vice President).
I had him as a prof for Programming Languages in NYU and while he did spend some time on Ada, what I really walked with from that class was a much deeper understanding of the two languages I know best: Java and C++, as well as a deep new appreciation for Lisp (I was on vacation the week he talked about ML but I know he gave it a good treatment as well)
He didn't slam these languages of praise Ada disproportionately. In general, it seems that his interest and passion for CS led him to Ada, rather than his association with Ada shapping his views on the other languages.
Sorry if this is not a direct answer to your question or seems like a shameless plug, but... I wanted to make a reading list for new programmers a while ago (because I ended up recommending the same books over and over to my friends and people I work with) so I started this: important books for programmers. Unfortunately I never had time to complete the writeups as to WHY I think most of those books are key, so basically the above is a list of links to books I read and thought others should too.
I am mainly a C/C++ programmer nowdays so the list is skewed that way but I tried to make sure the fundamentals are covered as well. Feel free to contact me if you want to know more about why a specific book was chosen.
Java was essentially my first language. I did BASIC as a kid and Pascal in High School, but Java was the first language that I used to actually earn money when I worked during undergrad. Most of my undergrad was Java based as well.
A testament to Java is the fact that there's a small company out in Cleveland whose entire operation runs on software I wrote for them during one summer in my undergrad days. It does all their books/invoices/shipping/recieving/inventory/reports, and there hasn't been a bug in it since it was delivered in 2000 or 2001. The APIs and garbage collection as well as platform independence (for straight-forward things, anyway) of Java allowed me to focus on business logic and actually deliver what the client wanted. I am actually very proud of that project, and there are other projects I wrote during those years that are still being used by real businesses. I am not sure that C/C++ would give me the leverage to pull that off so quickly in a one-man show.
So the upside is that Java allowed me to be a fairly experienced writer of real-world software by the time I got my bachelor's degree. The downside is that I graduated w/o having a good sense of compilers, memory management, algorithms - but that's sort of language-independant. I am sure that if my undergrad was C/C++ based, I'd have at least a better sense of memory management but at the time I was really just interested in writing software and Java let me do that.
During my senior year I was recruited by a C shop, so I had to learn C. They bought me K&R (and a few other great books like Code Complete). I read K&R in one shot over a weekend, and I was a good C programmer from that day. I actually was much better at C than a lot of more experienced programmers exactly because C is a simple language and it kinda needs to be learned from K&R rather than by trial and error. So being a good programmer + reading K&R as gospel was a good combo.
After working in this C shop, I started to get a sense of all this stuff I've never had to deal with before - intricacies of compilers and linkers, insight into programming languages and memory management, etc. So certainly WORKING with C (and C++) having come from a different background was thought-provoking. It made me realize that all the stuff I didn't care about in undergrad (and didn't HAVE to care about because I had Java) had relevance. So when I went for my Masters' degree, I focused a lot more on basics like Programming Languages, Compiler Construction, OS, and Algorithms. In fact, I was very lucky to have Ed Schonberg (one of the authors of the article we're talking about here) as instructor for the first two and other great instructors for the other two (I made an effort to take courses w. instructors who were well recomended as people I am going to learn a lot from)
Perhaps I am biased towards myself and my learning patterns, but in general I think most people go into Computer Science because they want to be programmers (and hopefully because they love programming) - and I think that the job of an undergrad education is to make sure you know enough to be a working programmer. Frankly, I didn't learn anything about compilers in undergrad because I couldn't care less about something I didn't have to use in a non-trivial way. So it would be in one ear and out the other, and I suspect many people are like that. In undergrad, you're supposed to learn and think as a programmer and maybe get some exposure to the big paradigms that are out there.
When people go for Mater's, I expect that to mean they have a real interest in the actual science and that's where the hardcore basics should be taught. There's no point to teach someone all about compilers if they aren't good enough at programming to actually have to compile anything in their daily work! This is part of the reason I strongly advocate for people to go into the industry between undergrad and masters' - real-world experience should be a good motivator for why a lot of this stuff matters.
How long until someon registers rm.rf ?
You know you've been studying for the CFA too intensely when rm.rf makes you think of 'market risk premium' *
* E(Rm-Rf) where Rm is the return of the market and Rf is the risk-free rate, it's the extra return investors demand for investing in the risky market rather than earling the risk-free rate.
Imagine you get more mail a day than you can read. You got two choices: spend significant time filtering through or risk missing the signal for the noise.
Now imagine every message in your inbox cost someone $100. First, it would significantly cut down on the volume. Second, if you know that a stranger spent $100 to write to you, you can assume it's not completely trivial - someone must have thought that what they have to say is so valuable that you're going to care and respond that they staked money on it.
Frankly, $100 is cheap. Say I have a startup idea that I think facebook would jump all over but I have no-one in my network who can help me bring it to FB's attention. I would GLADLY pay $100 for access to Zuckerberg - if $100 is enough to bring his inbox to a reasonable size such that my genuinely good idea could get the attention it deserves, it's well worth it. Frankly I think $100 is too cheap for someone at as high a profile as Zuckerberg.
Many of us get LinkedIn email from recruiters that we generally proceed to ignore. Now let's say a recruiter had to pay $5 to email me (if they weren't in my network): it would both cut down the amount of noise, and make me likely to take the email more seriously: if the recruiter was willing to put up money to make me aware of his opportunity, maybe there's something there.
Similarly, imagine it cost $5 to send your resume to a company. It would immediately stop people submitting their resumes for every posting in the world. The company could rely on the fact that any application for any position is from someone who genuinely believes they are a match and perhaps do away with machine resume filters, if the volume was brought down enough. In other words: although it would seem "greedy" to charge people $5 to apply for your job, it would end up meaning that more of the better candidates made it further through the process.
In general, putting a $ figure on a communication significantly increases the signal to noise ratio. $100 for Zuckerberg's attention is fair. $5 for my attention on LinkedIn is probably fair too - especially if I could set my own price. If I don't get anyone contacting me, I drop the price. If I get too many bogus offers, I raise it.
I am commenting for the first time in years to say.... Huh?!
If you are the leader of the team, you set the expectations and the tone for everyone else. Your belief that bad behavior is "guaranteed" dooms your effort to control it. You must make it clear to yourself that nothing inappropriate must be said or done, then make it clear to your team that infractions will not be tolerated. The expectation should be that no inappropriate behavior occurs, period.
Others have already told to you why your attitude will get you sued and that the behavior you describe is immature and unprofessional. Let me just add one more thing: miscommunication is an inevitable consequence of human interaction. By sanctioning any borderline behavior not only are you increasing the risk of someone reacting negatively, but you are leaving yourself without any way to reassure anyone that what happened WAS just a misunderstanding rather than evidence of a hostile work environment.
That being said, I have worked for, with, and managed people of both genders and many backgrounds. Not once did I encounter an environment where inappropriate behavior was exhibited towards anyone. Proper professional behavior should be a given, not an impossible goal to work towards. Are you sure your team has a problem? Or are you seeing your coworkers through your own lense?
Good luck, I think you are going to need lots of it.
The only reason I prune my FB friend list is that having random people on there reduces the value of the system.
I do a lot of college recruiting and I often connect with people I am interested in on FB. First, it just helps to connect faces to names when we try to remember later what we liked about a candidate. Second, it provides a easy way to keep in touch with them (eg: we didn't hire someone this year because they weren't ready, but maybe next year). But eventually the people from schools I recruit from became a hefty minority of my friends on FB, and FB started suggesting their friends to me. Which makes sense algorithmically but that's not people I know. Eventually I went back and removed all the candidates that didn't pan out, and FB went back to suggesting (occasionally) people I really did want to reconnect with.
The logic error is intentional ;)
Ugh sorry. Foiled by the HTML formatting. Here's what it's supposed to look like
There's a quote in Code Complete ( I think ) that one should be able to read code in the evening in one's armchair with a glass of brandy as if it were a novel. My personal version of it - and the criteria I impose on my team - is that I should be able to read and understand the code w/o having to think too hard or knowing much about what the programmer is trying to do. It's really easy to enforce this in code review - if I can sit at someone's desk and quietly read their code and know what's going on, it's good enough - either sufficiently-commented or self-commenting. On the other hand, if I have to ask what a section does, whatever the developer says to me verbally is also a good candidate for a comment.
The other key factor in commenting is that it must be clear not only what the code is doing, but why. For example, if I encounter the following in the code:
if (productType != SOME_TYPE and client != SOME_CLIENT) {
sendReportToCleint()
}
it doesn't help to have a comment saying
// Send the report, unless it's SOME_CLIENT buying SOME_TYPE.
I already know that... what helps is:
// Don't send reports to SOME_CLIENT for SOME_TYPE because their system
// crashes on this message and they don't know how to fix it. This is
// as per discussion with Jon Doe on mm/dd/yyyy
There's a quote in Code Complete ( I think ) that one should be able to read code in the evening in one's armchair with a glass of brandy as if it were a novel. My personal version of it - and the criteria I impose on my team - is that I should be able to read and understand the code w/o having to think too hard or knowing much about what the programmer is trying to do. It's really easy to enforce this in code review - if I can sit at someone's desk and quietly read their code and know what's going on, it's good enough - either sufficiently-commented or self-commenting. On the other hand, if I have to ask what a section does, whatever the developer says to me verbally is also a good candidate for a comment. The other key factor in commenting is that it must be clear not only what the code is doing, but why. For example, if I encounter the following in the code: if (productType != SOME_TYPE and client != SOME_CLIENT) { sendReportToCleint() } it doesn't help to have a comment saying // Send the report, unless it's SOME_CLIENT buying SOME_TYPE.
I already know that... what helps is // Don't send reports to SOME_CLIENT for SOME_TYPE because their system // crashes on this message and they don't know how to fix it. This is // as per discussion with Jon Doe on mm/dd/yyyy
This is basically the principle of least astonishment
What??? Using any decent program you should be able to tell what your current balance is and what it will eventually be. Besides which, additional funds were being removed so it should simply show up as unknown or at best duplicate transaction which, if you bother to keep track of your finances, should stand out.
I agree that the Guy in the story seems to have not done a good job of reconciling his statements. I was pointing to the difficulty of keeping track of the balance w/o doing minute reconciliation:
If I write 2 checks for $10 and my account starts at $100, I don't at any time know if my account SHOULD have 100, 90, or 80 dollars in it. If one is diligent about his finances these things should be possible to spot (I am not sure what the article means when they say the statement was so convoluted that the Guy couldn't reconcile it)
My point though is it's easier to use credit. I charge 2 things on my card, the statement comes, I can review it, and then transfer the payment from my checking account. This way my account is debited once at the time of my choosing, which would make any other attempts to wire money out stand out. Of course I would still have to review my Credit Card statement with dilligence.
We just had a story on automatic bill pay where I voiced my support for credit cards over writing checks. This story supports that:
First, if someone defrauds your credit card, you're not liable. Dispute the charge and you're done, the onus is then on the merchant to prove the validity of the transaction. With cash accounts, once the money is gone, it's gone.
Second, checking accounts are difficult to reconcile as can be seen from the linked story. The person in question despite being financially sophisticated, was not able to be SURE about what his balance should be. Because the checks settle out of your account at the timing discretion of the recipient of the funds, it's not possible to say what your balance on any given day should be, which makes it hard to spot problems as they occur.
While the Guy (hah) in the article probably cannot avoid writing many checks due to his business, the fewer checks an individual writes the easier it is to keep track of one's balances. As long as you have the discipline to not abuse your credit card, it's the way to go.
-Ed
I know empirical data isn't proof but I have been paying bills on the net for years and it's been working very well. The basic setup is: all bills are auto-charged to a credit card. I review the card's statement at month end and xfer cash from Checking if everything's correct. This has a few benefits:
- cash back from the credit card on $ I'd spend anyway.
- no letters to mail / statements to be late on
- since cash only moves into the CC from checking acct once, I don't have to micro-manage my Checking balance throughout the month.
- CC statement represents a nice sum total of my monthly spending.
Not only have I not had problems with this, it actually makes sense financially:
- save on stamps
- money back on CC purchases
- CC = interest free loan for a month
I also keep track of all my balances in Microsoft Money. That gives me a very good overview of my overall situation while the monthly CC statement gives me depth on each month's spendings.
Maybe this system isn't for everyone but it's been working for me for 6+ years.
I already know I am going to be raked over the coals here so I am providing the warnings upfront: the link bellow (1) goes to my own site (2) contains a list of books with links to Amazon and (3) is a work in progress and has jacked-up CSS.
If you're offended by any of the above, don't click. But just in case anyone's interested, here's a link to MY PERSONAL take on books that have helped me become a better (I would even dare say, good) programmer. Since I work in the financial industry, the are links to some good financial books as well.
http://ed.markovich.googlepages.com/important_books_for_programmers.html
-Ed
" do NOT write code on whiteboards with markers in my real job, why should I have to put up with that in an interview"
Because the purpose of the interview is to watch you and talk to you, have you describe your thoughts, etc. It's much more informative to me to see you correct your bugs based on visual review of the code rather than because the compiler or a test-run drove you to it.
The problems you're asked in interviews are trivial implementations, and you're rarely judged on the finer details that the compiler would catch. The whole point is to see what you can do based on your knowledge alone, w/o trial and error afforded by compilation.
Funny, but it's a good point. How do the employers know that the candidate is showing his/her own code? Even if they are, most likely the code for show will be polished to perfection over however long that takes, and probably not representative of their code while working on a deadline. Far better to give a test during the interview and have your best engineers present to evaluate the candidate There would still be value in this. It's understood that your code would be better than your average code in this case but that's ok. If the code submitted is good, it will mean one or more of the following: 1. You know what good code looks like. 2. You understand that the job application process is important and took the time to make code good. 3. You possibly gave it to someone else to review. Trust me, it's rare enough that someone would be good enough to do that. Most people would submit crap even given all the time in the world to polish it off. The ones who manage to submit a good sample would still form a better candidate pool, no matter what technique they used.
I am a big fan of Opera and was initially very disappointed with the 9.5 version that came out today. Much of non-trivial rendering was broken (for example, the chats in Gmail Chat were totally messed up.) I couldn't believe that my beloved Opera delivered such a turd. It was very very disappointing.
For some reason I decided to uninstall Opera, remove my profile and try again. This this time it started to work and WORKS GREAT. I guess there's something in my profile that's been there for years (it's my original config going back years...) that somehow messed up 9.5
So heads up. If Opera 9.5 works weird for you, try running on a clean profile.
-E
Public companies are now being run by the shareholders that take out payday loans, refinance their houses ...
84% of Yahoo stock is held by institutional investors, mutual funds, company insiders, and people who own 5% or more of the firm. Which one of these demographics do you think is taking out payday loans?
When I worked there they found that if they shrunk our cubes by a couple of feet they could get X more programmers in the building.
what would you have them do? Freeze hiring until the move to a new HQ?
Your question probably doesn't have a single answer - both choices present positives and negatives.
Other people seem to have done a thorough job of identifying the pros and the cons, so I want to focus on a single aspect of it - recruitment.
(Disclaimer - I've been involved in college recruitment in my company for a few years. Currently I am responsible for recruitment from NYU)
* Top employers cannot recruit at every single school so unless your school has a large and well-reputed CS department, you're not likely to see them at your job fairs or setting up on-campus interviews. Landing that first job is very important to putting your career on the right track, so this counts for a lot. Not that on-campus recruitment is the only way to get into those firms, but it helps when the companies are looking for you rather than the other way around.
* The above holds double for internships and co-ops. A top company may allocate its intern slots for certain schools so being in those schools helps.
* Having a well-known school on your resume helps, and quite frankly it helps beyond that first job. If a senior resume lands on my desk and I am not familiar with the company the person's experience is with but am familiar with and respect their education, that counts for something.
Ultimately, if you have talent and you leverage your education, you will be successful no matter which school you go to. But all things being equal, you do want the three things I mentioned above working in your favor, not against you.
Shameless plug on the topic - I am looking for entry level programmers who would like to work in NYC. Excellent company (you've heard of it) whose main business is developing financial software. Feel free to contact me if you're a student or recent grad interested in such an opportunity. It shouldn't be hard to find or guess my email address.
-ed
What am I missing?
I know you got a few replies already which hopefully clarified this. If not, here's my own way to visualize this. Hope it helps.
The two doors you didn't pick have combined probability of winning = 2/3.
Now one of the doors is opened to show a goat, so its probability of winning is = 0.
If two doors have combined probability 2/3 but you know one of them has 0 probability, the other door has the 2/3 of the probability concentrated in it.
"The waitress, (receptionist, librarian, whatever). She was openly blatantly flirting." "I think she was just being polite." "No, She wasn't. She was openly blatantly flirting with you and you're too stupid to see it." What is your wife trying to accomplish by doing that? Next time this happens, flip it around a bit: "The waitress, (receptionist, librarian, whatever). She was openly blatantly flirting." "Yeah I am hot shit, I get this all the time. Ladies love me" Let me know what she says.
that's one of the most interesting things i've watched on the internet, thanks.
is why clicking on a spot in the "progress bar" for a video or song doesn't take me to exactly the spot. The seeker just jumps forward or backward a little in that direction.
;-)
That's how scroll bars work (in Windows at least) and I've seen some people use that feature. Perhaps the developer of the player you're pissed off about does a "fast forward" more often than a seek, and he wanted to be able to skip forward a little bit just by clicking somewhere in the right direction on the progress bar.
I am not a fan of this though
Maybe everyone knows what dtrace is. I didn't. Then I watched this: link and now I do.
Dr. Edmond Schonberg, AdaCore Inc. (Vice President). I had him as a prof for Programming Languages in NYU and while he did spend some time on Ada, what I really walked with from that class was a much deeper understanding of the two languages I know best: Java and C++, as well as a deep new appreciation for Lisp (I was on vacation the week he talked about ML but I know he gave it a good treatment as well) He didn't slam these languages of praise Ada disproportionately. In general, it seems that his interest and passion for CS led him to Ada, rather than his association with Ada shapping his views on the other languages.
Sorry if this is not a direct answer to your question or seems like a shameless plug, but... I wanted to make a reading list for new programmers a while ago (because I ended up recommending the same books over and over to my friends and people I work with) so I started this: important books for programmers. Unfortunately I never had time to complete the writeups as to WHY I think most of those books are key, so basically the above is a list of links to books I read and thought others should too. I am mainly a C/C++ programmer nowdays so the list is skewed that way but I tried to make sure the fundamentals are covered as well. Feel free to contact me if you want to know more about why a specific book was chosen.
Java was essentially my first language. I did BASIC as a kid and Pascal in High School, but Java was the first language that I used to actually earn money when I worked during undergrad. Most of my undergrad was Java based as well.
A testament to Java is the fact that there's a small company out in Cleveland whose entire operation runs on software I wrote for them during one summer in my undergrad days. It does all their books/invoices/shipping/recieving/inventory/reports, and there hasn't been a bug in it since it was delivered in 2000 or 2001. The APIs and garbage collection as well as platform independence (for straight-forward things, anyway) of Java allowed me to focus on business logic and actually deliver what the client wanted. I am actually very proud of that project, and there are other projects I wrote during those years that are still being used by real businesses. I am not sure that C/C++ would give me the leverage to pull that off so quickly in a one-man show.
So the upside is that Java allowed me to be a fairly experienced writer of real-world software by the time I got my bachelor's degree. The downside is that I graduated w/o having a good sense of compilers, memory management, algorithms - but that's sort of language-independant. I am sure that if my undergrad was C/C++ based, I'd have at least a better sense of memory management but at the time I was really just interested in writing software and Java let me do that.
During my senior year I was recruited by a C shop, so I had to learn C. They bought me K&R (and a few other great books like Code Complete). I read K&R in one shot over a weekend, and I was a good C programmer from that day. I actually was much better at C than a lot of more experienced programmers exactly because C is a simple language and it kinda needs to be learned from K&R rather than by trial and error. So being a good programmer + reading K&R as gospel was a good combo.
After working in this C shop, I started to get a sense of all this stuff I've never had to deal with before - intricacies of compilers and linkers, insight into programming languages and memory management, etc. So certainly WORKING with C (and C++) having come from a different background was thought-provoking. It made me realize that all the stuff I didn't care about in undergrad (and didn't HAVE to care about because I had Java) had relevance. So when I went for my Masters' degree, I focused a lot more on basics like Programming Languages, Compiler Construction, OS, and Algorithms. In fact, I was very lucky to have Ed Schonberg (one of the authors of the article we're talking about here) as instructor for the first two and other great instructors for the other two (I made an effort to take courses w. instructors who were well recomended as people I am going to learn a lot from)
Perhaps I am biased towards myself and my learning patterns, but in general I think most people go into Computer Science because they want to be programmers (and hopefully because they love programming) - and I think that the job of an undergrad education is to make sure you know enough to be a working programmer. Frankly, I didn't learn anything about compilers in undergrad because I couldn't care less about something I didn't have to use in a non-trivial way. So it would be in one ear and out the other, and I suspect many people are like that. In undergrad, you're supposed to learn and think as a programmer and maybe get some exposure to the big paradigms that are out there.
When people go for Mater's, I expect that to mean they have a real interest in the actual science and that's where the hardcore basics should be taught. There's no point to teach someone all about compilers if they aren't good enough at programming to actually have to compile anything in their daily work! This is part of the reason I strongly advocate for people to go into the industry between undergrad and masters' - real-world experience should be a good motivator for why a lot of this stuff matters.
At
How long until someon registers rm.rf ? You know you've been studying for the CFA too intensely when rm.rf makes you think of 'market risk premium' * * E(Rm-Rf) where Rm is the return of the market and Rf is the risk-free rate, it's the extra return investors demand for investing in the risky market rather than earling the risk-free rate.