Hi Roger,
"Kramer" here... (or "Fred" or whoever I am today...). I'll try to be brief
and answer your specifics..
Regarding your most immediate goal... the print dialog box modifications...
given that little kids are the end-users here, perhaps you could supply your
own dialog box to Word or perhaps you could write a custom application that
acts as a wrapper around Word - exposing only the functionality of Word the
little kids are to have access to. In the latter case, you could make the UI
as "little-kid-friendly" as you like (or have time and energy/money for). In
any case, this is a pretty clear target, and you could get a bunch of
guidance from the relevant news groups. Be sure that if you go for your own
custom desktop application, that you understand the requirements of .NET.
Specifically you will need to have the Common Language Runtime (aka "CLR")
installed on each desktop (I know, I can already hear others piling on to
say that this isn't the only alternative), but it is the most common and
likely scenario you'd be looking at implementing. So perhaps regarding
"where to start with .NET", you could look at the requirements (hardware and
software) for installing and running ASP.NET desktop applications and Web
applications (two very different sets of requirements - you'd do good to
know this info if you don't already). The CLR is big, and the PCs in your
school will need to be able to run it and support other minimal
requirements. If they can't and won't for the foreseeable future, then that
will make a bunch of decisions right there.
Regarding "... I would like to create a script that tags machines when they
connect to the network..." As I'm sure you are well aware, Active Directory
with Group Policy Objects correctly designed and applied correctly can do
practically any of the sorts of things you describe. That said, this is
typically a whole different skill set than you will find with a competent
programmer. More on this later...
Regarding "...it would be nice to create a delivery tracking mechanism...":
This sounds like its own new application - perhaps integrating with an
existing order processing system? In any case, the way it's presented, I
suspect this would be a brand new "from the ground, up" application that
doesn't integrate with any other systems (at least not yet). It could be
implemented as an ASP.NET Web application (would make sense if it's accessed
from multiple geographically dispursed locations and you have a secure
intranet), or a Windows Desktop application (excuse me, "Windows
Application" in current parlance) if you want a richer UI and it's accessed
pretty much from PCs on one LAN. Which type of app you chose has significant
impliations for which skillsets you focus on first... more on this later...
Let me be sure I'm clear on a few "facts" before proceeding to make
recommendations.
1. You have a rather large part to play in the future direction of your
current employer (which is a K-12 school).
2. You have a few immediate needs (network/Active Directory/GPO-oriented
problems, and a couple of applications that could be created in the
short-term.
3. You just want to learn, and have no experience programming (nothing
beyond tweaking a script here and there; you're right, that's not
programming according to most full-time programmers)
4. You don't know where to start (or you see way too many possible starting
points), thus your question to the group.
5. Unless I'm wrong (and I'm never wrong : ), you don't have anyone telling
you what you need to do on your job - other than you need to come up with
some solutions that people are happy with, and according to some generally
reasonable timelines (but no one lighting a fire under your rear).
Given your situation and objectives, I'll suggest a three-stage approach:
Stage 1: Learn what's possible with .NET.
Not in a general sense (".NET is going to save us from all of our sins");
but in a very specific sense. That is, learn, at a very high-level, what
each of the types of .NET applications are that you can create in Visual
Studio.NET; they are: Windows Application, Class Library, Windows Control
Library, Smart Device Application, ASP.NET Web Application, ASP.NET Web
Service, ASP.NET Mobile Web Application, Web Control Library, Console
Application, and Windows Service. DON'T Spend more than an hour or two
reading up on each one... just be able to explain to yourself in plain
English what each one does - and what kinds of problems it is designed to
solve. When you are done with this one exercise, you will probably to be
able to know - for yourself - that you only need to EVER concern yourself
with 2, maybe 3 of them (and can then safely ignore the rest). Also as part
of "Stage 1", learn what the hardware and software requirements are for
installing each of the application types just listed. Read up on some
general interest articles on .NET - read some real-world case studies just
to see what people are doing out there with .NET. For fun, read up on some
comparisons between .NET and J2EE (you'll find what smacks of an ongoing
religious debate between the virtues of each.) Be sure that in your .NET and
J2EE research that you take note of the licencing costs of J2EE components.
Oh, and also compare the runtime performance differences where you can find
any. The one's I've seen are astounding. Finally, to wrap up Stage 1, take a
few hours to learn the fundamental differences between Web programming and
desktop application programming. Web/Internet applications have their own
unique set of challenges (particularly paying attention to the "stateless
nature of the Web"). Anyway, the whole point of this so called Stage 1 is to
get an idea of what's going on and what's possible with .NET - but very
specifically in terms of the different types of applications.
Stage 2: Decide what to focus on.
You'll never be very good at anything if you try to know it all. There's
simply too much already, and more is being added to the mix every day. Part
of the point of Stage 1 is to put you in a position to intelligently decide
what can be *safely ignored* by you given your current and long-term
employment situation. When you decide what your focus will be (and you
really do need to decide this at some point if you are ever going to create
any non trivial solutions), then I strongly suggest that you fully immerce
yourself in whatever that particular area is. The 'full immersion" would
begin by you first identifying all the sources of information relevant to
your area of inquiry. There is certainly the MSDN libraries, varous news
groups, Web sites, training classes at the local J.C. or university
extension, self-paced training from companies like AppDev, etc. Take some
time to acquaint yourself with each. One source you rarely hear of is that
you can hire a consultant to come in and train you. I've had clients
approach me to simply work side-by-side with their programmers to help them
up the learning curve as is specifically relevant to their company and
current projects. If you have the budget, bring some top-notch developer in
to work with you for a couple of weeks (if you'll find one willing to commit
to such a short-term deal). Finally, it sounds like you are already have
some working knowledge of networks. If you didn't have that, then I'd
strongly suggest that you learn the basics (given that almost any non
trivial solution you will need to create will operate across a network).
Once you have gone through Stage 1 and 2, then you'll be in the position to
answer your own questions about the print dialog and the order tracking
application... at which point you can proceed to Stage 3:
Stage 3. Build a real-world solution
Just do something; there is absolutely no substitute for actually completing
a non trivial real-world project. This is where your real expertise is
gained.
One last thing...
....you never mentioned a database: I'd strongly recommend that whatever
types of applications you decide to focus on, that you include learning (1)
relational database design in general and (2) SQL Server in particular. No
matter what types of applications you decide to become an expert at, any/all
of them will likely need to store data somewhere - and being that you are in
the Microsoft world, SQL Server is likely to be the database of choice.
Whatever you do, don't ignore the topic of "relational database design" -
independent of any particular database (Oracle, Access, DB2, SQL Server). A
good book to start with if you are new to that topic is titled "Database
Design For Mear Mortals". At least cruise through that book if nothing else;
at a minimum, read the chapter on bad database design. If you see yourself
in that chapter, then you'll automatically want to read the rest of the
book. Knowing the basics of good database design should be a 'must' beyond
anything else you do. Put another way, if you start off with a bad database
design, then your whole solution is screwed from the start.
Okay, I actaully tried to be brief!
Good Luck
- Kramer (I mean Fred).
MCSD, MCDBA, MCSE, MCSA