Hacker News new | comments | ask | show | jobs | submit login
Ask HN: How to safely switch to programming?
52 points by ac1294 on Nov 10, 2013 | hide | past | web | favorite | 41 comments
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?

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.

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.

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.

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.

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.

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.

Just a few observations (without ever having experienced this - didn't go to business school and was never interested in investment banking, so don't know the industry):

just because I'm not emailing/cold-calling 3 investment bankers a day

Then email 3 investment bankers a day. You should be able to do this without spending more than a few minutes on each one.

Create a template once and then personalise it as needed. In my current startup, we've emailed many hundreds of people over the past four weeks. It doesn't have to take a lot of time. It absolutely can be done without being such a chore to eat too much into your other time. Also, if you cannot do three a day then do two or even one. Or even one every two days. Anything is better than none a day.

I feel like I'm better suited for <..snip..> a startup, but I'm afraid of risking a safe / prestigious job ...

Unfortunately, in my opinion, startup and risk aversion do not mix well. Startups are risky - that's simply the reality of it. If you are risk averse, then startups absolutely are not for you.

Founding a startup is a hell of a lot of risk (its still worth it IMHO though) and being one of the first few employees, while not quite as risky, is still a lot of risk because you don't know if your job will still be there in a few months or a year.

Personally, I think the startup experience is worth it. I can't see myself working anywhere else now. But its definitely not for everyone, so consider it carefully.


Having said that, you can absolutely get into software development, but if you want to have lots of options you will want to build a network here too. Life is all about networking. I don't think its quite as drastic as having to email three people a day though - I'd start by attending lots of programming user group meetups and conferences - that's where a large portion of my network came from.

I know people who have never studied at all who are doing great - the key to their success is that they have good strong github profiles: you will have a degree from a good school, if you can also create a portfolio of projects (personal or open source) then you will be in a really good place. Its not necessary, but its very helpful. If you can get a summer internship, that also helps a lot. Basically, anything that demonstrates experience writing code (outside of uni projects...) is a very good thing.

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.

Well, that depends.

Can you visualize the storage of an array?

Can you look at this basic construct and build its state in your mind?

    for (i = 0; i < 10; i++) 
      print i

(I'm assuming you have some familiarity with the structure based on your statements.)

Can you walk through it in your head, and understand what it will print, when, and why? Not because you were told what it would do at some point, or because you ran it - but because because you can 'see' it? Do you take some amount of pleasure in doing the above?

If the honest answer is "no" then you'll never be more than a mediocre programmer. There is a lot of work for such programmers out there, and I'm sure you'll find employment - but I suspect the only thing you'll be happy with is the paycheck. You'll also never progress beyond mid-level at best, unless at a large corporation where seniority counts more than ability.

If the answer is "yes", then I think changing over has a very good chance of leading you to an enjoyable, lucrative career path. And you're starting off far ahead of most of the 'coders' entering the work force since the late 90s and early 00s.

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.

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

No job or career is safe. Stop clinging to this antiquated notion that you can get somewhere and chill for the rest of your life. It sounds like you want money. Whatever you do, you're going to have to hustle for it. So stop following the crowds (meaning, whatever you're not personally driven by - be it IB, Consulting, or even startups) and jump in and make your own direction.

If you fall and screw up, its ok.. get up and do it again. Time to grow up

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.

Software development is not an easy gig, either:

a) those of us who are good at it have spent years and years at it

b)the field keeps evolving at a rapid pace. Yesterday, it was Java and XML and SQL. Today, it's Ruby, cloud, and Docker. It's a pain in the ass to keep up unless you are genuinely interested, or carefully find an evergreen niche, or a gig at Google which will compensate for not staying sharp.

c) remote jobs are on the increase. I am the happy employer of an IT person in India who wants a non-traditional job (he wants to work only half a day), but has 10+ years of experience, is fairly intelligent (has a mathematical conjecture to his name), has worked in Lisp, has a degree in AI, and works for $833 per month. All the brouhaha about the H-1B visa is direly misplaced; the tournament is on the other court : outsourcing via remote employment. There are a ridiculous number of job sites that advertise remote jobs, and a good number of employers are able to get themselves to trust remote employees enough to reap the cost benefits. In IT, you compete with the world, literally. In traditional banking and other "locale specific" / seat-warmer-is-a-must jobs, you probably only compete with the rest of the folks in your city.

d) The barriers to entry to a programming job are falling every single day. Previously, having a degree was a must. Now, you could be a dropout with great self-taught Ruby on Rails skills, and you're in. This is a positive IMHO; people in programming are much more ready to break convention and I'm proud to be part of such an industry. I have tried to help a couple of waiters and electronics salesmen transition to a programming career, too. But it means that the field is that much more competitive, too.

Sorry to sound negative; I really don't want to encourage you to get into this field unless you are genuinely passionate about it.

Software development is a pretty safe job these days - I would even dare say more attractive IMO. I would even say that getting a good software engineering job isn't all that difficult - getting a first position in anything is difficult anywhere regardless, and software development doesn't care about your degrees. The only thing employers really care about is whether you can write code with the capacity of improving to the point where you can write good code.

I've been in a somewhat similar situation, although later in my life (left a top 15 math grad program, unsure about what to transition into). If you want to get into software development, just start learning it! It doesn't matter if you're not initially at the top - you should have confidence in your ability to learn quick, and your solid logic/problem solving skills, which are musts in software engineering.

You have a massive advantage over me - I deferred answering this question until I left my PhD program, and took about 1 1/2 years to answer it fully. Less than a year of working in web development, I transitioned from being a junior dev to a senior dev. You can easily set yourself on a faster path since you have time on your side.

Also, keep in mind that there are many companies out there that you likely don't know about. Most companies that recruit from colleges are big. That's not the case most of the time in the real world though - the big companies are just the ones who have the resources to recruit from colleges themselves. The majority are looking locally for talent. Networking is the name of the game, so going to meetup groups (especially meetup.com) for what you're interested in is an easy way to net a payoff in getting interviews, especially if you can sell your credentials to people - if you have to fly to cities & have the $ to do so, it would be well worth the investment.

Just my two cents anyhow.

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?

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.

ac1294: Could you put your email address or some way to contact you in your profile? I want to send you a message.


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.

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.

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.

If you don't have an idea for a project (I totally didn't), find an open source project that you like, start contributing to it and get to the point where you can get accepted as a core developer / maintainer. It can be a great way to show that you have chops (and you end up doing many things that are important dev skills, like code reviews, API design, handling a legacy codebase, etc.). Plus, it's fun and can be a good way to meet people.

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.


I'm a founder -- AMA!

Hey, I'm 27, some time ago graduaded in cultural anthropology and 2 months ago started studying CS :) It's never too late to get involved into someting you feel passionate about. Good luck!

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

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.

So why not go into EE? Its one of your majors after all, and less likely to be outsourced to India.

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.

Talk to a professor.

Why was this thread deleted?

I assume your post got killed for the more explicit words you used. There were some of them. Anyway, I enjoy your writings. :)

Applications are open for YC Summer 2019

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