Hacker News new | past | comments | ask | show | jobs | submit login
I am an HFT Programmer (slashdot.org)
326 points by marksu on July 31, 2011 | hide | past | favorite | 229 comments



This is a huge load of bullshit. 99% of the "banking programmers" are some of the worst coders in the world. A vast majority of them just babysit a Bloomberg terminal, barely understanding the supposed math they use all day. Others just babysit an Excel spreadsheet, or worse, develop whole applications in Excel then try to get a real programmer to "build it". The lower echelons are even worse and just make shitty C# and Java web apps that are huge wastes of money.

The supposed "C++ optimizer" guys are some of the worst. They're the guys who go off and make algorithms they think are blazing fast, and sure for one tiny little use maybe, but then when you actually see the code it's a huge convolute mess for nothing. It's usually riddled with bugs, not in source control (Clearcase), only if it is only because the Compliance Dept. told them to, and they refuse to share because they're too damn competitive.

I've even seen projects by some of the top guys that were built by hand. No make file because the dude didn't trust make.

Don't even get me started about these jackasses that think their huge monolithic shitpiles of Java code are somehow superior, yet the only reason their code can actually run is because some bank sunk millions (and maybe billions) into infrastructure just to run that crap even moderately fast. I had one project where the damn process used so much ram per request they had to go buy an Azul box just to make it run even at 2 req/sec. That was their "cream of the crop" coders.

Finally, they constantly do this thing where they say, "Oh man my code is so awesome it's written in C++ and is so fast. No you can't see it. Oh but I make $500k a year!" They equate how awesome their code is by how much they make, but rarely have any idea of what other people's code is like.

Honey, if all you can make from your corrupt financial masters is $500k while they make billions and trillions then you're not a very good coder. And if I can't see your damn code, then you're a damn liar.

Take it from a guy who thought he'd run into some quality in the finance world. There is none, they just have so much money they can't help but make tons of it.


Banking != HFT.

I've worked at both a bank and an HFT firm, so I think I have some perspective you might find interesting.

To make a broad generalization from my experience, "Traders" at a bank are mostly non-technical Excel junkies. It seems like in your experience they also went by the title "Programmer", which I agree is a gross misnomer. Besides that, I think the most important thing to realize is that at banks, non-technical people run the show. The technical people are at the disposal of their non-technical overlords, and thus they spend their every waking hour implementing terrible specs like "do {some incredibly specific task}, and make it fast." Even worse, they are far down on the ladder of responsibility; a "banking programmer" has no feel for the big picture. This all culminates in what you describe: highly specialized/one-off/non-generic piece-of-shit code. But whatever, their MBA overlords don't care about the means, just the ends.

To make another broad generalization, "Traders" at an HFT firm are predominantly go-getter CS majors from top schools. Thus, if they have an idea, they implement it themselves. Any delegation of duty is done with strict specs, and bugs or terrible design in the finished product will get noticed. Incentives abound for writing good code: scalability/genericness is rewarded (have something that averages $1k trading symbol XYZ every day? You're a millionaire if it generalizes to many symbols), speed is rewarded (just the nature of the game), and bugs should lose you money (otherwise they are just unknowingly optimized around).

tldr: banking is like you describe, but there is plenty of quality in the HFT world.


There is a lot of crappy developers that's true.

If you look at the serious pieces of infra inside the front offices for pricing and risk however, there are some smart people that have done some good software.

Quite often however those projects are degraded as stewardship of these projects is inconsistent, and long tenure is not always there, so you don't get continuity in terms of engineering talent.

Frequently this is due to the fact that IT is treated as a cost rather than an enabler of profit, and salary increases do not keep pace with the market worth of fulltime employees - leading to job hopping.

For the non-managerial part of the financial developer's career, it is often a better trade to be an independent contractor on a good daily rate with tax breaks, than take the chance upon fluctuating market conditions and bonuses.

As software developer bonuses are not tied to material outcomes like the front office but are generally more qualitatively judged, this leads to insecurity.

The developers that hang around for many years and end up being the stewards of these good systems that slowly rot, are quite often the ones that are incurious about contracting or moving, or have no better options.

We are routinely picking the top few percentile from the best colleges - the banks don't lack talent - but what they lack is management with good engineering discipline, and good projects sometimes turn bad.

For the professional developer who is actually skilled, this provides unbounded opportunities - it is often easier to make a really big impact with relatively little effort by pruning an overrun garden than rebuilding a very large amount of function points from scratch.

Finally, it is incorrect to say that version control systems are not used. Simply not the case.


It depends on the bank, at some banks front-office developer bonuses are pay out of the desk bonus pool rather than a tech bonus pool.


It is rare these days in my experience - it creates an appropriate separation of concerns to have the management alignment distinct (that can be interpreted to be a Sarbannes Oxley requirement.)

There can be budgeting for specific desk profits in the relative bonus pools decided in IT, but bonus makes up a smaller percentage of developer total comp generally unless you are approaching management.

If you are desk dev and hack Excel and Access for the front office that can help your case in regards bonuses, but this isn't true software development of course.


This is from my experience in London, I guess NYC might be different due to regulatory concerns.


I am speaking of my last 15 years in London working in derivatives/front office IT, and interviewing for many jobs in front office IT. It is very exceptional to find banks that will organise IT to report into the front office structure - this doesn't occur, and I almost never hear of such a thing when I see job specs.


It's not all of IT, but it's not unusual for quant dev type roles to report to the front-office (either singly or as part of a dual-reporting structure). The reporting doesn't have to be direct for dev bonuses to be tied to PnL either, what I've seen happen at some places is that a certain percentage of the desk bonus pool is assigned to the development team and the development team management than decide how to split that pool among the developers.

Go to efinancialcareers and search for "PnL bonus" if you want to see some examples of job specs mentioning it.


So true. Finance attracts the most incompetent egomaniacs possible. I love getting lectures about how to design software from someone who has written:

    if x == 0:
        return "Monday";
    elif x == 1:
        return "Tuesday";
    ...
This should be a criminal offense.


Honest question. What is wrong with something like that? I could see it justified by saving the overhead of a complex Date class.


It's just inelegant. A better approach would be an array where you return the content at the index.


If you are going this route why not use a switch?

Or just an array.


python have no switch


I had the same question. I had these thoughts:

It looks like python, so the semi-colons are unnecessary.

If you want to rid yourself of datetime for whatever reason, implement it as a list, returning name_of_day[x], so that you can start the week on a Sunday(=0) easily if you want to.

Beyond that, I'm stuck too :-(


Two words: mapping structures.


Python ships with a standard datetime class which is powerful enough to represent time, and there is a ubiquitous module, dateutil, which extends it to do nearly anything people need to do with dates regularly.

Additionally, one would normally use an array of names and index it:

  days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
  that_day_you_wanted = days[x]


I have a better one. Project manager replaced enums with strings and instead of the switch statement he put a long list of if-s (without the else-s, too), and a lot of obfuscated crap between the braces.. Guess who had to sort out that mess? Also, the motivation for that horror was related to how those string parameters were visible in intellisense (because they were made static members in a class). Don't even ask.


> I had one project where the damn process used so much ram per request they had to go buy an Azul box just to make it run even at 2 req/sec

I either worked on the same project as you or very closely related one at BSC. The upside of this was I got to play with Azul hardware for a year.


It sounds like you had a bad experience at a single team in a single bank and are trying to extrapolate those experience to a sector that employs hundreds of thousands of developers.

Yes, there are plenty of shitty programmers at investment bank, there are also lots of top-tier ones.

And yes how much money your code makes is more important than how well factored it is. It doesn't matter if your code is the most beautiful code in the world if it doesn't work, shitty code that gets the job done is better. Regardless of whether you're working in finance or on a web app.


Fast C++ is an oxymoron. Real men use C and assembly. And yes, I bootstrapped my own HFT


When you're doing performance optimization, C++ is basically C. You restrict yourself to an almost C subset and maybe end up doing some clever stuff with templates.


"And yes, I bootstrapped my own HFT"

I would be interested in hearing your story. Would you like to share some details?


Realized this would be a much larger effort than a single HN reply or a single blog post would justify, so I am starting a blog series on this. First post: http://news.ycombinator.com/item?id=2829116


Thanks! The first post left me hungry for more :D


Would love to hear more about what's involved on bootstrapping an HFT house.


Maybe it's different in London compared to NY. There's plenty of decent makers in Finance in London. There's people who use all the best practice techniques in software development. People who wrote code you use every day.


> Maybe it's different in London compared to NY

I've seen the kind of guys described in zed's first para, in Finance in London. I don't think it's different, but YMMV.


Yeah, they exist too for sure. My guess is you'd get a fairly typical spread of quality compared to other industries.


some bank sunk millions (and maybe billions) into infrastructure just to run that crap even moderately fast

Why, were they running Ruby on Rails? </snark>


So one takeaway from this gem of a post is that if you don't write open-source code you're a shitty programmer?


Funny, I didn't use open source at all in that post. I said, they don't show it to anyone and I meant even other employees at the bank. Some of those dudes guarded their secret sauce like crazy, even when I was asked to help them improve it. When I finally got in to see it, it was a nasty horrible mess.

But hey, good lame-troll attempt.


[deleted]


I've never worked at anything but a company with "closed-source" code, but all engineers within the company had access to all product code via SVN. From reading other comments, it seems the quants are paid relative to their code's performance in the market, and this culture of not sharing code is probably understandable under those circumstances.

In other words, Shaw doesn't seem to be recognizing the competitive nature of the HFT business, even within a given organization, and is more accustomed to a team effort.


I don't know, to cultivate a culture of absolutely not sharing sounds like bad business, to me. Sure it's good for each individual, but aren't you severely limiting the organization's product (let's call HFT software a product for lack of a better word) quality and competitiveness?

I'm not talking about whether or not I'd mind working in such a culture. I'm talking about how ridiculously stupid it is to encourage such a culture.

Isn't there some team of highly motivated, cooperative good engineers who are beating all the solo pilots, right now, somewhere?


I'm sure the same's true in any industry where code contains tradable trade secrets, keeping code on a need-to-know basis makes sense. For example I imagine not everyone at Google has access to the page ranking score algorithm, because a rogue employee could easily sell that information for millions of dollars.


As opposed to no-one having access, a restricted access is a much better idea. I was not aware that HFT algorithms are that 'personal', now that article makes even less sense! What seems extremely blasphemous is that this person outrightly denies the importance of creativity and innovation that goes into Product designing at (pardon my ignorance, and bias for real tech firms), say, Google.

What I do get from the port is this: HFT people are extremely smart - extremely closed circle. They know algorithms and optimization. Speed is of utmost importance. They know more ways to optimize than I will ever know (Actually I don't even need to. I can very well work on something more significant). And they earn a lot (Well I will earn enough for my satisfaction, so I don't give a flying SegFault).


I think the point is that anybody can say they write great code if they never have show it to anyone.


Given this type of code directly makes or loses money, it's effectiveness for it's intended purpose is already directly measured.

Whether it's "good code" or not from a technical perspective, if one guys pile of crap code works the market 10x better than the other guys, who has "better code"?


I understand that, but not everyone runs around claiming they're awesome seeking validation from Zed Shaw. There are lots of great programmers in every field that involves a computer. There are bad ones too, just like in open-source. To claim that there are no good programmers in any given field is nonsense.


Flippancy aside I'd say if good coders aren't reviewing your code you have a good chance of being a shitty programmer. Open source is a great way to achieve that but certainly code review is prevalent in other places.


Quick quiz:

Given the ability to charge $100/hr for your time (which is what this guy's rate works out to), would you prefer to make:

  a.) $500,000 by working 100hr weeks

  b.) $250k by working 50hr weeks

Me? I tend to lean toward secret option c: make $100k by working 25 40hr weeks, then spend the rest of the year squandering it on a beach with tall cold beers, good surfing/climbing and good wifi.

Gotta keep them priorities straight.


Spot on! I was on the verge of writing almost the same reply only to find yours.

Let's crunch the numbers:

52 weeks/year - 4 weeks for vacation = 48 weeks

$500,000 / 48 weeks = $10,417 / week

$10,417 / 1 week * 1 week/ 100 hours = $104.17/hr

As a freelance developer, in the US, and particularly in this startup economy (bubble?), it is entirely possible to earn 500k/year working 100 hours/week. Most modest freelancers I know these days charge at least $100/hr -- and many of them are clearly under selling themselves.

jasonkester above asks what I consider the better question: do you want to work 100hrs/week?

As a freelancer, you'd be better off charging a higher rate than $100/hr, if you have the skills and marketing to back it up, and working fewer hours.

Me? I'm with jasonkester. I'll stick my "anemic" 25-30 billable hours/week and retain some semblance of sanity.

Oh, and not working for the fat cats on Wall St? Priceless.


I recently quoted $100/h for a side job I am doing for somebody. Though, we decided on a second option where I'm working for less, but get to GPL the deliverable code when I'm done.


That isn't how salaries work though. For most jobs, someone who works 25% longer is more than 25% better. Someone who works 80 hours is generally better than 2 people who work 40 hours because that one guy has all the aggregated contacts and operational knowledge that would otherwise be divided across two people which would come with the overhead of those two people syncing up and communicating with each other. If this wasn't true, then every company would hire 2 people to work normal hours rather than one person who works twice as much (doctors, HFT, whatever).

I actually think that a good model for the way salaries work is with regards $/hours^2. So $500k for 100hr, that means its $50 / hr^2, then 50 hour weeks would get paid $125k, and 25hr weeks would get you $32k. (I actually think that is breaking down once you get down to 25hr though) If you are able to pull $100k working 25 hrs / week then you could be making a lot more than double if you worked 50 hours per week.

(I'm assuming you are a software developer or related job. I actually think this is job dependent; eg CEOs and janitors probably don't follow that trend).


Indeed. What is the point of making so much money if you don't have time to spend it or have anything that resembles a life for that matter.


The savings account that still exists after you quit.


Time can be exchanged for money. Money can't be exchanged for time.


Keep repeating cliches without thinking about them. Especially ones so obviously false. Let's consider two hypothetical options:

1) A steady, decent income job. Let's say you're making $120k/yr. After taxes, that's about $7.5k/month. If your expenses are $3k/month, you can save or splurge to the tune of $54k/year. Not bad!

