views:

309

answers:

5

Hello,

I am an embedded software developer with about 5+ years of experience working on mobile devices. I recently lost my job and most of the jobs in the embedded field (that I came across) require security clearance and I am not eligible for that. So, for this reason and also just to learn something new, I am planning to move to web development (Web services or any meaningful application that uses databases etc.).

Please guide me as to what factors should I consider to decide which technology (MSFT / Java related / LAMP) should I pick. If possible, also provide suggestions for projects that could have some application in real life, and how much time should I allocate for the same (as I have lots of unscheduled time these days :) ).

Thanks.

+1  A: 

A good next step might be to go the iPhone developer route as you most likely have the experience dealing with client curiosities (memory leaks, limited cpu, etc). The iPhone/iPod Touch also benefits from having a fairly powerful webkit based browser which can run most AJAX you can write and can interface with a server side component.

To keep things cheap, you could run a java stack on an EC2 server or some other VPS that can act as the server side portion of your app.

It's a $99 investment for the developer license and $5 a month for a cheap VPS for dev, but the payoff can be high if the wind is blowing in the right direction and there's a full moon when you launch your app(s).

(oh, and cheap addictive games can bring in a decent amount of money from the long tail, though who knows how long this will hold with serious games being launched on the iPhone by major players like EA)

Jeremy Stanley
Don't you have to use an Intel Mac to develop native iPhone apps? -- If you're talking about using only server-based applications, there's no need to spend $99 on the developer license.
Nate
+2  A: 

I would normally say that you should leverage your experience in programming for machines that are under-powered and low on memory. However, web development is a very different beast. Web servers will usually have a lot more computational power and memory.

Going either the LAMP or other way, requires a different paradigm of computing. You will often spend more time on integrating multiple processes (database, scripting language, web-server) than actually pushing out more speed and efficiency. The transition is not so easy.

So, like the previous answer said, you may want to consider going the mobile-web development route. You could get the openmoko/iphone/gphone development kit and begin experimenting. Whatever you can get your hands on (and within your budget).

sybreon
+1  A: 

First, realize you are starting completely over if you switch. You could transition to iPhone, Android or Symbian, but I wouldn't stake your livelihood on it unless you are used to freelancing wages and payments. Depends on your personality and opportunity.

Second, establish and work on a network in the area you wish to be employed. Be kind, be quiet, be specific: Your opportunities will most likely be related to who you know and how much they want to help you. Too many programmers who spend their life in front of a screen forget that the employer and client are not compilers. Be nice!

From a ground-up perspective, you might look into the PHP/MySQL winestore that is in this book:

Web Database Applications with PHP and MySQL

This is a fairly step-by-step (if older) approach to learning WHAT a web-based program does, and an approach in how to get it done. Don't worry about AJAX and other web 2.0 stuff until you have a grasp on the basics; it'll just be confusing, in my opinion.

Atlassian, which builds web-based issue tracking software written in Java, has an open-source development kit and a 30-day trial. If you're looking to see some code and work in a fairly developed area, you might try it out:

http://confluence.atlassian.com/display/DEVNET/

Web development is a different skillset than embedded, although you might find a way to leverage your ability to concentrate on detail and troubleshooting if you work in Python or Ruby. Web programming by nature is linking a bunch of disparate systems and protocols together, where I would imagine embedded might do so, but in a much more constrained environment with a lot fewer choices and limited reign for mischief.

Typically, web programming based on kitchen-sink languages (PHP, Java, C#) seem to throw power at problems, so you would ideally find a way to leverage the skill you've acquired with a language that is predicated on performance, not bells and whistles. There are far more Java and C# positions than Python though, so pick you (misery) poison carefully.

PHP is decent if you're looking to get into the startup/low-middle-end realm, while Java/C# will pay better but the circumstances are typically much different (corporate/commercial environments what they are).

You might look at getting certified in Java or C# (the PHP cert is a joke). They won't get you a job, but since you're already knowledgeable, just not in the area you are looking to improve, cert course(s) will help you transition your toolset and terminology, plus explain the purpose. Some employers do care too.

Java Certification (Sun school)

C# Certification

For something fun and Python/Ruby-like, think about picking up Groovy, a Java-based interpreted language.

http://groovy.codehaus.org/

This is a good resource list if you're to get into Java:

Essential Java resources

Jared Farrish
+3  A: 

Have you considered linux kernel development? There are many companies in the consumer electronics space that need software engineers with knowledge of linux driver development. This is quite an easy transition for someone with good embedded experience and is great fun too!

Even better, the Linux Driver Development book is available free online.

mikelong
+1  A: 

I'm also an embedded software developer thinking of moving to web development. Not because I'm losing my job (there are enough opportunities for embedded guys in Germany, where I live), but because after 9 years in the field, I'd like to try something else.

Realize that you're not just switching jobs here, you're switching industries. Nobody will hire you as a web developer if you are inexperienced in this field -especially in the current economic context.

You may try to find a job at a larger internet company (e.g. service provider) where your embedded skills get valued. I saw a job posting recently for a VoIP developer position at an ISP. They were looking for someone familiar with C and C++ because they're using some open-source library written in these languages. That sounds like a good entry point for an embedded developer seeking to switch industries.

Once you're in this new industry, you'll probably have plenty of opportunities to learn about web development: internal trainings on new web technologies, learning from experienced colleagues, internal job offers...

geschema