Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do I move into software from hardware engineering
7 points by mr_b on May 23, 2010 | hide | past | favorite | 13 comments
I recently completed my masters degree in VLSI from a top 15 school in the US. But in the last two years, I have become very interested in software. However, because of the course structure and time constraints, I never got time to learn any programming language. I can program in C and know basic HTML and CSS. I really want to move into software but since I have no projects/experience in software, companies refuse to even look at my resume. How do I move into software and get a job in that domain.



I've worked with someone with pretty much exactly your background, someone who found himself in a software development project, and I'd indeed never hire you as you are today for a software job. :-(

The only answer is simple in principle, you just have to find the time and energy: do a lot of programming. If you're hard core or want to find out if you are or have that potential, I'd start with SICP/6.001: http://en.wikipedia.org/wiki/Structure_and_Interpretation_of...

Good luck! People with your background can bring a lot to the table, you just need to achieve the relevant software background first.


Thanks! The link looks interesting. Will have a look. Now just have to find some time for programming.


You're welcome.

In the meantime, make sure to carry around one of your MOSIS chips, that earns you a lot of geek cred for those who know what it means ^_^.

(Seriously, it does.)


Just a few random thoughts:

What were you doing before the VLSI course? How did you get your experience with C, HTML, CSS and Perl? Can you rewrite your resume so it emphasizes the experience you have had with programming, even if it wasn't part of a course?

"Design of VLSI Systems" at http://lsiwww.epfl.ch/LSI2001/teaching/webcourse/ch01/ch01.h... says "The design process, at various levels, is usually evolutionary in nature. It starts with a given set of requirements. Initial design is developed and tested against the requirements. When requirements are not met, the design has to be improved. If such improvement is either not possible or too costly, then the revision of requirements and its impact analysis must be considered." That sounds a lot like what we do for programming. Is there some way to emphasize the skills you learned for VLSI and state how you would use them for software?

Isn't VLSI mainly software driven these days? I would state what software you used and what you did with it. That's a kind of programming.

During your course, did you work in a team or on your own? Did you gather requirements, obtain resources, prioritise and allocate tasks and follow up to make sure each team member did his/her job? You could reuse that experience for programming.

With your hardware background, I'd aim for low-level technical programming jobs like writing device drivers rather than more business-oriented software like account packages, CRMs, databases, GUIs or possibly websites.

Did you debug hardware by using a CRO, JTAG port, signal injector or protocol analyser? Those can be useful for device driver writers too.

Is there an Arduino group in your area that you could do voluntary programming for? That would get you started with simple device drivers.

You might have to take a VLSI job for a while to keep the cash flowing while you get more software experience by programming part time or on a volunteer basis. There's a list of VLSI companies at http://www.vlsi-world.com/index.php?option=com_glossary&...


That was an awesome answer. Thanks. I did C as part of course and the rest because of interest. VLSI is mainly software driven. I have worked with Hardware descriptive languages like Verilog. As per the suggestions above, I have decided to take up an open source project and hone my software skills and then try for a job change.


Perhaps you could work on an open source C/Python/Ruby. This way you could add something of relevance to your resume.


Ya. That would probably be the best bet. Can you suggest which would be better-Ruby or Python? I have some experience with Perl.


I prefer Python.


Just do it. Pick a project and program it. Then do another. Practice is the key.


Find a friend who runs small software company, bribe him a bit, so you can then easily write that you worked in his company a year.


"Find a friend who runs small software company, bribe him a bit, so you can then easily write that you worked in his company a year."

Why would you want to do this? If you have a friend with software company work for him for a year! Any sw company worth its existence always needs more programmers. You can work at low pay (or even for no pay if you are okw ith it) for a couple of months while you are learning and then get into a fulltime position. With friends you can make such unorthodox arrangements. If you have a friend who owns a software company, use that to learn!


Well, the friend with COMPANY, may have NO REAL positions open. And you may be ALREADY very experienced in technology. So to break through bureaucracies of job agencies/HR departments, you need to apply some grease. Yes it is deception, I know, but it is benign and important one. Your politicians deceive you every second, but keep them, do not you?.


Sorry, but in one hour or less I'll know someone who'd done that was a poser vs. someone who has the real experience. E.g. what happens when I give him my "trivial" coding tests (for one class of jobs in the '90s that was write functions to reverse a linked list (pointers) and recursively compute the factorial of a number, plus find errors in a small block of code). Then depending on the position I'd ask him to do some design and at some point I'd ask for a window into his thinking about it (depending on how he does this sort of think, anywhere from thinking aloud during the process to discussing it after working alone is fine).

Getting your foot in the door only works if you can then perform, and while mr_b has learned a number of fantastically valuable things, he hasn't learned a number of critical software things. Some people can pull it off if their manager(s) aren't too attentive and/or bright and they're working alone, but he'd be far better off with people who are good and who would mentor him in his first few jobs.

Plus he'd get much better recommendations for his next job if they're from people with clues.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: