Hi Jason
>> 1) What is the best way to comment my code?
Make sure you use <summary> and <param> tags at a minimum. Sprinkle in some
<remarks> and <see> tags as you gain confidence. Download and install the
ndoc package - it makes prettier comments than the Visual Studio standard.
Aim your comments at a person that is of similar ability, but new to your
code. Tell them about what you are doing at the business level, not the code
detail level. Make your variable and method names self-describing.
>> 2) What are the best tools to use when designing software?
Common sense, and you need access to one or more business "power users" who
know what the final product will be used for. Sorting these key people out
from the morass of managers and analysts that have never worked at the
coal-face is a major challenge. Listen for the expression "it hardly ever
happens". This means "it sometimes happens", and when it does, your code
needs to handle the fallout. Also, many businesses operate using a model
that does not work. Typically they have one or two key people that handle
the exceptions - they are the ones that know the problems, and can often
suggest better ways of working.
>> 3) Should I use UML?
Well, after 20 years in IT (the last 5 as an architect), I am not convinced.
It is a great way to document a design, but I'm not sure it is a great tool
to create a design. My opinion might be different if object databases were
mature. Use Cases have their niche in describing concisely how a user is
going to interact with the system - I recommend them for systems where
security and fraud prevention are important. But class diagrams give you
something that is difficult to implement in a relational database.
Personally I use a good database design tool (Power Designer or Erwin) to
design a relational database that supports the business requirements. Get
that correct, and coding is a breeze.
4) What is the best process, from start to finish, of designing,
Documenting the business requirements is probably the most important step.
Often for small programs I write an outline of a user manual rather than an
official requirements document. Getting it down on paper limts "scope
creep", which is a frequent cause of non-delivery. And don't forget
interpersonal skills. If you can maintain a good working relationship with
your boss and with end users, you will end up writing useful code.
Also soak up knowledge - read all you can on design patterns, polymorphism,
encapsulation and other techniques for making software simple and elegant.
We programmers so often re-invent the wheel - borrow and adapt whatever you
(legally) can. Read newsgroups and slashdot.com. Keep an eye on new projects
in sourceforge.org.. No-one can understand in detail the huge volume of info
coming our way, but it pays to at least know what terms mean and where new
ideas fit in the scheme of things.
It is very easy to get into a rut (e.g. "I know Cobol, therefore everything
should be written in Cobol") And don't re-invent things just because there
is a learning curve. (e.g. Writing your own XML reader rather than learning
about .NET or open source DOM classes). Understanding the mainstream is
almost always the right way to go, and looks good on your CV
Lastly, do it once and get it right. I have worked with a number of
programmers that said they would "go back and comment/clean up their code".
Either they don't, or they spend an inordinate amount of time supporting a
flaky production system.
Well this rant will probably have the UML police after me, but thats life!
Regards
Ron
"Visionary Web Services" <(E-Mail Removed)> wrote in
message news:(E-Mail Removed)...
> Greetings,
>
> I am a developer with most of my background being in web development.
> I am now moving into the pocket pc platform. I do not have a degree
> and all of my knowledge is self-taught, so I am very rough around the
> edges. I want to increase my software development professionalism. I
> know that alot of what I do could be done alot better and I looking
> for a resource either on the web or in a book that could teach my a
> better way of doing things.
>
> For instance:
> 1) What is the best way to comment my code?
> 2) What are the best tools to use when designing software?
> 3) Should I use UML?
> 4) What is the best process, from start to finish, of designing,
> developing, testing, debugging and releasing successful software?
>
> I have a good idea of what the answers are but I need that extra bit
> of knowledge to allow me to be more successful. I would appreciate any
> insight that you could give me.
>
> Thank you for your time and have a great day.
>
> Jason Cochran
> Visionary Web Services