[Coco] How do you program?
James Dessart
james at skwirl.ca
Fri Dec 9 21:10:43 EST 2005
On 9-Dec-05, at 5:04 PM, Jim Cox wrote:
> How do you program? Assuming you know the programming langauge you
> are working with, do you just sit down at the computer and bang at
> the keys like a chimp, or do you think about what it is you want to
> do and what you what you need to do it?
I think a lot before tackling completely new code, I think about the
features I want, how I might implement them, how I want the
interactions to work, etc. And, as evidenced by my output, it usually
ends there.
However, when I'm working, ie. for money, I start drawing some
preliminary object diagrams, since I do my for-profit stuff in object
oriented languages. Then I start with the object interfaces first,
before implementing it (ie. just the header files), and see how I
think that'll work.
Once I start implementing the functions associated with the objects
I'm creating, it gives me a better idea of what I might need to
change in the interfaces. I usually start with my core functionality,
since that's what the rest of the code deals with.
Then I'll test what I can, sometimes writing skeleton code to do so,
cause I like to see stuff working, it gives me the push to finish the
rest. Sometimes this points out limitations in the design I worked
out, but it's better I find those while still coding, than later on.
After that comes maintenance, when I "think" I've finished, but then
someone else uses the software, and we find out that what I thought
was working doesn't work right for others. Usually because the
assumptions I made when developing are different than the ones my
boss had. This usually results because the boss changes his mind, or
I just didn't get the exact idea right, for whatever reason.
Then there's tracking down obscure bugs. You know, those bugs that
show up when somebody else is using it, that you never come across
cause you didn't think anyone would use the software like that, ever,
not in a million years. And then, even when the user has given you a
detailed test case, it doesn't reproduce on your machine.
Sometimes there's optimization to be done, and I like optimization.
Generally, to be a proper software engineer, you do this once
everything works right, but is just slow, or takes up too much
memory. Usually, with desktop software, the issue is speed, rarely
resource constraints. With modern operating systems and processors,
this can be very interesting.
I've worked in teams of just myself all the way up to 13 developers
on a project. My personal preference is a small, close-knit, in-
person team. There are less procedures you need to put in place to
keep things from going crazy. Two works well, while one can be a bit
isolating.
> PS: Still would like to get opinions about how to proceed with my
> career and moving to an engineering tech job.
Experience is the only thing that'll get you a decent paying job. I
was lucky enough to enter the co-operative education program at my
university, and got some job experience before graduating.
--
James Dessart
http://skwirl.net
More information about the Coco
mailing list