Ask HN: How to safely switch to programming?

52 points by ac1294 ↗ HN
I'm a third year undergrad majoring in business, engineering, and math at a top public school. I have worked extremely hard to get a perfect GPA, and I thought that would have positioned me well for an investment banking internship this upcoming summer.

Unfortunately, I'm getting "out-networked." I understand GPA isn't everything, but it's disappointing to hear that I have a slim chance at banking just because I'm not emailing/cold-calling 3 investment bankers a day. I'm working my ass off so I can get an internship where I work 100+ hours a week doing stuff I don't even know if I'll enjoy. Note: neither the 3 emails / cold-calls per day nor the 100+ hours a week is an exaggeration.

I've never looked into a software development internship. I'm consistently one of the top students in my EE programming classes, but I'm definitely not as good as the kids that have been programming since middle school. But at this point, I'm sick of recruiting for business internships and seriously considering switching.

I came into the business school thinking it would give me a broad array of choices, but it's funneled me to either investment banking or management consulting. I feel like I'm better suited for software development or a startup, but I'm afraid of risking a safe / prestigious job at an investment bank after I graduate.

I know it's "never too late," but I feel like my software dev prospects are nowhere near my banking prospects with about 1.5 years to graduation. What should I do?

45 comments

[ 4.2 ms ] story [ 67.5 ms ] thread
Your conclusion is probably true. Though I didn't go to a "top public school," I followed a similar path and had a similar concern at about the same point in my path through college. I should've chosen otherwise, but instead I chose to finish my economics degree and find a job working for a bank. I can assure you that there are plenty of good jobs working for banks all across the country. Sure, they may not be the elite positions in investment banking on Wall Street, but lets be honest, most people who work in banking and finance don't work on Wall Street. So if you continue to pursue you existing path, you'll find there is plenty of opportunity in banking. Depending on the role and the area, entry-level pay runs between $40-$50k. After a couple years experience you can generally get $60k. It's not the mountains of riches you dream of while in college, but it's a good living.

That said, I've discovered on "the outside" (of college) that I don't really like being the analytics guy, the banker. I'd much rather build products, make things, have skills which enable me to do. Often, work in banking (be it sales or analytics or underwriting or finance or whatever) can feel pretty disconnected from the real world. For instance, I've worked in risk management, and now in credit administration, and while I'm very good at what I do, it doesn't excite me the way building products for the web does.

The key, in your position, is to determine what drives you. Do you like being the analytics/numbers/finance guy who is a whiz with spreadsheets, analytics, finance/accounting, etc? Or deep down do you harbor the desire to make things: software, web apps, mobile apps, etc.

At this point, put aside concerns about making tons of money or being "successful" after graduation. Thinking about those things will just muddy your thinking. And the truth is that there's good money to be made in either arena.

Think about whether you want to analyze or build and I think you'll have the answer to your question.

In my case, I've often wished I would've made the transition no matter the cost, so that I could be working in software development now. Since I didn't I now have to pursue a long-game of developing the skill-set on my own and eventually slowly working my way into the field.

It sounds like you expect all banking positions to pay a ton, be on Wall Street, require 100+ hours a week (and 3 emails/cold-calls a day), etc. This is certainly not the case in any of the non-Wall Street positions I've worked. I've always worked no more than 40 hours a week, received decent benefits, good salary, paid bank holidays, competent co-workers, etc.

I'm sure positions like you describe exist, I just don't think they're indicative of the vast majority of the banking and finance industry. Broaden your perspective and you might like what you find.

If not then yes, commit to change gears. Particularly if you really enjoy the software development stuff (like I always have). Don't focus on whether you do well at it, but instead on whether it is rewarding to you. If it's not rewarding to you (software development related classes) then you'll hate working as a software developer. However, if you find the programming you do in those classes rewarding then definitely make the switch, because the banking/finance world can be a very frustrating place for someone who'd rather be making things with code. You have some semi-technical skill-sets which may or may not get any respect, there can be a lot of egos run rampant, and banks are notoriously slow to adapt and innovate.