2) A higher paying job, say $500k/yr. After taxes, that's $25k a month. Let's say that you need to spend $4k a month instead of $3 to deal with the extra stress. Now you're saving $252k/year.

At the end of five years of option 1, you've got over $250k in savings. You can probably buy a pretty nice place to live in your chosen location, but you have exactly one option going forward: keep working for the rest of your life.

At the end of five years of option 2, you have over $1.25 MILLION. This amount of money makes available to you the option of never working again in your life, if you so choose. You just bought an astronomical amount of time -- the rest of your life -- to do with as you please. Not only does this destroy your notion that money can't be exchanged for time, I think the exchange has been shown to be a pretty fucking good deal, to boot.


Not from a vending machine, no.


Because you can make enough money to retire before you are 30, which means you can spend much more time with your wife and kids when that time comes. I wouldnt want to be the type of dad who has to stress out about money issues.


Except I bet people that actually want to work 100 hour weeks don't retire when they are 30. And if they do, they probably go crazy (and drive their families crazy) because they don't have anything to do. I wonder how many rich, overworked people really do walk away long before retirement age?


Right. The motivated can't ever stop.

It sort of runs in my family. My grandpa retired because he had a heart attack, then started his own company and had to stop that because he had a stroke. He sits in his house and watches fox news and I've never seen him unhappier (fox news doesn't help)

The only time my dad has worked less than 50 hours a week was when he was diagnosed as terminal and on medical leave for a cavernous malformation on his brainstem. He had brain surgery and now he's mostly better, and he's been back to 60 hours a week for a few years since then... except now he comes home exhausted, take some pain killers and lies in bed.

I make the same salary as he does, and I'm 25 working a bit more than 40 hours a week.


