I will be the first to tell you, I like efficiency. I like it when things just work and everything chugs forward. The presentation I did at Iowa Code Camp was related to that since I get relatively very little time to write. So, I do a lot to make sure those 10-20 minutes are the fastest things I can write.
Some of it comes down to planning ahead, but others is just doing more with less.
At work, I just finished something that my obsession appears to be benefiting others. When I started, we had a process for getting a new code base. It was somewhat long and had a lot of manual steps including restoring databases, copying files, making changes. It took about an hour to get everything set up.
So, developers would get out of sync simply because it was a lot of work.
I get frustrated if I have to do something three times in a row. At first, I just created a script to run a few things in batch file, but then I found the power of PowerShell. Now, I'm a Linux user at heart and a Perl programmer at the core. I'm also Damn Good™ at .NET languages. So, PowerShell was a god-send (except that I dislike the ascethics of the language and it doesn't require semicolons).
I started with just a little thing. Install the database, run some scripts. Then added in copying files. Making changes. Slowly, I built up a system that eventually got to the point that I would type one line, hit return and come back twenty minutes later and everything was done (we got much faster machines during this time).
I talked about it for a few months and then… someone asked for it. I polished it up and in a bit of free time, got it running. Took me an hour to set up their computer. I went back and fixed the bugs I found. Another developer asked. Only took twenty minutes. I fixed a few things. Added another of my pet projects that was blessed last year as official.
Another developer asked. Ten minutes.
Another. Still ten, but mostly because I explained how to customize everything. I had a meeting with the rest of the developers.
And then, I got compliments. I was making people's lives easier. The painful process was a lot less painful and they were happy.
I still have improvements to do on the program. Little things to make it work just right for everyone. But, when I wrote this, I paid attention to how everyone worked. I tried to write something that was flexible enough to cater to everyone else's quirks and not just my own. And… I made their lives easier.
A long time ago, I was a cocky bastard of a programmer. I thought I was the universe's gift to bits. I learned otherwise and I'm glad I did. There really is nothing to compare to the high of helping others. I love when they say "this is so easy" instead of watching them dread it.
So, for those curious, the script did the following:
- Downloaded the databases
- Decompressed them using the PSCX
- Restored databases
- Set up database sizes, shrank files, connected users
- Copied common files and linked them using junction points
- Copied the release files
- Installed configuration files
- Edited the configuration files to match the setup
- Got the source, either from a label or the latest (had a lot of help with this one)
- Ran the script-based client to do everything else