by replicant on 3/27/15, 12:33 PM with 36 comments
Edit: Since some people have asked, right now I am in UK and I have an EU passport. Thanks for the very encouraging answers.
by john_b on 3/27/15, 2:31 PM
Unless you want to do web development, you shouldn't try to sell yourself as "just a programmer." If a company is only looking for someone with programming skills they will probably favor someone with a CS degree.
Instead, leverage your background. There are lots of companies in the US (West Coast included) that do embedded software, robotics, and other types of software development where the software doesn't run on x86. Often it needs to run in real time and be qualified for safety. The methodical persistence and attention to detail that companies associate with a PhD is an asset for these types of positions. Your Matlab & Python experience will show that you can do both quick prototyping and heavy analysis, while your C++ experience and interest in Cuda, etc will show that you care about performant software and don't mind thinking about the actual hardware your code runs on.
If you have any knowledge of sensors, statistics, or signal processing, you'll probably be an instant hire for this type of company. Companies of this type (which aren't "software companies" by the usual definition, but which have software as a major competitive advantage/requirement) have trouble finding people with the right background. Traditional engineers who can't program don't fill the role, and neither do most CS grads who don't have the engineering knowledge to work with the hardware.
by scottndecker on 3/27/15, 1:09 PM
Eight months after graduating and working in industry, I came to the same conclusion as you: that I preferred writing code to working in the mechanical world. I started learning Java and wrote an Android app. I'd stay up late at night and on weekends pouring over examples and hacking stuff together. Six months into doing that I got an interview at my current employer. I got the job. That was two years ago and it's been one of the best decisions of my life.
The key to doing it:
1) Prove to yourself and others that you want to be a programmer, that you actually enjoy writing code for hours a day
2) Have something to show that proves that
3) Find a company (like I did) that is more interested in finding people who know HOW to think rather than WHAT to think. As engineers you and I are very good at solving problems. Find people who care about that rather than the programming languages you know
4) Once a company takes a chance on you, seize it and run like crazy. Learn as much as you can. In a year or two you can be highly skilled and highly employable in this field.
Best of luck!
by svec on 3/27/15, 2:03 PM
I ask because it's probably easier for you to get a job as an ME (mechanical engineer) than a software engineer, given your background.
Silicon Valley has plenty of robotics companies and other companies that make "real stuff" who need mechanical engineers. And once you're in a company as a productive ME, you can reach out to your software colleagues and see if you can help & learn. And don't just think of northern California - Seattle and southern California have companies that might fit the ME + software profile as well.
And if you're thinking of the East Coast at all, please reach out - I work at iRobot in Boston, MA, and we have plenty of ME's who dabble in software. The Boston area has TONS of other companies who do hardware + software too.
by mpdehaan2 on 3/27/15, 1:14 PM
Your challenge I think is to show initial work for job acquisition purposes, so being able to point to a very technical side project on your GitHub (and of course resume) for your chosen language will be a very good idea.
What language you choose depends on what field you want to get into, specially. Python is used in various places including web and database applications, but ultimately I'd say shoot for something you like. If you can find enough companies you like that work in X language, that can be a good way to go.
Good companies will assume smart folks can pick up other tools, but I think your main hurdle is going to be showing something that counts as sufficient "equivalent experience" -- and that should be possible to do.
College is highly valuable, but all of college C.S. is not always directly applicable.
by krschultz on 3/27/15, 2:50 PM
It is 100% do-able for you to switch in. My college used to say "mechanical engineering is the liberal arts of engineering". You will be able to handle it. I personally did 2.5 years as a professional mechanical engineer right after college, then switched over to software and have been doing that ever since.
Some possible pathways - look for a job that is at the intersection of mechanical engineering & computer science. There are companies that write simulation programs, it's harder to find people that understand the engineering math than it is to find people that can write code. They are usually in the oil / defense industries. They pay very well.
You are also a prime candidate for a bootcamp type program. I don't normally recommend them, but you are one of the few people that it actually makes sense for. You need to just work with some people that know software engineering well and you will grow quickly. At the end of that, they will help place you in a job and then you can spend the next 18-24 months learning it all on the job.
My personal pathway was a bit different. I grew up hacking, and chose to do mechanical engineering because I felt I wouldn't learn enough new stuff in a CS program. When I wanted to get back into software I worked on a sideproject for about 6 months, and used that as an example of my skills when I interviewing. However, I did 3 years of internships in software so I knew what I needed to do.
by anon100 on 3/27/15, 2:01 PM
The big advantage here is that: a) Most engineers suck at programming. b) Most CS majors don't understand the mechanics.
By having skills in both mechanics and programming, you can be an extremely valuable asset to companies that make high-performance computational mechanics software.
by rayiner on 3/27/15, 3:14 PM
FWIW, I've got a BS in AE, and never worked in the field professionally. I went into a software job doing simulations. Most of my coworkers were EEs. We finally hired a CS PhD years in to do AI stuff.
by scoj on 3/27/15, 2:02 PM
All of this is assuming that you legally can get a job the US.
by thothamon on 3/27/15, 1:34 PM
You have six months, so you can't be too ambitious on the size of your projects. Maybe target three interesting projects that demonstrate the skills you're interested in, each set to take two months of your time.
If you really throw yourself into this, you should be doing a lot of hard work, the kind of work a professional programmer does every day. After six months of that, I think you'll be well-positioned for a programming interview, and you'll have some nice projects on Github that will demonstrate your capabilities.
Good luck!
by astral303 on 3/27/15, 4:19 PM
The book progresses from smaller details (like code formatting style) to very large concepts, gets very deep towards the end, so don't be afraid if you get lost a third of the way in. Just leave it and come back to it as you gain experience.
by mschip on 3/27/15, 1:58 PM
by thorin on 3/27/15, 1:56 PM
by vlokshin on 3/27/15, 5:15 PM
Best advice I can give you: Start building things now. The languages are cool, but there's so much more value to being able to build complete-loop products, and I think any engineering mindsets are a great start for working with creating digital products (programming). If you want to take part in an opportunity/make a shift, (your) value has to meet (market) opportunity.
To be honest, I do more wireframing now than anything else (I'm also lucky enough to now have a team that is much better at designing or programming than I am). I think my undergrad in mechE had a huge impact on where I am now -- (1) from how I think and (2) from how much "programmers" or non-programmers respect engineers, or anyone technical, in today's digital world.
The shift can be a very natural one, but web and mobile are where you should probably be focused. That's simply where there' a lot more demand.
I'm not sure how helpful I can ever be, but please feel free to email me for any advice or just to chat: Vlad(at)darwinapps.com
by mhickie on 3/27/15, 3:34 PM
My advice is to keep working on your coding skills. You don't need a degree in CS. You have proven you can handle technical topics with your current degree(s). Maybe search github for some open source projects dealing with mechanical topics (something like robotic movement or control systems or CNC). Join these and contribute.
When it comes to finding a job, there are companies the will value your full skill set. It may take a while and sometimes you might have to work as a ME for a bit. But in some technology companies, you will be able to move horizontal.
Wish you the best!
by steven2012 on 3/27/15, 1:59 PM
by pcvarmint on 3/27/15, 3:28 PM
There are usually openings at HPC companies or HPC business units for mechanical or other engineers to port and tune engineering software to supercomputers. At research labs which use HPC, there are usually lots of experts in various fields, and having someone fluent in both mechanical engineering and programming can bridge gaps and fill voids.
by zamalek on 3/27/15, 1:36 PM
Salary is a different story entirely: you're probably going to be a junior developer and the PhD will go to 'waste.'
by phkahler on 3/27/15, 2:43 PM
by pickle27 on 3/27/15, 3:17 PM
by Dewie on 3/27/15, 1:26 PM
by balls2you on 3/27/15, 3:06 PM
EDIT: also do not "commoditize" yourself by becoming a web developer or an iPhone/Android developer either. Do the difficult technical stuff, aim for the "non-low-hanging-fruit" and you will make tons of money, esp. in Finance.