Replying to bmj (not sure why i don't see a reply link ...)

For me, and I think for a lot of other people on HN, retirement means not having to work for the money. Which, for people in some areas of the world, isn't really that much. And in that vein, if you don't have to worry about the money, you can afford to say "no, I would rather go see my daughter's choral concert than work". Obviously I would keep myself busy, but it would be under an arrangement where I could prioritize my family.


For me it is being able to choose what I work on.


not sure why i don't see a reply link

HN has a reply cool off period. The more nested a comment, the longer the cool off period.


Is that the reason?

I always get around it by clicking "link" -- that always brings up a reply box.


You can start a company with it after you quit.


How to get a really good salary:

1. Be really smart

2. Be willing to do something that's deadly boring to most smart people

Me? I'm a scientist. I'm not gonna write your goddamn binary tree pricing algorithm or remove your varicose veins or argue about some dull point of legal text in court. But I'm sure I'd be a lot richer if I did.

(In other news, man, those grapes sure look sour, I'm glad I can't reach 'em.)


Replace one of your examples of 'boring work' with "writing grant proposals" or "performing the same experiment over and over again" and you have the perspective of the non-scientists.

I think you're confusing "deadly boring to most smart people" with "deadly boring to me".


> I'm not gonna write your goddamn binary tree pricing algorithm

I'm not in the banking industry, but writing a very efficient binary tree pricing algorithm sounds like super-interesting work.


3. Be willing to work for a corrupt industry.


Oh, I'm perfectly willing to work in a corrupt industry, just not to do boring work.

If anyone wants to hire me to build a planet-destroying supervillain weapon, email in profile.


"2. Be willing to do something that's deadly boring to most smart people", ...

... and super lucrative to their employers.

Otherwise shelf stocking might be a good route to riches.


> 2. Be willing to do something that's deadly boring to most smart people

... And work really hard at it.


Programming skill is only a small part of why Wall Street Programmers earn top salary. The major factor is that their industry is very close to the money, and their jobs are close to the money. As a result, it's easy to measure someone's worth in terms of currency. In trading, if your group is making money, and you can convince everyone else (or just the boss) that you are worth x% of the profits, then there you go. As your industry and job function moves further and further away from the money, it gets harder to measure your performance in terms of raw "dollars", but the game to convince everyone else your currency worth still applies.


It's true, and it's somewhat discouraging. When I was in my last year in college, I applied to various types of companies, in different stages of life, plus a quant fund.

In the end, while the salary/potential bonus for the fund was very enticing (despite not having graduated yet), I stuck with the middle-of-the-road tech company. (I also looked at Google and Dropbox but decided to go to FB). Google was desperate for people, and threw money at everyone who had a Facebook offer. I like that they offered $$$, but I knew that most people there aren't compensated as well, which suggested that future compensation might not be as enticing. Dropbox was actually really cool (the people I met there), and I was thinking about it a lot, but in the end, I just wanted to stay where I've been, and work in Palo Alto. (I know, it's weird: All my friends want to work in SF).

But it sucks, because while everyone thinks I took FB for the money ("It's pre IPO!"), that's the farthest from the truth. In fact, they're so surprised that I decided not to work in New York. "Are you stupid? That's more money than any of your peers make out of college!" Not to mention, the people there I met through two straight days of technical questions (compared to Google's easy-peasy 4, 45 minute sessions) were some of the smartest I've met. And I like working with smart people.

I was afraid that if I'd gone on that route, it would affect me as a person. Don't get me wrong: I've studied financial institutions and believe that they produce value, but in the end, it's more awesome to tell friends and family that I ship products rather than arb derivative contracts. I figured, the money will come.

What the hell are you gonna do with 500k a year, anyway?


"What the hell are you gonna do with 500k a year, anyway?"

Buy a house? A car? Invest in your own future business?

I agree with the sentiment of your post. I prefer earning less but working with intelligent, sensible people while also believing in my work because my mental health supersedes material needs.


Dude, I'm glad you took the FB offer. Don't discount the value of money. Stay there until the IPO, get your much deserved money, and then have the freedom to work wherever you want to work for the rest of your life.

You must be very intelligent to get so many offers from some of the best companies, but if you don't know what to do with $500K yet, please don't spend it all. Save it and retire. I'm not saying retire from coding or doing what you love, but having F-U money means you can continue to do what you love no matter what happens. This is worth more than having a fun job.


Squirrel it away for 5 years then retire on 5% returns on a million bucks ($50,000) a year?


But I don't want to retire! I know that by doing what I love for the rest of my life, I'll have enough to sustain my basic needs. 500k seems excessive. It's simultaneously too much for me to spend efficiently for myself, yet too small for me to do bigger things like fight cancer, invest in education, etc (like Bill Gates).


Retire doesn't have to mean slippers, robe and couch. It could mean being free to pursue interests and goals regardless of the employment landscape.


> (like Bill Gates).

Well Bill did exactly what you said you didn't want to. He worked hard, made alot of money and then retired from Microsoft.

He just happened to move to a new opportunity. That's the key takeaway that you're missing from everyone responding to your what would I do with money comment.

Money give you the freedom to do what you want.


Retiring is equivalent to financial independence. You can start a khan academy and change education more than any amount of money could.


"Not having to stress out about personal finances" may be the better statement here


> What the hell are you gonna do with 500k a year, anyway?

Donate it to a charitable cause?


With 500k a year, you could buy a lot of Priuses.


I have a friend who works in trading. He's very sharp and very smart and has friends who work for D.E. Shaw. I used to ask why he didn't go work for D.E. Shaw and he said that he would never survive the interview gauntlet there. And most importantly, he would not be smart enough. Now, I know how good at math my friend is (he used to win Games t-shirts - from the magazine and studies math at graduate level). And now when I talk to him about HFT, he's like even if I could bluff my way into an HFT job they'd fire me after three months once they found out.

My math abilities will never ever approach my friend's. If he is not confident about his ability, it speaks volumes to me about the ability and sheer analytical horsepower of some of those working in HFT.

Yes, they may be financial wizards who cause far reaching effects but they are doing what challenges them.


I know a few people in HFT. They are the kind of people who can do just about anything pretty well. The kind of people who switch to Dvorak key bindings on a whim, just to make the day a bit more challenging.


Sounds like your friend might suffer from impostor syndrome.


Even so, had he joined DEShaw he would still have the syndrome which could easily affect his work there (as a self-fulfilled prophecy). Happens all the time.


Being around people who I feel are better than me just pushes me to become even better.


Doesn't sound to me like he's really suffering. Suffering requires someone to suffer. And no, to me this isn't really pedantry.


Indeed. Underestimating your abilities is no fun, but if your estimation of your math skills is all that's keeping you from life as a quant let me be the first to tell you you suck at math.


I worked for a time in finance and investment banking. Problem-wise it can be pretty interesting but it's important to distinguish between two classes of developers.

1. Traders; and

2. Non-traders.

Engineers who are traders are typically called "quants" (quantitative traders) as they write software that employs trading strategies to make money, as one or more of spread trading (trading between the bid-ask spread), prop trading (taking a position in the market) and arbitrage (of which HFT is merely the latest incarnation; some may dispute this definition).

Traders of all kinds have their bonus defined as a percentage of the profit they make. That percentage can be as high at 10%. In 2007 there were some Wall Street traders who walked home with $50m+ for the year. I remember seeing an AmA on reddit from a quant who took home $20m.

While maths is obviously important, it is not (IMHO) as important as psychology. It takes a special kind of individual who can hold a position worth billions of dollars and make rational decisions. Human psychology is typically completely wrong for trading: people hold on to losers too long ("I'll sell when I get my money back") and sell winners too soon.

I know enough about myself to know I could never do that. Some can and they get rewarded for it.

The second class of engineer, the non-trader, earns a respectable salary with benefits as compared to other software engineers. They are however the second worst paid employees at an investment bank (the worst are support people). All those business types who join IB, assuming they survive, will typically have a salary and career trajectory that will dwarf that of any engineer within a few years.

The only way for an engineer to make real money is to be a quant, found a startup or join an early stage startup. In the last few years the competition for engineers has heated up to the point where engineers are (or can be) more adequately compensated for their contribution.

The other thing that happened is the cost of seeding a startup went from $5m to $50,000 in the last decade, almost all of which is engineer time. This makes engineers just that much more valuable.

As far as not having some kind of positive impact, working in investment banking can be exactly that. People like to demonize the finance industry with some justification but it does a lot of good too.

You want to buy a house? Well the only reason you can get a loan is that investor (and/or depositor) funds are matched to you. In the last few decades securitization (MBS ie mortgage-backed securities) have revolutionized this market. On the other hand, the subprime collapse should, in my mind, lead to criminal prosecutions across the entire finance and insurance sectors.

Spread trading (or "market making") is also misunderstood. People see market makers as scalpers when in fact they're providing a valuable service: they're creating liquidity. The reason you can buy or sell shares at any time (rather than waiting for a seller or buyer to show up) is because of market makers.

IPOs are a complicated business. They're possible because of the finance industry as well. Although, curiosity, VC as it exists in the Internet startup world is almost completely unrelated to the finance sector. It's basically a byproduct of university endowments.

Still, I think I'm done with that industry (I now work for Google) typically because IB types aren't, in my experience, very nice people to work with plus you're near the bottom of the totem pole.


"The only way for an engineer to make real money is to be a quant, found a startup or join an early stage startup."

This statement should be included in every CS curriculum.


I think engineers have a different idea of what constitutes "real money". I'm imagining my graduating classmates who are out interviewing for "good jobs" with salaries in the mid-five figures.

It makes me remember how slightly awkward I felt every fall semester— I kept my mouth shut when talking about summer jobs, just because everyone else would talk about their minimum-wage gig at the ice cream shop or the kayak place. It just seemed so utterly unapproachable to even mention what I was pulling down as an "intern", let alone that I was probably getting about a quarter of my market value, let alone that I was doing something I had no formal training in and could pretty much drop out of college at any point for a net financial gain.

I think the statement that should go on every CS curriculum is "Normal people cannot understand what you do no matter how hard they try. Value yourself a little higher."


[deleted]


I was hoping that wouldn't come off as elitist in this crowd— it's really just an observation on the difference between technical and non-technical people.

Which I guess highlights why I kept my mouth shut in school. When your job involves doing something that strikes you as straightforward and intuitive, but is bizarrely valued at several times, or tens of times, the labor of your peers, it's pretty hard to talk about without sounding just a little elitist.

Edit: I think I get why you took it the wrong way, though, and I'll clarify. I don't mean to say that non-coders will never be able to figure programming out. Of course any reasonably intelligent person could have it explained, pick it apart, figure out how it works. What they will never understand is how we get it so intuitively— not unless they put in the decades we did to get there.


What they will never understand is how we get it so intuitively— not unless they put in the decades we did to get there.

Huh? That's pretty much like any other skilled trade. I don't understand tractors like my grandfather does and he's made a lot more money selling them than most programmers will. I'm not more valuable as a human because I know code and he knows combines.

(Now, one could argue that they were simply being on top of the technology of different eras; diesel tractors revolutionized agriculture in the last century and he apparently got into selling them at a good time, but again, there are a bajillion fields where staying on top of tech is both lucrative and non-trivial.)


...is that not what I'm saying? Your grandfather took a situation where he had an advantage and leveraged it to make money. That's what programmers should be doing, too, if they want to make money.


It sounded like you were making a special case for being a software developer (since you tied it specifically to a CS curriculum). If your statement is simply, "Having useful skills that other people don't pays." then, well, uhh, duh.


Currently it seems the special case is for software developers, though.

Everyone in my environment is finding it terribly hard or impossible to find jobs, or are going out of work, and I get job offers from all over the world. It feels unfair somehow, and I really don't want to sound elitist.


There will always be money in figuring out how to make the latest technology work.

Most people, though, can't be bothered. The payoff takes years of self-guided study. After all - it's new stuff - the established education system probably won't "get it" so you have to guide yourself.


It's all relative. Our family was considered poor when we lived in the US (as opposed to when we lived in Mexico). The first time I got a construction job that paid $8/hr I thought I had it made. This was low pay for construction workers but more money than almost anyone else I knew was making.

A couple of years later I dated a student nurse that told me her first job would pay her $16/hr. I was blown away and thought she was lying or exaggerating about the pay. People I knew just didn't make that kind of money.

Anyways, I eventually discovered programming and got a job with a relatively small developer's salary. It certainly was real money to me. It was life changing.

Of course, once in that environment it doesn't take long to take a good look at those around you and feel undervalued/underpaid. Funny how that works.


Even normal developer salaries amount to a lot of money compared to median household incomes. I'm known as the "rich one" in my family, and I haven't taken any risks at all. It's all relative, I guess.


Agreed, however, the shelf life of a programmer is very short compared to other career paths.

It all depends on your industry, of course, but once you hit 40-50, you're competing with younger developers who have more energy and require far less compensation.

Hence the need to make "real money" before you hit the age ceiling.


You're forgetting one crucial problem. Younger developers may or may not have more energy, but one thing they don't have is experience. Never, ever, underestimate experience.


Something of a false mutual-exclusion. Due to the massive influx of cheap computing hardware in the late 90s, There are 17-22 year old people who have been programming and studying math & CS for 10 years.

10 years is a lot of experience.


Experience programming does not necessarily translate to experience working with a team of developers within a business environment.


100% true. And this should be obvious: none of get paid to write code. We get paid to solve other people's problems. Experience that matters is experience of doing that, Working in your own projects - unless you have actual users, who can confront you with scenarios you didn't expect - isn't really that transferrable.


By the time I graduated I had already worked on 3 development teams in fortune 500 companies. As much experience as people who graduated years before me? No. More experience than people my age who were in just about any other discipline than me? Definitely.

Young developer non-professional experience also commonly dwarfs what you'd expect in other industries. Try doing molecular biology at home.


I don't disagree that non-professional experience is valuable and that it certainly depends on the developer. For example, it's incredibly easy to work on open-source projects or have code on github that's in circulation and supported. And when hiring for a team, they're definitely good signs.

My main point was that the developing software on your own is very different from working with teammates and having deadlines and processes, where you're often required to choose the best of a set of bad options rather than having the time to do things right or where you're thrown into a legacy codebase that can't be broken but must be fixed.


So - if we happened to be ~16-20 in 1990 and had a good start with a commodore/amiga/vc-20 whatever - is that relevant?

Sure, the experience is bound to be more similar to current hardware, but you can easily be 40 now (I'm now, early thirties) and claim a little more experience.

The next argument could be 'is experience > $someThreshold enough'?



I'm with you, but what's more important is whether whoever is paying the salaries gets that. If you don't have engineers running the show, you can almost bet on management underestimating experience.


I'm not sure I agree with that. And I say that as someone in my late 30s.

Granted life is pretty good now if you're a recent graduate of a good school. You almost have your pick of jobs. But when was that not the case?

It's true that you tend to have less commitments in your 20s. You should take advantage of that. Most people in their 20s still spend their money on crap however (cars, ski trips, eating/drinking out, etc). While that's all fine they'll wake up after 10 years and find they have nothing.

What tends to happen as you reach your 30s is you have increasingly financial commitments. You might have bought or want to buy a house. You may well be married. You might have children. All of these take your time as well as make you more risk-averse both from a stability point of view as well as having a higher minimum salary that you can pay your bills on.

But if there's one thing I've learned over the years is that most of these expenses are, well, crap. Raising children is expensive but it's also way more expensie than it needs to be, in similar ways to being single in your 20s is way more expensive than it needs to be.

That doesn't mean you have to stay at home, never buy anything and never do anything. It just means being smart about how you spend and allocate what money you do make.

I could lose my job tomorrow and not need to work for another 12 months, possibly two years if I push it. That's a deliberate choice I've made.

It also means that if I want to bootstrap a startup I can.

In my experience, most people in their 40s either:

- don't have an interest in something so risky;

- have let themselves and their knowledge get out of date;

- have priorities that preclude anything but a 9-5 job; and/or

- don't have the financial freedom to take risks.

While you may not have the energy you did 20 years ago, experience counts for a lot. We're lucky in that we work in an industry where you only need:

- working hands;

- working vision (and a very low level of vision too as I can personally attest to); and

- a working mind.

I see no reason why you can't work as a programmer until you go senile, go (literally) blind, are quadriplegic or die.

People who can code and can get shit done are (and will probably be for the foreseeable future) extremely valuable... regardless of age (IMHO). I see so many people who work in this business who actually can't code, it's astonishing.

Some might write you off if you're not a twenty-something MIT or Stanford graduate. But if you keep up to date and are willing to take risks, I see no barriers to a continued productive existence other than those you create.


You don't necessarily need vision or hands either, there are blind C programmers who can use foot based interfaces. (I heard this on slashdot years ago, so I don't have sources, but they supposedly exist!)


Google's T V Raman is a personal hero. http://www.nytimes.com/2009/01/04/business/04blind.html


I don't see this happening in southern CA. The demand for programmers is greater than the supply, age doesn't seem to hurt right now.

Maybe it's different in other parts of the country/world.


"The only way for an engineer to make real money is to be a quant, found a startup or join an early stage startup." This statement should be included in every CS curriculum.

Except it isn't true (depending on your definition of "real money").

It's not especially hard to make high 6 figures (and even low 7 figures) as a consultant, if you specialize and sell yourself well.

This may be low by the standards of the $20M year Quant, but the risks are much lower too.

Most engineers who join an early stage startup won't make "real money" by those standards, either. Sure, some will make $20M when the company is sold, a few will make a lot more, and a larger number will make a substantial (5 figure) bonus when the company is sold, but many will get nothing.

Advice like this needs to be tailored to the individual. Deep algorithm expert with limited social skills? Then either quant or work for a startup. A mediocre programmer with some good ideas and good sales ability? Do a startup. Good technical ability and know how to talk to business users in their language? Consulting... etc etc...


Obviously either my maths or my facts are wrong here because I'm being killed with the downvotes.

Explain where I went wrong please?


High 6 figures is $800k/year. Most consultants who aren't published authors have trouble getting to $200k.

Maybe you can back up your statement with some numbers?


$200k is good money for your normal $100-$150/hour programmer/consultant.

The trick is additional sources that aren't as closely linked to your hours.

Some possibilities include flat-fee security audits/seo consultations, fee-per-person training, retainers for support etc etc.


Maybe is that the skills to be a good coder and the the ones needed to be a good $ negotiator are orthogonal...

I've seen lousy programmers make a lot (200k+) of money just attending stupid meetings .. and top coders struggle to keep customers happy for crappy money.


But it depends on what is real money. If your dad is a doctor and your mom a lawyer, sure. But if you grew up poor then 150k loos like real money.


I'm at the point where I think the smartest advice, by default, to give to any software engineer (probably folks in any field) is to intentionally lead a hybrid lifestyle: 1) hold down a "day job" for the steady paychecks; while 2) be working towards a business of your own on the side. That way you get the best of both worlds. The safety of "guaranteed" income (plus lots of other benefits of being an employee) while also increasing your odds of getting the much higher income ceiling, and asynchronous pay, and greater freedom/control, and ROWE, from owning/selling a business. Plus when you work for others you're almost always pigeon-holed into certain narrow roles, whereas if you are The Man you can pick and choose roles better and take on a wider variety of roles, which in turn helps justify larger total eventual payoff.


Depends on what you want to do. Some mobile apps or small webapps might work, but anything more ambitous will suffer from the time tradeoffs you have to make. What i learned from constantly doing things on the side: If you are really passionate about an idea, dedicate all your time to it.


>Spread trading (or "market making") is also misunderstood. People see market makers as scalpers when in fact they're providing a valuable service: they're creating liquidity. The reason you can buy or sell shares at any time (rather than waiting for a seller or buyer to show up) is because of market makers.

Except market makers generally target markets which are already highly liquid, so I would guess most of them aren't providing a tangible service to anyone working at human timescales. I remember reading that Chi-X had only 1 (!) high frequency market maker for the first 1.5 years they were open and liquidity there was just fine.

(link to the Chi-X paper: http://www.tinbergen.nl/discussionpapers/11076.pdf)


The size of the spread and the liquidity of the market are inversely proportional. The spread on US government bonds is zero or close enough to be zero. The spread on the Swiss bond market is considerably higher.

Market makers can't artificially widen the spread without taking a position--sometimes a significant position--which carries a lot more risk. Spread trading in its purest form is about holding enough stock much like a business holds cash as an operating budget to handle cash flow, not as an investment in and of itself.


What I'm saying is that high frequency market makers are only need in very small numbers (if even that). When 2/3 of a market's volume is HFT position shuffling, you're not "improving liquidity" in a way that's meaningful or useful to anyone.


So you'd prefer a single market-maker to control price discovery rather than have several parties compete to do the job?

You can argue that /liquidity/ is fine if you have a small number of market-makers but price discovery (otherwise known as "value") is something altogether different.

To put it another way, I can get all the $8 hotdogs and $12 beers at Yankee stadium I like. The liquidity is fine but the VALUE isn't.


1) There often isn't any sort of ideal price to discover at short timescales, just complicated interplay between HFT algorithms and the bizarre psychology of human traders (ie, "4th digit nearing zero, looks like it has momentum!"); both moving prices in ways unrelated to any fundamental value.

2) Just as no one is forced to do their weekly shopping at Yankee stadium, investors can choose which exchange to submit their orders to. Exchanges with shoddy market makers would lose customers.


1) You couldn't be more wrong. Moment by moment psychology is and had been a part of the market from the beginning. The market is about INFORMATION, namely who knows something and who doesn't. Adding computers to the mix might have sped things up but hasn't fundamentally changed the game that's played.

2) I dont see any fundamental difference between multiple exchanges each with a dominant market marker and multiple market makers within a single exchange. In practical matters, retail investors dont select their exchange, their broker does.


When 2/3 of your packets are travelling from one server to another inside the data center, you're not "providing information to consumers" in a way that's meaningful or useful to anyone.

See the fallacy here?

Also, HFT's are present only in very small numbers (relative to the size of the financial industry in general).


If those extra packets could suddenly and uncontrollably leak out on the Internet and destroy everything, requiring a trillion dollar government bailout to fix it and ten years to restore confidence in the infrastructure, yes I would be pissed and doubly so that this inadequate analogy was used to defend it.


When did HFT "destroy everything, requiring a trillion dollar government bailout" to fix?


Oh, just because it hasn't happened yet, we should pretend it isn't possible? You remember the flash crash. That took out the market for a day. People waved their hands and said it was an innocent mistake. Nothing changed.

When scads of people were writing CDO's and swaps and other clearly garbage papers in 2007, they probably used your logic to justify their recklessness, and here we are.


Oh, just because it hasn't happened yet, we should pretend it isn't possible? You remember the flash crash.

You mean the minor event precipitated by a fat fingered human and corrected in an hour or so by HFTs?

If you have a plausible disaster scenario involving HFT's, state it. So far, near as I can tell, your argument is merely "omfg finance stuff I don't understand it might destroy the world!"


The flash crash was not precipitated by a "fat finger" event but rather an intentional, albeit aggressive, move by one mutual fund, and according to regulators it was exacerbated by HFT's, not "corrected" [1][2][3][4]. Do your research--like so many you probably believed the BS that was handed out to pacify everybody when it was big news, and missed the SEC/CFTC report that came out later. More recent mini-crashes have occurred in commodities markets [5], again driven by HFT.

What is my disaster scenario? Do I really need to explain why extreme volatility can vaporize investor confidence in a market? If an event like this was caused by one market action, you can even imagine malevolent investors trying to intentionally trigger a crash or a mini-crash (holding a short position on the side so that they profit). If enough people are able to do this with regularity, the market turns into /b/ and becomes worthless for traditional users. I won't pretend to have enough imagination to see all the ways this could go wrong; we can leave it up to Wall Street to make it a reality. It would seem like common sense, however, that if neither investors nor regulators have a firm grip on the steering wheel (and maybe that's the best way for the economy to run, who am I to say?), we would be better off not putting the market in cruise control at 600mph without carefully considering all the ramifications.