That said, if you can find meaning in the banking line of work, it's not a "bad" gig per se, it's just not quite as satisfying personally as programming is.

Thanks for the advice. It seems as our paths are very similar.

To be honest, my biggest interests are in statistics, programming, and finance (in that order). The most natural intersection seemed to be working at a proprietary trading firm. Unfortunately, I applied to over 25 prop shops with no success. I haven't heard of a single alumni from my school in trading; they typically only hire out of MIT, Harvard, Stanford, UPenn, etc.

After no luck with trading, I figured banking would be the next best option with numbers and finance.

Just out of curiosity, do you program in your free time? Do you think you'll eventually make the transition from banking to software development?

ac1294: Could you put your email address or some way to contact you in your profile? I want to send you a message.
The easiest way to get a prop trading job is by starting out as a programmer. Most trading systems are built in c++ (Java prob number 2 in popularity), so you'd need to master that. Once you're employed at a firm like that it is very doable to transition to a hybrid programmer/quant role. There are vey few non-programming quant roles left on Wall Street and you chances of getting one without a ph.d. are slim.
Software development jobs tend not to care what you majored in if you can demonstrate competency and experience. Your average CS senior is a VERY junior programmer.

Also "math / engineering" is usually good enough to bypass the HR "must have degree" wall at companies where that pertains - at least to the point that you have the same chance anyone does to pitch them on interviewing you.

Things you can do that beat "switch majors" in terms of improving employment prospects:

    * Summer internships
    * Part-time gig
    * Write code, publish it on Github
    * Write a tutorial article
    * Create and market a software product
You also have to ask yourself, what are your goals for this? Are you looking for a comfortable W-2, or to spend some time working at startups, or to start a business of your own within a few years of graduating?
As pathetic as it sounds, I don't really know what my goal is. I guess I want to find an internship this summer that is enjoyable and offers solid exit opportunities for full-time recruiting. I know this is a lot to ask for, but I want to highlight the fact that I work very hard -- I'm not some kid that thinks he's smart and deserves a perfect job.

The biggest problem is I know absolutely nothing about the recruiting process, job requirements, internship duties, etc. for programming roles. Since the start of 2013, I've worked a bit on my coding and published very small projects on GitHub, but I haven't done much else in terms of seeking an internship.

I'm most worried about switching my focus entirely from banking to programming and missing out on a banking internship. If I don't do investment banking this summer, I basically have no chance at a full-time investment banking position. And although I've made it sound like I absolutely hate banking already, there is a chance I could enjoy the internship and the full-time position.

I'm pretty sure I would like a programming role more, but again, I don't know where to start for recruiting. And I'm afraid that working for a small tech firm this summer may not help much when I look for a full-time job after college.

I don't know much about banking, but what you say is definitely not true of programming. It's just not competitive like that. So, I might say it would be wise to go for the banking internship. If it doesn't work out, programming is easy to get into at any point.

Also, don't forget that "working hard" is more of a signal than a legitimate ethic – a signal that you can be used. Try to take some time for yourself. Walk around and really look at the world. Think about the meaning behind things. In the time you spend doing this you'll acquire wisdom that will be essential later on.

You're being too hard on yourself here: it is not pathetic to not have 100% concrete goals when you're not even out of college yet.

College, and much of your 20's and even 30's, is the time where you figure stuff out. Try business/banking - don't like it? Try web development. Don't like it? Switch to something else. And then when you're 47 years old you'll realize that you want to change again - and you'll do it too.

Of course that's far easier said than done; I'm not trying to tell you switching is easy, it's not, but I am trying to tell you that you're not locked in to any one path.

I've interviewed and hired quite a bit, and I can tell you that any programming internship is a good internship. Having some real world experience is good, even if I've never heard of the company you interned at.

I'm almost 30, and I'm only now figuring out my goals for my long-term career. I've been all over the place. I went to grad school for electrical engineering, then I taught high school math, then I went to grad school again for music technology, then I worked for a startup, then I did grant-funded research, then I started a startup, then I became a consultant.

