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

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.




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

Search: