I have none of that fancy programmin' education, but I've had some time to start learning it at my new job, even though my role has nothing to do with programming, I just enjoy it immensely.
I made an overcomplicated Visual Basic (don't laugh!) application that reads plain-text SecureCRT or PuTTY log files and finds every instance of the "prstat -a" or "prstat -t" output, picks out the usernames and their associated cpu utilization, and formats it into a very clean output in a rich text box. It also sorts it into a data grid view, so you can copy it into Excel with minimal hassle. It also plots all the data points, with a separate plot line for each username, so it won't give confusing results even if you log out of one network and into another while running the same logfile (unless each network has identical usernames).
The application has almost NO use, but I am irrationally proud of it because it's the first thing I made that I actually
finished. Because it was such a big boost to my ego, I started writing a bash script to do something also very useless, but I'll spoiler it so this isn't a novel:
► Show Spoiler
The bash script I'm writing automatically gathers cpu utilization data, including the top five processes, and records it ever couple of minutes. If the utilization goes over a certain threshold, the script moves into a higher "gear" and begins to record faster, until it's taking measurements about once a second. If it records at the fastest speed for a certain number of data points, it goes into a cooldown mode for a few minutes.
It records this data into two files: a coarse-data file that records slowly, but takes up more space, and a fine-data file that records quickly and only takes up a little space. The filenames include the date, and whenever the day changes, it averages all the cpu utilizations for the day, and outputs that into a file for the running 24-hour averages.
If it detects the cpu utilization exceed 99%, or the logfile exceeds a certain size, or the script itself takes up more than 10% cpu utilization (it takes less than 1% under normal operation, but I didn't want to take any chances), or the total occupied disk space exceeds 50%, the script will output an error message detailing the exceeded threshold, and include a full prstat -a output so you can see what was running when it failed.
Needless to say, this is useful to no one, but we wanted to have the ability to few historical cpu utilization statistics on Sun servers (but not enough to spend any money), so this was our most feasible option.
Here's the moral of all this rambling: if you're getting into programming for the first time, playing around with Visual Basic in Visual Studio 2012 (free!) is a great place to get a little bit of a foundation. It's safe and forgiving enough that you can learn the basic terminology and thought processes. Once you get really confident in your basic skills, try to do some Bourne shell scripting.
After you recover from your internal injuries, give Bash a whirl, it's much less of a pain than Bourne, but also less portable.
Once the crushing depression wears off, go back to Visual Basic. It's ok.
When I went back to VB.net to lick my wounds, I made a GUI for the DOS File Comparison utility that comes with windows, because I like doing pointless things that apparently no one else on the internet has ever tried to do because they're of incredibly questionable utility.