It's your first programming assignment, now what?
sites.google.com
sites.google.com
This is great advice! Programming is the "how" to accomplish a "what". Many of us don't spend enough time on the "what" to do the best job we can on the "how".
OP provides more recipes than theories. Great post!
EDIT: ...or just don't care.
UML becomes very important if your project generates its code from it, as quite a few companies do. This means you may not be able to start coding at all until the design is in some state of finality.
Meanwhile I still feel that the very idea UML can be useful, at all, is utterly perverse. The whole idea stinks to me.
This also gives you the great benefit of mandating a comprehensive design phase. Once a model is complete (whatever that means in a given project) and reviewed, the rest of the coding is often trivial.
I also find that the mere act of learning UML is a tremendous education in architecture, even for developers who are naturally good architects.
UML modeling tools will generate code that fulfills your model. You'll get more-or-less complete headers, with your objects and method prototypes, and you'll get implementation stubs. If your design is sound, then the process of filling in the guts of the implementation can be quick and straightforward (ideally, but I find this usually pans out in practice).
If your project requires code to come from UML, then any architectural changes are made in the UML tool, not directly in code. This means that the model is always accurate. In my company, the models are the primary documentation; if you need to know how a module works, you can look at the model and see every object, attribute, and relationship, both within the module and to other pieces of the project. And unlike every other piece of documentation I have ever seen, these models are guaranteed to be accurate, because they literally write the code.
A process like this requires you to think -- a lot -- about the design of your program before you even open a text editor or IDE. That's what I mean by a mandatory design phase.
My advice is : bite that bullet. Work like a demon and spend your evenings building the infrastructure needed to produce a working piece of code. Spend your day time hours building code that is just good enough to demo. Talk to people and get feedback, but avoid giving your immediate superior the idea that you're going behind his/her back.
Working like this blows, but do it for half a year to a year and suddenly you're an experienced developer.
Now move to a different location.
(If you're lucky enough to land your first real-world assignment in an environment where there are experienced seniors to consult and you have an existing build and test procedure, I would give different advice.)
It's funny how that first assignment can influence your career path...