[1] http://online.wsj.com/article/SB1000142405274870402930457552...

[2] http://www.bloomberg.com/news/2010-10-01/automatic-trade-of-...

[3] http://www.nytimes.com/2010/10/02/business/02flash.html?_r=1...

[4] http://www.reuters.com/article/2010/10/01/financial-regulati...

[5] http://online.wsj.com/article/SB1000142405274870432280457630...


This is why I'm skeptical of the claim that they're providing liquidity. If they can open and close a position in a matter of seconds, it sounds like they're mostly claiming credit for liquidity that was already present.


You're mistaken, quants tend to be mathematicians or traders who design algorithms or analyse trading or risk data, some of them may also be writing production trading code but definitely not all of them. The role you're describing is closer to "quant dev" where a developer works closely with quants to implement the algorithms, quant devs may also be involved in algorithm design but it's a distinct role.

It's also not just two roles, there are a huge variety of distinct roles paying different amount, although the closer you are to making money for the bank the more you're likely to get paid. While a developer working in front-office won't make as much as someone of similar seniority on the business side of the front-office, they can certainly make more than those working on the business side of the middle or back office.


People see market makers as scalpers when in fact they're providing a valuable service: they're creating liquidity.

The problem is, in the trading companies no one cares about liquidity (like, say, people at Google would care about search results quality). The thing they care about most is just money and all the nice things you can spend your money on - cars, entertainment, bars, discos... no one cares about the thing they do. So actually this point about liquidity really looks like a mere excuse to me.


