OK, self assessment
time. I'm a 45-year-old software developer, working almost
exclusively in C# and Windows Forms. I like my job, my reasonably high
responsibility level, my coworkers. Assuming that my workplace doesn't change
much in the next 10 years, I hope to still be working at the same
place I am now when my youngest graduates high school.
We had a VAX in
college, and that was mostly what I used: a mainframe that seemed
reasonably powerful for its time (was it? I'm not even sure), but
would be put to shame by most of today's laptops. I got a job at the
help desk. People would come in with random problems, and I'd try to
help. I knew BASIC and Fortran when I was hired, and not much else.
There were a handful of things we were trained for specifically, like
creating accounts. After that, though...maybe you knew the answer to
some questions, and maybe you didn't.
So I poked at
languages. I took classes that used Pascal. I picked up some other
languages on my own, like C, Prolog, Lisp, TeX (yep, it's a full
language!), and C++. Most of them I only picked up well enough to
write simple programs. C was the exception – I knew everything that
was in the standard library, and used this as my native computer
language. I learned things that people had questions about, like the
editors people used on the VAX, the language behind one of the
editors, DCL (the command line interface for the VAX), a graphing
package, and a statistics package (and just enough statistics to use
it).
There were other
machines around campus that I didn't use so much: Macs, PCs, and Unix
machines. I didn't learn much about them while I was in school.
Since then, I've
worked on Windows in all my jobs. I learned a fair amount
incidentally, and picked up a reasonable amount of knowledge. C# is now my native computer language, and I know it pretty well. I'm a
better developer than most. However, I haven't picked up as much as I
could have if I had been more actively seeking improvement.
When I thing about
things that I've learned, it strikes me that at the time I didn't
know whether that information was going to help me or not in the
future. I know DOS to a reasonable level, but not as well as if I had
known 20 years ago that I'd still be using it on and off today.
Several of the languages that I learned I haven't used since learning
them, unless you count knowing them well enough that when we hit them
in a Computer Languages course in college I didn't have to worry
about it. The graphing package? Useless. The stats package? Useless. The VAX, DCL, and the
editors that I used there? Useless.
The trick here seems
to be in two parts. The first part is that you don't know ahead of
time what pieces of information are going to be handy later. I
learned some things in college that were useful, and have built on a
foundation that I'm still using today. The second part is that it
makes sense to focus on something that you think may be useful in the
future. A cheap way to do that is to put some of your effort into
something that hasn't changed much over time.
While the VAX has
pretty much died off, Unix is still around in a bunch of flavors. OS
X is a Unix-based OS, and Linux is a free Unix clone.
So here's my plan
for the year (which I've already started on):
1) Install Linux as
a virtual machine on my PC.
2) Learn Python.
3) Learn one of the
text editors for Linux.
4) Use source
control even when poking around on simple tasks, even if it means
replacing one trash file with another.
5) Document what I'm
doing, more or less. Explicitly evaluate what I think of Python, the
text editors, etc. My opinions will be ill-informed at first, but
they'll hopefully evolve as necessary. Sometimes it's not as easy to
evolve. For instance, you need to pick a text editor: it doesn't make
sense to me to learn VIM and Emacs well. I've already chosen a
“winner” on this one, which I'll discuss in another post.
For each of these,
I'm going to go through a book (probably an online book) or document
from beginning to end. I don't want to pick up a fair amount and then
say, “Hey, look! There are all these shortcuts that I never knew”
two years later. I'm not looking to race through anything: this isn't
supposed to be a checklist, but things that I'll have as solid skills
when I'm done.
No comments:
Post a Comment