I am a Mechanical Engineer with no experience in programming. I have been given a project to try to stream data from a machine device to a web based or stand alone client application. The idea is to monitor the actions of this machine and its ability to execute commands properly. The device will be connect to an adapter and agent via rs232 or cat-5 connection and is suppose to transmit or dump the information to the agent. The client app will submit a command via HTTP over TCP/IP. response data should be presented in xml.

I know this is a very general question or scenario and more details are probably needed, but I am confused on how I should even get started. Like I said, I have no experience in C# or C++ at all so this is very confusing to me. What is the best/quickest way of learning how to create this? Any suggestions or advice would be greatly appreciated.

+3  A: 

The first is step is to understand what the data is being sent. This is language agnostic.

Once you understand what the data is, figure out what you want to do with it. How do you want it displayed? How much do you want to keep?

If you have a giant whiteboard, draw the device at one end, and a couple computer screens on the other end. What shows up on the screens? Map out where the data goes, and then figure out ways to make it work.

You ME background should tell you it's a bad idea to build anything that's nontrivial without a design first. This is no different. Identify what you want in human terms, and begin translating them to computer terms, and the design will begin to emerge.

+12  A: 

Best advice is to tell your company to hire a consultant to write the it for you.

Next you have to learn the basic C# and programming.

You can start here MSDN Beginner site.

Keep in mind that learning to program will take time, and the best way to learn is to write code, and keep writing it.

David Basarab
I have to maintain a LOT of code written by engineers who were asked to write something quickly, and I can verify that it is better for everyone if the learning process is separated from creating working code.
Mike Burton
+1  A: 

Not that easy i guess. First of all is your machine device is capable to send HTTP request?

If answer is yes then there will not be any issue (you will find some help on how to send HTTP request from your machine device on internet).

If answer is no then first you will have to write TCP/IP stack on it using some MicroController.... its a long story.. and of course having a background of ME its not gonna be easy for you. i'll agree with 'David Basarab' tell your company to hire a consultant to write the it for you.


Shoaib Shaikh
+7  A: 

Personally, I think this scenario is a case of gross mismanagement by assigning you to such a task. Unless your manager is just trying to keep you busy until more work comes along, your company would be better served to bring in a consultant and have it built by a professional in less time. By the time you go through the learning curve it's going to cost them more than it would with consulting fees.

This isn't a knock against you, and I'm sure this is something you could learn in time, as you are obviously intelligent being a Mechanical Engineer.

I know this isn't really the answer you were looking for, and it's only my opinion, but I'm also trying to be honest and helpful.

To attempt to give an answer on difficulty and where to start we would really need to know more about the device you are working with. If we are dealing with a windows mobile device, it may be fairly easy to learn from the internet or a .NET book. Custom devices or devices with very low level APIs can be a real bear to work with, on the other hand.

Brad Barker
+1  A: 

I agree with @David

Outsourcing the coding bit of your projects is also known as being "fiscally responsible". You think you save money doing it all in house, but in reality you waste more hours and man power on the little issues that a seasoned developer would pick up on in a heart beat.


Heh :-)

"I am a programmer with no experience in mechanical engineering. I have been given a project to design and build a machine to automatically deliver, at 1701 each Friday, beer and pizza to my workmates in cubicles scattered about the floor."


Pete Wilson

The best way is just to start doing it and just google specific things you're trying to do. You don't need books or anything, all you need is google and your programming environment.

First thing is that you need to set up your environment. If you're wanting to do this with Microsoft technology make sure your company has Visual Studio else you might want to look into open source (java, etc).

If you go with Microsoft, try to stick to C# if you can and only go in C++ if there's no other choice (i.e., if you need some kind of low level functionality that C# doesn't provide).