I would argue that this entire "Wall Street programmer" notion is a bit broad. You don't need to work in a bank or other financial institution to be a "Wall Street programmer". It is like saying that if a game company took a contract to build a first-person shooter game for the Army that now they are "Government programmers". The world revolving around finance is huge and there are lots of sub-fields and niche areas within it.


I've never bought the liquidity argument. Ordinary investors don't need to buy and sell at any time. They'd be happy buying and selling once a day (as with mutual funds).

What if the market consisted of a deep daily or hourly auction with lots of buyers and sellers matched up to discover a fair price? How is the current system better than that?


Lots of low volume stocks actually do trade like that.

For NYSE stocks, a good chunk of the daily volume trades at the open and close auctions.


I'm currently launching an exchange. Liquidity is EVERYTHING. Your hourly auction idea is one way to provide it of course, and some exchanges do just this at special times, or at start of trading.

There really isn't a 'current' system actually, at least not as you probably understand it. There are hundreds of markets, with different rules, many of them can place orders between them.

None of this shows for someone putting in a 'buy' at E*Trade, though.


Prices become erratic and jump around more, so it's much hard to predict at what price you'll be able to sell. News events related to a stock tend to have an bigger impact on the price as it's riskier to hold on to stock when negative news comes out (and vice versa).


Your system might be more fair, but not one would use it. Traders want an exchange where they can buy/sell as soon as they receive new information, not in the future when everyone else has same information.


> Traders want ...

Settlement on share trades is not real time, and no one cares from a liquidity perspective. Settlement risk is a different question.

Who is convinced that these traders actually need to exist?

The share market's function in the broader world is to link long term investors with those who need long term capital for investment in the productive economy. Trading beyond monthly seems superfluous to me.


Today's markets don't operate 24/7 (they close at night for instance), and yet everyone uses them because they have no choice. Limiting HFT can happen through regulation.


Doesn't after hours trading still occur, especially if some significant news is revealed?


> You want to buy a house? Well the only reason you can get a loan is that investor (and/or depositor) funds are matched to you.

Is there any reason why this should be enabled, and profited from, by a select few commercial IBs who are "in the know", as opposed to a government entity which reinvests the profits into, say, a low-income housing fund or social security?


You could say the same about nearly every business enterprise, but the history of nationalized industry provides all the answers you need.


No, there are certain industries which seem to perform better when the government enters as a competitor. e.g. healthcare, postal services, police forces, military, media, communication networks... many things which we often take for granted.

As outlined by others, market liquidity is beneficial to everyone, not just bankers, but market-making driven solely by profit leads to trouble (as evidenced by recent events). This parallels other nationalized industries (such as healthcare and police forces), and I expect that the benefits other pseudo-nationalized industries have seen would extend to market-making as well.


Most of that is infrastructure, not industry.


What do non-trading engineers do?


Is there any way to play "quant dev" with representative mock data (or historical data even) with similar constraint, etc? I doubt I have the constitution to do this for real but it would surely be a fun game.


they get paid well, but they're also doing work of dubious value. i left trading because i wanted to do something that i knew would make a positive impact on the world.