You don't have to know what you want to do with the rest of your life. But my advice to you is to pick something and go hard for it. Don't worry about whether you're making the right choice. Just make sure that whatever path you take, it's something you're going to learn and grow from. The only way you can lose is by not making an affirmative decision on your current direction. You're young as hell, there's plenty of time to pivot. How do you know when to pivot? When you have ceased to meet new people, learn new things about yourself, build new skills, and enjoy yourself.

I could be 8 years into some career job right now. Maybe I missed out on an opportunity to really press my claim in some particular direction. I don't think so though, because instead, I've lived in 8 different states, seen several different career paths, met fascinating people, built soft and hard skills, and learned an incredible amount about myself and what I value.

If you want to be a programmer, you can take some advanced level MOOC classes today. Overcommit yourself to it for a little bit, beyond your coursework. You can try to fix a bug in an open source product you use. You can volunteer your time for a startup in your area, and try to learn the ropes. Just start building. If you can make it clear that you're the type of person that will dive in head first to a tough problem and find a way to scrap together a solution, you will put yourself in demand in the tech world.

Good luck, and feel free to email me if you need any advice.

There are more jobs in tech than only software development. Have you considered other positions? Product management is one option, especially of you have both- the business background and a knowledge of development.
(comment deleted)
I think there's a huge difference between programming and solving your problem. You just want to earn money, right? So just start thinking about your SaaS application. Something people may need, something easy. And try implementing it.

The best for you would be using HTML + CSS + JavaScript. You can use node.js on server side, it's on JavaScript. I think in 6 months you'll be able to build things you want.

If you want to switch to programming to earn money by working for someone, I'm afraid I have bad news for you. You have to spend a lot of time, cos others probably may have much better experience than you. And you will never earn enough. Salary is salary.

To be short: build your simple project, start learning with practice, not theory. Don't think about being software developer for hire.

There's no such thing as "software development". It's like "math" - a very broad term. If you're getting good scores at engineering and math, you definitely could switch to development, you just need to ask yourself what exactly do you want to do? Code a complicated web app, write a network stack for realtime OS, implement complex 3D graphics algorithm on current 3D hardware, write embedded code for the next "Tea kettle with SNMP monitoring" project on Kickstarter or something else? These are quite different skills, these projects go at a very different paces, require different approaches and so on. You can do very well financially on each and every of them, but you need to like what you do, programmers rarely can get away with 9-to-5 thinking about code and 5-to-9 thinking about women, sports or beer. If you're a good programmer you're thinking about efficient priority queue implementation even when you watch superbowl.
I would advise to bolster your banking value:

Add machine learning and data mining to your skills. Play around with MQL4, and show them your chart. Get hired as a quant and earn tons of money.

The road into investment banking via math and software development is probably easier than via a straight up vanilla banking job.
Six months working in industry is worth approximately 10 years playing on middle school hobby projects from the perspective of calculating your worth to a potential employer. I wouldn't worry too much even if you're not #1 in your CS classes.
Don't worry if you haven't been programming as long as the other students, if you invest enough time you'll likely by pass the other students who have been being programming since middle school. A lot of these people are likely amateurs, and I'm willing to bet they've only done a bit of Basic programming here and there. I'm sure there are exceptions to that, but that's just my experience. I switched into my degree from an arts degree with no programming experience, and a year later I'm one of the better students in my classes.

Best of luck with making your decision

For a young college grad who doesn't know what to do with themselves, banking and consulting are great options if you can get them.
get http://teamtreehouse.com few months of learning and you'll be able to make more money than a lot of 40 - 50 year old regional presidents at most companies.
Consider dropbox.com/bizops :) get in touch if interested...
Just start to write code. Alot.
Based on my experience, and now putting myself in your position, I would just finish the engineering/business/math degree, and then pursue a career in software when you graduate.

