
Ask HN: Mechanical engineer that wants to work in the programming field - replicant
I am a 27 years old PhD in computational mechanics (finite element method, elasticity ...) who should be graduating in around 6 months. I have been tempted for quite some time by the idea of trying to get a job in the US and work as a programmer. A personal dream, I really would like to experience the life in the west coast for a few years. What are my odds of achieving that?
Any advices on what I should try to learn or do in the next 6 months? During my PhD, I have been coding in Matlab, Python and mostly in C++ (I have read Effective C++, Modern Effective C++). I have learned OpenMP, MPI and Cuda (though, I don&#x27;t consider myself very experienced in them) and I have taken an introduction course in algorithms.<p>Edit: Since some people have asked, right now I am in UK and I have an EU passport. Thanks for the very encouraging answers.
======
john_b
I'm a mechanical engineer by training (B.S. and M.S.) but most of my day to
day work is software development, testing, analysis, etc in the aviation
industry. I haven't done anything "mechanical" for money since graduating.

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.

~~~
replicant
This path is really appealing to me. Now, knowing that there is a demand for
the people between the two worlds, I will spend some time looking for offers,
and prepare a CV accordingly.

Moving to US seems a bit harder, but I wouldn't mind if I achieve this in the
long term.

------
scottndecker
I have an MS in Mechanical Engineering from an Ivy League university. While I
got my degree I too learned Matlab as well as C. I wrote my masters thesis on
a controlled mechanism for the breakup of microdroplets in a bidisperse
emulsion.

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!

~~~
jkubicek
Agreed. I did almost the exact same path. Once you've gotten that first job
and have a few years of professional software development under your belt,
changing jobs is very easy. Potential employers see "software engineer" and
"PhD" on your resume and don't care that it's an ME degree.

Btw, scottndecker, did you go to Rose-Hulman for undergrad?

~~~
scottndecker
Nope. Dartmouth.

------
svec
Can you get a job as a mechanical engineer somewhere that would allow you to
move into programming at the same company?

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.

~~~
bartuc
Having worked in Boston for a few years before moving to the bay area, I can
confirm that Boston has numerous software+hardware/robotics startups. However
I've found that in the bay area hardly anyone is interested in robotics, and
the ones that are only seem to only be working with drones (mostly quadcopters
and the like, which don't seem practical for many of the proposed use cases).

------
mpdehaan2
I think in general the field (maybe not HR departments) is pretty accepting of
people with alternative majors even outside of engineering - I know some great
folks who had music or art history degrees.

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.

------
krschultz
I have a mechanical engineering degree(BS) with a minor in computer science.

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.

------
anon100
Find a company like Ansys or Abaqus, where you can work on FEM software. This
way you can use your training in mechanics while still programming.

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.

~~~
Iftheshoefits
"a) most engineers suck at programming."

I find that to be not true. Most engineers suck at regurgitating the correct
textbook CS algorithm or data structure from memory, but they are very good at
engineering, which is what the overwhelming majority of programming is.

If I had to choose between a CS major and a ME for an engineering project that
involved software development I'd choose the ME almost every time, all else
being equal. The exceptions would be cases where academic CS knowledge is
required. They exist but not nearly as frequently as Silicon Valley would have
anybody believe.

~~~
krschultz
No he's saying most mechanical engineers can't program and most CS majors
can't understand the mechanical engineering math. The OP is perfectly
positioned to bridge the gap between the two.

------
rayiner
My advice would be: don't underestimate the opportunities available on the
east coast of the U.S. There are a lot of companies here in the D.C. area who
need programmers with domain expertise in mechanical, aerospace, and
electrical engineering. Also, my gut feeling is that the PhD will carry
relatively more weight here and that the lack of CS degree will carry
relatively less. A who understands the physics is a lot more valuable to many
companies than a guy who knows the latest design patterns.

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.

------
scoj
I am a mechanical engineer as well that turned to programming. I only had
Matlab and Fortran experience of all things out of school. I would be very
honest with yourself whether living in the US on the West Coast is your dream
or being a programmer is your dream. These are two separate things and are not
necessarily related. Assuming that you want to go into programming, then
figure out what type of work you want to do. But if you are flexible and not
in the goal is more to live in the US then I would suggest going the web
development route. I learned pretty much entirely on nights and weekends doing
small contract work what we call moonlighting. Then after several years of
that I decided to go out on my own. I had never worked officially as a
developer but was able to get my first full-time contract job without showing
a resume at all. (It was from a reference.) The thing that I love about the
web development space especially is that no one cares what your degree as they
only care about your experience and knowledge. If you can build a simple web
app that does something and it can be simple and put it out there on a real
site then you will have no problem getting a job.

All of this is assuming that you legally can get a job the US.

------
thothamon
The main thing you need to do is convince HR and then a hiring manager that
you have the skills to do the work. The best way you can do that is to have
projects on Github that demonstrate your skill, and if you can get a little
paid work using the toolset you're targeting, that would be great as well.

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!

------
astral303
Read "Clean Code" by Robert C Martin. It's Java-centric, but very applicable
nonetheless. It's a compilation of years of insight about how to design your
programs, and it explains well why you should care about writing your code one
way or another. It's the first time ever that I have seen an illustration of
violating Demeter's Law that was actually believable and the proposed solution
deeply communicated the intent of the law.

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.

------
mschip
I have a BS in Mechanical Engineering and fell in love with coding after
having to write some pretty basic VB macros in Excel. If your goal is to just
live on the West Coast then I would recommend looking for a job in your
current field. If your passionate about coding, the best thing you can do in
the next 6 months is to build something meaningful that you can speak to. My
route was a little different.. I struggled to find the time to learn/build
while working full time so I decided to fully dedicate 3 months via Hack
Reactor. I highly recommend checking out Hack Reactor if you have the means
and interest in that branch of programming.

------
thorin
What country are you currently in? If you can get a job at a worldwide
software company and then do a placement in the US you'll have a much higher
chance of getting a visa. If you can handle continuing to work in Engineering
there must be a lot of options involving coding. Look at adverts for big
engineering companies (in that area) and look for software jobs, that way
you'll have lots of relevant experience.

~~~
replicant
I am in UK.

------
vlokshin
I'm a 27 year old and my B.S. was in mechanical engineering -- I work in the
"app/startup" world. I think MechE helped.

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

------
mhickie
I have a BS in ME and worked ME jobs for about 11 years. During the last 1/2
of this time, worked on my MS in IE and was doing simulation modeling.
Simulation modeling is where I learned how much I really enjoyed programming
but had also been writing some statistical analysis programs for QA on the
side. At year 12, I was able to jump to the Information Systems side to write
B2B code for outsourcing of manufacturing. I have been doing programming jobs
now for the last 17 years and have enjoyed it.

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!

------
steven2012
Which country are you from? If not from Canada or Australia, then unless you
get into school in the US and get your OPT, or unless you join a U.S. based
company that you can internally transfer, your chances are slim. You need to
get work authorization which is very hard and most U.S. employers won't hire
someone outside of the US except in the above situations.

------
pcvarmint
Work in High-Performance Computing [1], whether at a research lab, an HPC
manufacturer, or even a big company like Intel, or at an independent software
vendor like MSC, ANSYS, LS-Dyna, Cd-adapco, Mathworks, etc.

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.

[1] [http://www.hpcwire.com/](http://www.hpcwire.com/)

------
zamalek
The industry has a high amount of people that don't even have a degree. We've
found that CS graduates need to be basically re-educated but still prefer to
hire them purely because a degree shows that you can complete something. A PhD
speaks volumes about your work ethic: you should have no problems getting
hired.

Salary is a different story entirely: you're probably going to be a junior
developer and the PhD will go to 'waste.'

~~~
Kurtz79
Also, a few years down the road, the relevant experience you have will weight
orders of magnitude more than your degree or PhD.

Right now, your decision should be based mainly on what you would like to do
be doing in your professional life, don't sweat too much on your initial
salary (which even as a junior developer, it should be at the very least
decent).

Just keep practicing (hint, read "How to crack the coding interview"), and you
should be fine.

~~~
zamalek
> Also, a few years down the road, the relevant experience you have will
> weight orders of magnitude more than your degree or PhD.

Precisely.

------
phkahler
I suggest you check out [http://www.altair.com/](http://www.altair.com/) they
are a leader in FEA tools of all kinds, with offices in many countries.
Software development tends to be concentrated in a few countries (depends on
the product), but customization of the tools is done world wide. Check out the
web site to learn more and look for open positions.

------
pickle27
I have a BS in Mech Eng from there I got a MS in Computer Engineering working
on Computer Vision and robotics. If you are good with python and care about
good code then it should be no problem to switch.

------
Dewie
Maybe first travel to the West Coast on a vacation or something to get a feel
for what it's actually like. If you haven't already.

~~~
ashwinaj
I second this. Don't be swayed by what you see and read in the media. Silicon
Valley isn't a place for everyone and can be incredibly stressful. On the
bright side, it's a very diverse place with tons of stuff to do, great
weather, smart people and is easily one of the best places in the US (IMO
anyway).

~~~
Dewie
A friend wanted to become a lawyer in LA (he's not American). He travelled
there once, and he changed his mind about that for some reason. That saved him
some time from starting to study American law, I guess.

------
balls2you
Don't join Silicon Valley. Your skills are more valued and paid for in
Finance. Real hard cash not worthless options that may have value in the
future.

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.

~~~
phdp
I did this, and played up my ability to analyze real world situations when
applying for a quant modeling job. A lot of my lab work was empirical
modeling, so transitioning from student to my current job wasn't difficult. It
also helps to have some background in coding. I did c++/matlab/java in college
for lab work and classes. Everyone that is under 35 in my group has a
scientific background, ranging from me (MSE in Mechanical Engineering) to PhDs
in Chemistry and Physics. Most of my day is spent doing c++ or java
development and the rest is R.

~~~
replicant
I never considered this possibility. Could you recommend some link where I
could read about the field and see if I have chance? It is not really what
motivates me, but it is worth informing myself before discarding it.