Back in the 90s I worked for two different commodity traders as it seemed like a good way to make a lot of money fast, which was very appealing to my 20-some-year-old self. I rapidly grew disenchanted by the entire thing. While I respected the men I worked for, everyone who's successful ends up driven by the two ghosts of the trade: greed and fear. That's not how I wanted my life to be.


The "dubious value" argument is a bit crap. I work in porn for one of my clients. That's of pretty dubious value as well. Is it of less dubious value to work in a hospital? What about a car manufacterer? Or the tobacco industry?

The only relevant values are 1) what the industry is willing to pay you and 2) whether you enjoy it. Anything else is just bullshit. If you won't enjoy a job in HFT because you think it's of dubious value, then don't get one.

There are plenty of things wrong with this HFT madness, but the programmers are not the problem, so there's really no point in questioning their value [or as the slashdot crowd is doing, blaming them for all sorts of crap].


Many (including me ) would argue that the value in porn is more apparent than that in HFT.


Wouldn't it have been better, as far as making a positive impact on the world goes, to just keep your job and redirect a large portion of your paycheque to a worthier cause? This is a sincere question. You must have considered that, right?


>they get paid well, but they're also doing work of dubious value.

Unless they're getting paid at a rate determined by regulations, by definition the value of their work is what their employer is willing to pay.


Value to whom?

Suppose you work for me. I pay you because your work has value to me. Congratulations: you aren't doing something no one cares about. But your work for me could be (1) finding a cure for cancer (hugely valuable to everyone if it works out), or (2) making my brand of smartphone 0.1% better than its rivals (hugely valuable to me, positive value to others but maybe not much), or (3) writing effective advertisements that persuade people to by my product rather than a rival's which is actually slightly better for their needs (hugely valuable to me, negative net value to the world), or (4) assassinating people whose politics I don't like (valuable to me, presumably, but probably not so good overall).

If doing something that someone values is enough for you, then indeed getting paid is (more or less) a guarantee of that, and getting paid a lot indicates that you're doing something someone values a lot. But they might value it merely because you're sending money to them that would otherwise have gone to someone else. They might value it merely because you're creating value for them by destroying 10x as much value for others. If you care about doing something that's valuable overall then being well paid is no guarantee whatsoever of that.