I did my degree in mechanical engineer (mechatronics), and didn't have too much trouble finding employment in software. I graduated with no internship or professional experience. My graduating semester, I realized software 'was it', so I just strapped down and built a product (made no money) and released it (ios/rails/AWS). A few more months studying mobile development obsessively, I landed my first paying gig. It's been about a year since, and I couldn't be happier with my decision and progression.

But to be fair, my major heavily involved programming various robots/devices/languages since 1st year, so I had lots of programming experience upon graduation. But I imagine you are in a similar situation, or could be if you wanted to.

Since this is HN, I wouldn't be surprised if you have a curiosity/enthusiasm with trying your hand at the startup lottery. There's no better background to have than CS/Engineering for this.

So my advice is: find a sector from software you find interesting, build something and ship it.

I hope you would seriously think hard about what you want in life.

You sound to me that you are a smart, bright and hardworking person. But for once in your life, you found yourself out-competed and out-networked and you are trying to "pivot" to another career. There is nothing wrong with that. Think hard about what you want. Are you switching to another career because it is prestigious?

I think if you can work your ass off you already have an edge compared to most software guys. Not everybody needs to work at Facebook.
Perhaps you should look into the investment banking divisions who are more algo focussed or those companies who provide services to those firms. That way you will have the best of both worlds
So why not go into EE? Its one of your majors after all, and less likely to be outsourced to India.
Most "prestige" is just recruitment marketing. Bankers may still be well paid, but prestigious they are not.
Don't focus on the competition. Finding your first job is always super tough. I know it seemed impossible when I was in your situation. (I felt so desperate!), but somehow things work out in the end. In the current economic climate, it might take a while, though: don't be upset if you don't get a career job immediately; it can take a year or two sometimes.

You have the grades, so stick with your current course. You do not need a computer science degree to build a career as a software developer. Practical hands-on experience counts more than qualifications.

I believe that a multi-skilled / cross-disciplinary software engineer can expect to earn more money over the course of their career than a straight-up developer. The skills shortage (and therefore the demand) always seems to lie in-between disciplines.

Software development skills + math + business gives you a possible (eventual) avenue into quantitative development in the financial industry, which can be a lucrative career path should you chose to pursue it. (Be prepared to spend a significant amount of time (10 years?) building up skills prior to making the move, though).

Once you have finished your degree, you might consider doing a software-oriented masters degree, or spend 2-3 years with a small company picking up the basics. Your multi-disciplinary skill-set should stand you in good stead. If you cannot find a company willing to hire you, start one! Even if it does not work out, that experience will be golden. If you don't have any ideas, ask in this thread. I have a ton that I am never going to pursue. I am sure that others will pitch in as well.

Let me give you a bit of tangential advice that I don't see anyone else mentioning.

You're on a good track. Stick it out. It's hard to get into banking/finance, so do that first while you have the chance just to see if you find something you like there. The software / product development world doesn't give a shit about credentials, so if that's where your passion lies you can also go there later.

But here's the advice: don't let them put the golden handcuffs on you. If you get out of school making $100k it's real easy to start wearing Armani and lease a BMW, and before you know it there's no job outside of finance that will pay your bills. Instead: buy off the discount rack, get a Honda, and save like crazy. If you end up hating your job, 5 years could be enough to build a nest egg to allow you to bootstrap your own startup.

Atheist niggers, still in denial.

I made God's Temple. I am the best programmer on the planet. I have divine intellect.

God says... I_don't_care Oh_Hell_No wont_you_be_my_neighbor do_it so_let_it_be_written so_let_it_be_written that's_much_better I'll_think_about_it that's_all_folks dance ouch so_let_it_be_written quit_it unemployment be_quiet_bird thats_laughable fabulous

Investment banks rely heavily on technology. That said, there's a lot roles in their tech department that are not programming positions. There's business analyst who interface with the business gathering requirements, project managers who guide the dev team and make sure they don't go off track, and functional analysts who convert business requirements into use cases. Theres QA engineers that manage the testing and releases of these systems. These are all technical jobs, that require candidates to who can learn and understand how large systems operate but don't necessarily need to program. It helps but not necessary.