views:

41

answers:

2

My goal is eventually either contract out programming/engineering work and start my own business. I have a few ideas for programs or apps that others would find useful in engineering work.

Right now, I have a full time job as an Aerospace/Mechanical engineer for an engine company. My current task requires me to do a bunch of iterations of a system design using thermodynamics, fluid mechanics, etc. I basically created a small program in Octave (using Emacs and it's octave extension) that can take a few user inputs, ensure that they are relatively sane (I.E. no negative diameters, and certain numbers should always be ascending, like x-values on an axis), and iterate and solve a fairly complex system where the user can specify the number of elements to break a component into (it's similar to finite element analysis, but not quite computational fluid dynamics).

Also, in my free time I am reading SICP using Emacs and xscheme.

The only class I've had in programming is C++, which was a requirement for my undergraduate degree. After that, I spent a lot of time writing simple matlab scripts. For a while, I also wrote some finite element analysis code in Java while a graduate student. At a previous job, I also wrote some python code that had a simple graphical user interface that allowed you to change the dimensions of a mechanical linkage, animate it's movement, and it would also calculate simple stresses in the part and mechanical advantages, etc.

One of the things I'd like to pick up is maybe the use of a CVS system, because at the moment I'm the only person that really writes elaborate code beyond scripts, and I'd like to have some way of reverting in case I screw up. I usually do a good job of documenting my work, because sometimes I don't even remember what I was thinking when I write some code.

But, I'd like to gear towards launching my own business. Should I just get going, set up a website, and start coding up some ideas?

+1  A: 

Read Eric Sink's "Eric Sink on Business of Software" , I'd also recommend the Geoffrey Moore's "Crossing the Chasm" (for the less technical aspects of operating a software business).

As far as some more general programming concepts and practices, go for "Code Complete" and "Design Patterns", these are very well known books in IT community and will help you understand more subtle ways of gearing up your productivity.

Get an accountant.

Write code, write code, write code - I cannot stress enough the importance of this piece of the puzzle.

Jas
+1 for the last line.
James Black
Thank you, I have a copy of code complete, but I haven't read through it yet. I'll probably end up doing that after I make it through SICP because everyone seems to recommend Code Complete.
aeroegnr
A: 

Before you write any code, make certain you have a good design, that you know how the program should function.

It can be as simple as just having powerpoint slides to show what the UI should look like, and what you expect the user to be able to do, and how they should be able to do it.

It is considerably more difficult to use a mouse to adjust a 3D shape, but may be more intuitive than having the user enter a series of x,y,z coordinates.

Once you have a good idea, and can explain it well to someone you trust, get their feedback.

Then, you may want to look at various articles at http://joelonsoftware.com and I found "The Monk and the Riddle" to be a fantastic book that may be helpful.

Once you have a clear vision of what you are trying to do, then it will be easier to contract out. I find the clear vision part to be the hardest aspect, as many people have ideas, but as you work through the details their vision falls apart.

James Black
Thank you, I checked out the reviews of "The Monk and the Riddle." It looked like something that would be beneficial so I went ahead and bought it.
aeroegnr