(You might hope that if your employer is making money then someone values what they do, and so on recursively, with the process necessarily bottoming out at people doing things that are actually useful overall. Alas, that isn't guaranteed either; or, more precisely, there is no guarantee of any connection between what anyone is doing and its overall value.)


>Value to whom?

In the case of the labor of an employee or a contractor, the person you're working for. Value is what someone is willing to pay, or trade, or work, for something.

For example, diamonds aren't valuable because they are rare or hard to make (anymore), they're valuable because people are willing to pay large amounts of money to signal to loved ones how loved they are, to signal how rich someone is because they can spend a large amount of money on a rock, etc.

This doesn't mean that price is equal to value. How about the value of the diary of your hypothetical dead grandmother? It may be "priceless" to you while it's in your possession, but there is some absurd amount of money that someone could offer that would make you part with it ($10,000, $100,000, $1,000,000,000, etc.). This isn't its market value, however, because the price some person (a historian perhaps) would be willing to pay for it is likely quite a bit less. And there is certainly a price you'd be willing to recover it.

Take for example family photographs, I recently had a coworker bring in a computer with a dead hard drive. This hard drive had thousands of family photographs that weren't backed up. I made sure that the hard drive was really dead and not just mostly dead and let them know that taking it to a lab was their last option. The cost would likely be between $1000-$4000 and they wouldn't get a guarantee that they'd get anything. They thanked me for my time and decided not to attempt to recover the images.

To make the problem even more interesting let's look at a commons. How valuable is Wikipedia to you? Assuming that you haven't donated to it, nothing. This doesn't mean that it isn't useful to you, or that it doesn't benefit humanity as a whole, or that it is necessarily a waste of everyone's time. It's valuable to the people that run it, it's valuable to the people that donate to it, but everyone else lacks skin in the game.

You might try to calculate its value by summing the labor of all the contributors of the site (http://en.wikipedia.org/wiki/Labor_theory_of_value), but this would make it more valuable if people made it less efficient to add content to the site (perhaps requiring that people mail their edits in triplicate in approved forms obtained from the local post office on a tuesday morning).

The reason why the tragedy of the commons is a problem is because commons are frequently more valuable to everyone than they are to someone. You can't hope to solve these problems without understanding what value is.

>(3) writing effective advertisements that persuade people to by my product rather than a rival's which is actually slightly better for their needs (hugely valuable to me, negative net value to the world)

To defend people in marketing, somebody has to let people know about products and services.

> If you care about doing something that's valuable overall then being well paid is no guarantee whatsoever of that.

Right. Many people value work that benefits society as a whole, or work that satisfies their own curiosity, or work that helps their religion or political beliefs, or work that has high status in the society they live in. Due to this millions of people forego higher wages.

None of this makes people getting paid lots of money better people than people getting paid less money.


I agree with much of the above, but:

> How valuable is Wikipedia to you? [...] You might try to calculate its value by summing the labor [...] but this would make it more valuable if people made it less efficient

No, it would make it more valuable if people made it less efficient and the same amount of content got added. In fact, if you couldn't edit Wikipedia without filling out hard-to-obtain forms in triplicate, scarcely anyone would bother. I'm not sure I'd actually want to endorse the LToV, but for something like Wikipedia it's at least a useful heuristic.

> You can't hope to solve these problems without understanding what value is.

This comment, plus the Economics 101 material that preceded it, suggests that you think I don't understand what value is. If you have evidence for that, I would be interested to see it. (Note: asking a rhetorical question is not the same as admitting ignorance about the subject of that question.)

> To defend people in marketing

I wasn't attacking them. Some advertising (and other marketing) has considerable value to the world at large as well as to the people who are paying for it. Some, not so much.

> Right.

In which case, we are agreed on the original point here: there is no incoherence or foolishness about saying "They get paid well, but they're also doing work of dubious value": the work can have clear (and large) value to the people writing the paychecks, but be of dubious (or indeed clearly negative) value to the world at large.


I believe the "value" being referred to here is social rather than financial.


Ya know, most people would agree for you until you ask them to pay for the stuff they call a "social good."

I went with my fiance last Christmas to donate food and money to a local food bank. She got teary when she saw were so many people waiting to get a basket of food.

I saw a bunch of people playing games on smartphones.


Money can serve as a rough indicator of social value. For example, based on pay, society does not value teachers very much.


Teachers actually make decent money. We clearly don't value soldiers and McDonalds workers. Wait - then how come we're so violent and fat?

Nevermind.


We're so violent that the rate of violent crimes has steadily decreased since 1994.


Actual value is what people are knowingly and voluntarily paying for your work. Front-running trades that were about to happen in milliseconds only produces "value" by exploiting flaws in the way the market clears. Muggers don't get to claim their income represents a contribution to society either.


Front-running is a loaded term (I'm sure you know that), and isn't what is going on in HFT - since front-running is illegal, and these programmers are paid to be on exactly the right side of the law.


Externalities.


This is slightly OT, but can anyone recommend a good book for understanding the modern finance industry (IB, quant, trading) and its impact on the economy? Finance in general is just a giant black box to me.



Seconded.


Here is where the coders of Wall street can help us understand--making their efforts more transparent. They dont have to reveal details of their code--but a few blogs about what they are doing, what they are achieving, and they aim for would be nice


Capital Vol. 1 by Marx is classic and still more applicable than anyone wants to admit. Ease into the terminology over the first few chapters, things are defined carefully.


That hourly rate is pretty crappy for that level and amount of work. (<$100)


Compared to what the top traders make, 0.5Mil / year is pretty embarrassing.


IT is generally considered a cost centre in banking, in essence, and so not rewarded like real traders, or sales people.


Not in HFT. It's one of their core competencies.


Well then where does the renumeration disparity come from?


Yes, consultants make more, but I'm under the impression that most consultants can't fill 8 (or more) hours a day?


We have lunch, meetings, smoke breaks and daydreaming to fill those hours.


From "Anonymous Cowards" calculations it was more like $74/hr if you consider overtime/oncall:

$500,000 divide by 52 weeks = $9,615 / week

$9,615 / (40 hours + (60 hours overtime x 1.5)) = $73.96 hourly wage


> I work 12 hours a day on average and do 100 hour weeks.

His average week seems to be closer to 60 hours, 100 hour weeks just happen once in a while, also I'm pretty sure he gets some time off, just has to remain available. So it's more like

$500,000 divided by 50 weeks = $10,000 / week

$10,000 / (40 hours + (20 hours overtime x 1.5)) = $142.86 hourly wage

Or it may be completely random and the numbers are made up.


I like how you cite 'Anonymous Coward' as if there is only one. :)


I was pretty shocked with I saw that guy said he hoped to make $500k for the year. Sounds like the profits aren't making their way down to the developers.


The reason why profits don't flow down is because the buck doesn't stop with them. There are plenty of developers making much more, but in those cases they take the fall if a trading strategy loses money. Those developers that do take the risks make more if the firm makes more money, but also lose their jobs if they make a really bad trade.

Same is true in other software development outfits as well. Lower-level programmers have much more job security but don't have as great a payout


Why would developers be making trading strategy?


Most ultra low latency trading strategies are intimately related to the technology platform. Here's an example strategy:

Most platforms slow down when there is an influx of orders into the market. Some are designed to force events during the process (which allows for action while prices move, but the prices may be stale) and others are designed to process all feed messages before forcing an event (which ensure prices are more up-to-date but doesnt allow you to make a trade earlier)

Suppose you are betting that this represents a market rally or collapse (directional). Then, you can make money by figuring out the direction of the move (aggressive processing of the first few messages in a burst) and get involved before every other system catches up in the feed.

Now, it would be very hard to imagine a non-developer having enough of an understanding of the technology to devise this strategy. Not all examples are so obvious, but many microstructure strategies depend on some understanding of the technologies involved



HFT?


It's a little nuts that making $500k a year doesn't even get you in the door on a "top salary".


That comes to about $74/hour; he's rich for working 100-hour weeks.

I don't know what good the money is if you don't ever take the time to spend it, though.


This fellow's braggadocio is off-putting. Especially the dig he makes at the expense of Google. I mean, I wish he'd clarify what he's talking about when he says that the "engineering talent is just not there"... just not where?


Ermm, at Google? Seems a simple enough sentence construction to me.


> Another HFT programmer here. I once had to make a run-time modification to an algorithm to keep about $100 million from going at a lower price than what the traders wanted. Sometimes market conditions change so fast that the traders demand the ability to make rapid adjustments to the algorithm. They're willing to take the risk. They can't wait for the safe development cycle.

Someone should post this next time the issue of "TDD and sudoku-solvers" comes up on HN.


Argh, guys like this give the rest of us a bad name. It's ridiculous to claim that we're somehow universally better than developers at Google or anywhere else.

One of the big arguments in that Slashdot thread seems to be backlash over developers bragging about how they change software that handles millions of dollars in the middle of the day without any testing. Let me tell you, any HFT firm worth it's salt is very conscious about risk controls. I mean honestly, what kind of business are you running if you're routinely exposing yourself to potentially massive losses because of one developers error? Not one that would be around very long.

I can only speak to where I work, but we are not coding by the seat of our pants. Yes, traders do make intraday changes to their strategies, but they can do that because their software is backstopped by a tiered risk infrastructure that limits the damage their software can do.


TIL slashdot commenters are fairly mean and biter. Good post, and thanks for the intelligent and well reasoned comments HN.


So many intelligent replies here. And to think some of the best coders do not live in the US - think of Skype (Estonia), Tim-Berners Lee, Linus Torvalds, etc... Their contributions tower above anything done by any one person on Wall Street. Yet Wall Street has only contributed to the common good by paying taxes. Even then they seek to game the system and have also managed to get the government to give them more than they ever paid (think bailout). Their scrooge-like aversion to philanthropy, charity, education, or any research to help the human condition is what annoys. Certainly those of you who code for the street have food in your belly, but when will you decide to fix your monstrous employer? They don't even have to know.


Linus lives in the US


I used to work in HFT. From about 1999 (right out of high school) until 2008.

In response to the OP, zedshaw and a couple of others (who make good points), I'd say:

* obviously if you're good at your job in HFT after a while you don't have to work 100 hour weeks. People wait for you. There are levels of support. You still get woken up once in a while, but not if the firm is well structured and the support training / delegation is good.

* people are right in that the closer you are to the money, the more financial upside (and downside) you usually have.

* there are some very mediocre programmers, like in any sector -- however, they tend to not last as long because the trading side is very demanding (in terms of quality) and that filters down pretty quickly.

* do the people who really know what they're doing in the trading and HFT space have an OCD level of awareness of all levels of their code? sometimes. and it's easy to then conclude that this must not be found in other fields/areas. i can't speak for the rest of the world, but there are exceptions everywhere i've been.

in fact, i wouldn't even say it's the norm that in HFT people are more capable of deep diving into assembly or whatever. however, basically there are a handful of people in HFT who have been fortunate enough to grow up in that industry and have made mistakes without being fired -- and those people are very bright and careful about their code, and the large purchasing price for quality/reliability and quickness delivered does affect things on a macro scale probably. there's also basically a lot of hard-core russian programmers (from the many different technical universities in russia) who are quite rigorous with their code and trust the idea of finance more than the idea of startups or silicon valley even -- but this is probably a generalization (just my experience perhaps).

most software rewriting is trivial once you know what you have to do. and most software projects don't 'know what they have to do' until half way through. i used to work with a guy who made a point of rewriting ALL trading-related code every two years. another guy didn't trust OSS because he thought it was mostly hobbyist. they're both sort of wrong -- but it's a different culture/mindset. and these guys weren't idiots. respectively, they were some of the lead developers / architects for some of the largest algorithmic shops in chicago.

but my point is that programming for HFT or real-time trading requires that you really know what you're doing down to each line of code, so that you can react when things do break (and they will break). if you can't react quickly, you will eventually not find yourself on interesting projects and you might even get fired.

so ironically you have to slow down and really get to know how to do programming very carefully, and then scale that up so that you can react really quickly later (with something like binary search). this is a useful thing to practice in some ways. other people probably learn variants of it in other fields.

* the recession hit large parts of the financial sector pretty hard. i went back and visited chicago somewhat recently (now work in SV). i can't speak to everyone, but if i were an undergraduate or someone trying to figure out career trajectories for the first time, i would feel much more secure in even the startup space than in financial services at this point. because you know most of that is going to be replaced (with automated, distributed technology) in our lifetime.


> so ironically you have to slow down and really get to know how to do programming very carefully, and then scale that up so that you can react really quickly later (with something like binary search). this is a useful thing to practice in some ways.

Any tips on how to practice this? I have been slowly discovering, on my own, ways to write code so that when bugs appear it is apparent which portion of code it appeared in. This can be as simple as logging often or as complicated as trying to predict when I might be doing something wrong and put a funky error message in a place I don't understand so when a bug does happen I can go to, or rule out, that section of code. Any tips?


Good, stringent mentors (esp., good, rigorous code reviews) are key.

Theoretically, depending on which language you choose, you should be able to rewrite a bit of code until there is literally not a single character that you could improve to make it clearer or more efficient.

It's good practice to do this -- eventually it becomes habitual. However, that doesn't save one from other people's code.

But yeah, there are certain virtuous cycles that work to your advantage if you take the extra time to try to improve even the most basic code (save one line here; make one idiom clearer, etc.) -- cascades over time...


My primary way of ascertaining how bug-free my code is, and the way I've never seen anyone mention, is by feel. Doesn't anyone else roughly know which code is likely to cause bugs and which isn't? Whenever I write some code without thinking it through or take my time, I know it's going to lead to bugs, even if it's very simple.

On the other hand, I have code I wrote that I trust completely. It turns out later that these metrics are, indeed, accurate. Does anyone else get this?


How did you manage to work in HFT straight out of high school?


Had an uncle in the industry (with wall street experience who was (re)starting an algorithmic shop for the first time in the late 90s). Sometimes I think I would've saved more time if I had stayed in the Bay Area and not gone into HFT (in Chicago), but I definitely appreciate the rigorousness of some of the mentors I had there.

I didn't go right into writing backend matching engines for HFT though. Took time. Maybe not ten years, but maybe something like five years to come across good mentors that insisted I relearn everything (and get into the thick of HFT).

One mentor I had used to say he was going to crucify me at my desk, etc. (somewhat jokingly) in response to code reviews. It's a little bit annoying, but good practice.

I definitely still make mistakes (I am somewhat absent-minded). But I've learned to build protection around code, and to make checks and elegantly scale in things like test cases as unobtrusively and quickly (but as carefully) as possible. So maybe I make a bit fewer mistakes than some of my colleagues without that background.


What kind of tools did you use? Was it all custom or some kind of system you tied in?


Pretty much all custom. On the trading client side, a lot of firms used to tie into TT (Trading Technologies), etc. Then usually they rewrite with their own order gateways / price servers, and if they have enough resources, develop their own trading clients, etc.

I've been at firms that are all Java and use command-line terminals for most of the trading feedback (while having other clients to view the market depth). I've been at firms that are all C++ and C, and have their own trading GUIs.

Generally speaking though performance is key and at some point one ends up just rewriting things in-house (and tying into the exchanges or markets directly).

But there are a lot of different types of trades, etc. A lot of different ways to go, some of which (as zedshaw was mentioning) might involve Visual Basic.

But yeah, most of my experience was with C + a very limited subset of C++ on Linux. I still probably can't say too much more than that (though it's been two-three years, etc., since I was active with it).

I can probably say though that the fun for me was rewriting the backend services and trying to make them as fast (and as stable and redundant) as possible. A lot of it is translation of different market sources, etc. I experimented with a lot of languages at the time (Haskell, OCAML, etc., a la Jane Street), but at the end of the day did most of our stuff in C on Linux (i.e., with vim and makefiles).

If I'd make one bit more of advice (and I advised/mentored maybe two or three younger developers while in Chicago -- so I'm no expert) -- but it would be that if you have the interest, a lot of this stuff gets really easy with time. I suppose that's like most fields. But yeah, the productivity I had when I started, and when I left, was very, very different. And part of that had to do with writing everything 'bespoke' / custom, when there was time. Anyway, I go on...


I'm sorry if you answered this elsewhere, but why did you stop working in HFT?


Combination of things. I'm originally from the Bay Area (Berkeley), so I always wanted to get back (I think I could've gotten into the Chicago winters if I'd picked up following hockey more, but was sort of too late by the time I realized this). The other thing is that pure technology companies really are a bit more exciting in some ways than financial firms, even if they make technology and algorithmic approaches to problem solving their primary focus. Long-term, the Bay Area seemed to make more sense. I sort of believe in the startup mentality more than the Chicago-, zero-sum trading world mentality (though as sort of hinting at, sometimes I miss a little bit of the rigorousness). But it's hard to generalize. Good people in both places.


1. Works 12 hours a day on average 2. Works 100 hour weeks

Stopped reading there.


Yeah, I hate to work an 8.3 day week.


I like how the slashdot discussion rapidly turns into a moral debate.


Check out this thread; we're hardly immune.


They are specialists. They specialize in optimizing the crap out of very specific algorithms. I would much rather take a pay cut than work all day on optimizing stuff. For the money that they pay the work sounds extreamly boring (imho)


Specialization is for insects -Heinlein


Would it be foolish to try to play with HFT (or perhaps "medium" frequency or something) as a private entity? Or is this something essentially only available to Wall Street?

Not looking for money, it just seems like it'd be interesting to explore.


You'd need access to a) tremendous leverage and b) proximity to the exchange that you'd want to trade on (the profit opportunities disappear when faced with greater latency).


So he does what any good programmer does, but he earns 5x as much. One reason they earn so much is that the companies they work for have corrupt ties to the Federal Reserve and the US government, and when the money supply is inflated, they get all the new money, and can thus pay their programmers (and all employees/partners/shareholders/owners) with the new money. Their salaries come at the expense of people who don't get the new money, like pensioners.


Fun fact: the people on the internet who talk about economics the most appear to be the people who understand it the least.

This is unusual. I mean, the people on the internet who talk about Batman the most generally turn out to know a lot more about Batman than I do. And the people on the internet who talk about tae kwan do the most turn out to know more about tae kwan do than I do. But for economics it is, for some reason, the other way around.


Great observation. That's more true on Reddit and Hacker News than Quora, for instance. I think that's because your title (or any other affiliation with the topic) is prominently displayed next to your name.


Fun fact: Everyone knows the finance industry is highly corrupt, but point out the mechanism of the corruption and you will be downvoted.


Your analysis is a bit superficial. The government connections keep them from being regulated but don't adequately explain how they can skim so much off the top. For instance, how do the big firms (e.g. Goldman) manage to get into oil futures, create new fangled products that others will buy, get everyone to follow them into the same market sector, raise the price of oil, pocket billions of dollars, and leave the market before it goes south. It's actually hundreds of years of accumulated know-how in a somewhat needed but mostly bogus market sector -- of which the first priority is how to convince very intelligent and hard working people that they are doing some admirable or at least neutral when they are in fact destroying the economic base of the country they are in, siphoning all of the talent into meaningless and counterproductive tasks, and pouring their money into the political machine in order to increase corruption so they will never be held accountable for their actions.

The short answer is an excellent understanding of human psychology leading to good marketing. Most criminals think they aren't doing something wrong. Most people can be trained to do very damaging (even evil) actions by acculturation and habituation. Americans have been re-educated in the past fifty years to think that all sorts of things are okay that they never would have thought when we were the industrial superpower that invented and produced everything imaginable (e.g. car, plane, tv, space shuttles, etc.). Of course, most of these changes in American thinking aren't politically correct to mention.

Nowadays people either go into finance or work on some little web startup in the hopes they will make a billion dollars -- but at least that is better than being a patent troll. The AirBnB scandal is in fact a great example of the present dynamic. It is a great service on top of existing infrastructure. That's basically all Americans do these days -- a service economy on top of actual products that are increasingly being produced elsewhere. Sometimes those services are good, sometimes not so good, but barely anyone actually builds anything that is made to last -- nor do they seem to care.

Wake up America!


I agree with everything you said with one important exception: The finance industry is not corrupt because of a lack of regulations. It is corrupt because of the regulations. The fact that Federal Reserve has been regulated into existence is a very deep problem, as is the fact that fractional reserve banks are always protected from failing by regulations. Regulations are the problem, not the answer.


Currency is regulated into existence. Someone has to print it. Like it or not, there are all sorts of natural monopolies which exist in nature. The first and foremost is a monopoly on violence by the state. This is, in fact, demanded by the citizens who have a lot to lose if companies et al. were also allowed to pursue their interests by brandishing weapons. Thus, the first regulation is that companies cannot pursue their interests via force.

Thus, we are already out of the perfect world imagined by Austrian economists and exposing the simplistic lie that their worldview entails -- the social union that is the state is not merely a machine but, in the American republic, exists by the consent of the governed. Consequently, it has the power to issue additional regulations deemed to be in the interests of the governed, of which one might be that there be a single national currency, a single national language, etc. This is because our state is rooted in a Lockean social contract (with undoubtedly a good sprinkling of Hobbes).

Now, the precise nature of the regulations and whether or not they serve the people and whether or not they are consistent with the founding documents and accompanying intentions of the Republic is not always clear. Nonetheless, I think it is clear enough that at least in the American republic (if not a Randian inspired anti-state) that regulations are sometimes an answer to various problems.

Consequently, I would argue that if the SEC was able to attract and retain top talent and execute on its mandate it would have been able to stop this sub-prime nonsense in its tracks long before the present bubble burst and infected the rest of the economy with its TARPy bile. This is exactly why it existed -- because history tells us that banks like Goldman cannot be trusted to regulate themselves and act within the interests of the American people.


> Currency is regulated into existence.

Nope. Gold and bitcoins come from the market.


Gold is a commodity not a currency. Historically most currencies have been either minted in or based on valuable commodities. Virtually without exception they have been produced by governments.

Do you mean to argue that no currency ever has or should have been created by a government?


So the purpose of currency is to serve as a proxy for goods and services. The basic question of monetary regulation is: "how much currency do we need?"

The Fed system actually somewhat regulate the currency supply based on the market. When you take a loan to start a business, new currency is created at the same time that a new productive enterprise is created. Gold and Bitcoin don't come from the market at all. The amount of Bitcoin added to the economy has nothing to do with the underlying economy --- its based on an arbitrary formula.


I understand economics just fine, I just come from the Austrian School, which makes a lot of people angry (even though it is right).


If he does what you do but makes 5 times as much as you, then you'd be a fool to not apply to such jobs.


Maybe, but there are a number of reasons why you might not want to:

1) The US financial system is unsustainable. Specialize in it and you will find yourself out of a job eventually.

2) It's unethical. If you understand that your excess salary is coming from wealth that is stolen from people through the mechanism of inflation, then you may want to opt out of the corrupt system for peace of mind.

3) If the people actually understood how much they were screwed by this system, they would come after bankers, and that might include programmers at banks. This sort of happened in 2008 when bankers received threats. If the US system collapsed, they might receive more than threats. Note that, although traders and bankers are not the same, traders often use leverage with new money created by the banks and the Fed, and thus are just one hop away from the new money and are almost as culpable as the bankers. And besides, the angry hordes might not make such a subtle distinction; anyone associated with finance would be subject to retribution.


Oh don't be melodramatic. If the US financial system fails you'll be screwed no matter your industry if you're being paid in US currency. And angry mobs coming to lynch you? Give me a break, such a thing is unprecedented and the shear number of people in the field will provide protection even if that does happen (as will the amount of money you'd be making).

As for ethics: Perhaps the reason they are paid so much is because they, unlike you, are able to put aside petty issues like that.


> And angry mobs coming to lynch you? Give me a break, such a thing is unprecedented

Maybe you've never heard of the French revolution. Such a thing is definitely not unprecedented.


So you won't take a job because you fear a french revolution scenario...

Like I said, melodramatic.


Wow. Tinfoil hat moralist much?

Economics is not a morality play. Your "currency" isn't worth squat without someone to accept it as a medium of exchange.

Don't forget that gold was at times an inflationary currency that also happened to have the nasty side effect of destroying populations located in areas with good mines. Like, I dunno, most of what is now Mexico, for instance.


"the way I make money is opaque to people with no economics background"

"rabble rabble moralizing rabble rabble!"

you people do realize that normal people think the same thing about software developers right?


its when simple quants make bonuses 20M per year - causing worldwide economic crisis - and the country is defaulting

then you think that something must be wrong with the American economic policy and tax system




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

Search: