Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

You can look out for yourself without lying, cheating, or backstabbing others. You can operate as a moral, ethical person, and not have to mislead people, or break your promises.

Looking out for yourself is not the problem, dishonesty is.

This becomes a bigger problem when dishonesty becomes part of the culture.



I'll agree with outright lying in that a person knowingly lying to another person is wrong. But with the rest I'm not sure I can agree.

Because again the Valley is a kill or be killed environment. The assumption is that others will look out for themselves. So, for example, if someone were to promise me something I'd ask for a contract. If I don't get a contract I'd assume that person was planning to violate that promise some day. Because that's how that environment works.

And I'm not sure it could be any other way. Because the stakes are so high. It is human nature for people to forgive themselves if they feel they're acting for a higher cause. So if that person believes their company will make them billions of dollars and make the world a better place then they're likely to forgive themselves for telling a lie here or there.

It may not be right but it's the way the world works (and honestly it's why I don't live there anymore)


I try to avoid contracts because they're a huge timesuck and potentially expensive to get reviewed, not because I intend to screw you. If it's a really big deal in terms of potential monetary damages, though, then you're probably right.


That's an interesting point. I've always thought of contracts as being the mechanism by which two honest parties clarify the terms of their agreement, such that the main value was getting the details written down, and agreed on, where they might otherwise be missed.

It depends on the business, of course, but while I won't sign something I disagree with, I'd never trust that a court would have my back in a dispute. I'm more more concerned with whether the other party has integrity, and has interests aligned with mine, than specific terms of an agreement.

In large part, I think of contracts as unenforceable, though maybe this comes from working at startups so much where you sign contracts, but you know that at your current size you couldn't afford the court case to enforce the contract, if it came to that.

Mediation makes them more viable, though, since it lowers the barrier for getting a dispute heard.

I think you and I don't live in Silicon Valley for very similar reasons. Plus, I just find the high risk focus a distraction from building a scalable business.


Agreed. And as a San Francisco startup guy for a dozen years, that balance between honesty and self-interest is generally what I have seen here. There are assholes wherever you go, but I've benefited a lot from the relatively collaborative environment here, and try to give back in turn.


> without lying, cheating, or backstabbing...not have to mislead people, or break your promises.

From my time in the valley, I'd say dishonesty, misleading clients, breaking promises, not delivering on time, all of that is very much a part of the sv culture.

At Sun, we'd tell all our clients that Microsoft was evil, out to crush us. Our CEO Scott McNealy sent around a famous email about the sizes of MS & non-MS file formats. "Sun will win" had 12 chars * 1byte/char = 12 bytes as a textfile, 24 bytes as an Openoffice file, and 100,000 bytes as an MS powerpoint slide! While entirely factual, it was quite a dubious example, considering that internally within Sun, we happily used Wintel machines, used powerpoint for presentations, emailed Word files around instead of PDFs, and dissed openoffice as a piece of junk :)

When Java was in its infancy ( 1997-2000 period ), a lot of promises were made & fell by the wayside. Sun was building up its consulting arm, so we'd go out to customer sites and say Yes Java can do this, that and the other. Then we'd come back & Javasoft would tell us, look this feature is simply not part of the forthcoming API. Sometimes they'd get an old wise Unix/C hacker to write C code to do whatever was necessary beneath the covers, and then write a JNI wrapper atop that and thus claim Hey Java can actually do telnet & ftp natively ( Ha!).

I had to deal with a lot of graphics code that was routinely promised & arrived DOA. One of the primary requirements for most financial sevices firms was a table widget to display spreadsheets. AWT didn't have one. Someday there was suposed to be something called Swing, and it would have a powerful table API that would rival the MFC widgets in its power. That's what Sun told us, and that's what we as Sun consultants sold to all our Wall Street clients. But the damn thing took so long to build, every firm had their own proprietary table APIs.

At GS I worked on something called GSTable ( God those horrible memories make them go away! ) So this godawful GSTable was a homecooked solution to display tabular data. I started with something stupid - create an array of Label ( AWT labels ) and put them in a Panel. This created m x n + 1 components per table - too heavy & memory intensive. Then when Swing came out & didn't have a table, we made m x n JLabel's and put them into a JPanel. Over the summer, a Princeton computer graphics intern coded up a canvas ( just 1 custom Component ) that overrode paint() and drew all the cell contents. That worked so well, GS made the teen a six figure offer while he was still in his junior year. All he'd have to do is maintain that table widget! He wisely turned them down & went on to become a computer graphics heavyweight. Meanwhile, I worked on that GSTable as it went through various iterations, until it was actually capable of displaying rows and columns with different sizes, which was apparently a very common requirement in finance. Then finally the Swing JTable arrived! I was like Hallejulah end of all my misery! But alas, Sun's promises & its deliverable were so far apart. That JTable couldn't display multiwidth rows, the paint code was riddled with scaling bugs, it was a bloody mess. There were actual fuck this and fuck that blocks of code in the repaint...the frustrated Javasoft developer wrestling with repaint math! So we stuck with the GSTable. Then IBM came out with their SWT, you had Marimba with their desktop widgets...but everytime we decided to adopt something as the standard, that company would just vanish into thin air...Marimba decided it wanted to get out of AWT widgets business and stick to push technology so that was that...so many broken promises and toy widgets, certainly none of them worth the hundreds of thousands of dollars in license fees.

Everybody likes to paint wall st as a paragon of evil while the poor honest tech genius slogs away in the valley working on the cutting edge of technology. In reality, greed is rampant on both sides, money flows from main st to wall st & from there on to the valley. Everybody's got his fingers in the cookie jar.


"From my time in the valley, I'd say dishonesty, misleading clients, breaking promises, not delivering on time, all of that is very much a part of the sv culture."

Vaporware comes to mind.

As well as my own personal experience being told not to inform mfg. reps and vars about known bugs and problems (this was early 90's). Not knowing the ropes at the time I was threatened in a meeting for suggesting we do something that is more or less routine today.

And this type of dishonesty brings much pain and frustration on people using the product.


Who was that "Princeton computer graphics intern" and what did he build afterwards?


Dude...its all such a blur..I'd have to rent a time machine and hit the computer graphics depts at all the ivies. But I did find some JTable code from way back then, in the bugfix archive http://www.mail-archive.com/classpath-patches@gnu.org/msg018...

public void setRowHeight(int rh, int row) { setRowHeight(rh); // FIXME: not implemented }

So that was actual code that Sun shipped. A method setRowHeight(rh,row) that allowed you to change the height of row number 'row' to 'rh', instead changed the height of ALL rows to 'rh' because the alternative was too hard and therefore not implemented! So much for multi-height rows.




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

Search: