This post maybe a little “ranty”. It seems in the past few months, I seem to have encountered a number of instances where changes to the database were made without a Change Request. Which has sparked a few conversations with developers over why there is a need for change control in the first place. Not to mention the one vendor who just arbitrarily logged in, made change, and then lied about the changes when called out. While this isn’t unusual in the sense it never happens, it does seem to reflect a pattern.
I’m not sure if it’s the Spring weather, kids getting out school, the impending solar eclipse, or what. But I do know, this rash behavior needs to stop forthwith. The purpose of Change Control is to make sure all changes are documented, both for troubleshooting and audit purposes. It also is a great way to communicate to other teams/business units that changes are going to be made to a system. It also gives those other teams/business units a formal method of validating your change or even rejecting it.
That’s right, water torture. Water torture should be used on anyone that violates the tenets of change control. Any willy nilly change, any configuration or schema alterations should be announced and vetted in a formal process. Why such an extreme method of punishment? Because it fits the crime. Have you ever had a stable system just start performing badly, or data go missing like cigarettes on fishing boat? Only to troubleshoot the issue and discover someone made a change and didn’t 1) document it and 2) let people know he was going to do it? Ever spent hours/days working problems like that? It can all be avoided by using Change Control.
Yes, it adds steps. Yes, it may add a meeting. It’s still better to add the meeting and lose the minutes to paperwork than to lose hours troubleshooting blindly. Especially if the party responsible suddenly goes home for the weekend/vacation. Yep….water torture. That’s time you’re not getting back, that’s stress you didn’t ned to endure. It doesn’t matter if you a company of 25 or 25,000, you should be using formal change control processes. For no other reason, than it helps stabilize your environment as well as tell you exactly what is going on with your environment.
Failure to use change control kills kittens. You’re not a kitten killer are you?
So after posting yesterday about struggling to keep up with SQL information, I got to thinking about how I could actually solve the problem instead of just complaining about it. I didn’t come up with grand, earth shattering Kabooms. What I did come up with is a system that I think will be an easy way for me to keep up with everything, while not getting too over loaded.
I’m kind of bad about keeping my eye on the feed. It’s easier when I have the Tweetbot app on my Macs. At work, it’s blocked so watching the phone is kind of a PITA. But I try. The SQL community is great about using it as a communication platform. And every once in awhile it helps me blow off a little steam. Some where on Twitter is a response to Brent Ozar’s Baby got Big Int lyrics. Ya, I was feeling a little punchy…I’m not sorry. Besides, it’s a great medium to interact with people you probably wouldn’t otherwise get the opportunity to engage with. Sadly though, it doesn’t make my replies any funnier. Ah well, I can only do so much.
Blogs and Articles
I use feedly as my RSS feed editor, which I’m sure a number of people do. Although, I have to admit, I have been using it poorly. I have a number of separate sections and I would go through each section trying to skim the titles and see what looked interesting. This works great for the news section I have, but not so well for the SQL sections.
My problem with the SQL sections is I have an aggregate section that has stuff like feeds from Redgate, SQL Server Central, etc and then a SQL Blog section. So sometimes I get dupes. So what I would do is jump between the two, reading the oldest articles that were about to fall off. This is of course, after I would just try to get the unread number done. I wasn’t getting much out of this approach except stress. So here’s what I’ve done to change it. I just start at the top of the All section and go. If I don’t have time to read an interesting article, or if it requires more technical thought than I have time for at the moment, I just save it to Pocket for later. I am going to work on the articles as I have time in the morning. As far as Pocket goes, that’s going to be a Friday endeavor.
Webinars, Videos, and Podcasts
So I try to keep up on the Pass webinars, the group by webinars, and other videos that I find. It’s a lot sometimes. I’ve started to let them slide if I can’t watch them during the day and go back to their YouTube channels when I have time. I try to work through a couple of these a week. What I have also been doing, is try to bemore selective about what I’m watching. Like if I’m working on learning indexes, then I try to focus on just index videos. Of course this isn’t always possible.
Podcasts I work on when I go for a walk, at the gym, or in the car. Seeing as my wife isn’t a big fan of technical podcasts, I’m limited to just when I’m alone. However, these are bit easier because I can just let them go in the background. So there are times I have them going when I’m working on busy work. That way, if I hear something that gets my attention I stop to listen more attentively or even take notes.
This is the area I haven’t quite figured out just yet. I need to spend quality time, where I can truly concentrate to work on getting better at this. At the same time, I have to find time and not be burned out from a long day or over do it. I think for now, I’m going to work on the dev stuff in the afternoon as I can. I’m trying to reserve evenings for family and such.
One final thought, is I’m going to follow the suggestion of another blogger I recently read. They were going to blog about anything they came across they didn’t understand about SQL or something they just learned about. Kind of the purpose of the blog huh? Kind of what I thought I was doing when I started this but then realized, no I haven’t been doing that like I had planned. So now I’m making that commitment. Anything that I come across I don’t fully understand or happen to have light on type moment with SQL or dev languages, I’m just going to blog about.
I admit, I slid a touch on my weekly blogging goal. In my defense however, work has been focused on a relocating a data center which hasn’t gone quite as planned. So there has a been a couple of late nights. I’ve also been extremely busy working on training goals. Which has been tough in itself. Trying to improve SQL skills, looking at DevOps, trying to find time to brush up on C# and Python….that’s a bit overwhelming in itself, and a separate post all it’s own.
One of my personal and professional goals is to always be learning. Professionally, that means learning more about SQL and development. Both of which are very broad, and very deep, topics. Of late, my topic of interest in SQL has been indexes, performance tuning, and getting better at writing SQL. On the development side I’m still focusing on SQL, but I also want to get better at Python and C#…two subjects I haven’t really touched since completing school. Oh then there is my current obsession with DevOps.
How to do the learning
So how do I learn? Well there’s my Safari sub, then my sub to Brent Ozar training, plus all of those blogs in my RSS feed as well as the podcasts feed to name a few. I have to admit, there are times it feels over whelming. Then there’s the attempt at following Twitter and Stack Exchange, which I don’t do a very good job of. It seems I need to find a better system or take on less. Oh and then there is all the free training from the SQL community to keep up with. SQL Saturdays, monthly PASS chapters, and Brent Ozar’s Groupby.org.
I think what I need to do is come up with a system so I don’t start suffering from burn out. I have had to remind myself that I don’t have to learn everything at once, but find it hard sometimes not squirrel down a rabbit hole.
So if you have suggestions or a system in place that you wouldn’t mind sharing….I’d be all ears. In the mean time though, I think I’m going to have to work out a schedule and system. Maybe par down all the incoming information a bit.
I’m not sure how I ended up on the Dallas DBAs website, but I came across their blog topic How I became a: ________ . The idea of posting up my story resonated with me, so I thought I would share. I apologize for the length in advanced, but it’s hard to lay out a career path that spans almost 20 years in a few sentences.
In my beginning
In my 20s I was working at a Denver trucking company delivering air freight on the Front Range. There were a couple of guys I worked with who were into computer gaming. I forget how it got started exactly, but I ended up hauling over a crappy hand me down computer to one of their houses to play either Half Life, Star Craft, or Duke Nukem. I got so pissed off at the crappy performance of my computer that I decided to get a new one. Only, back then it was much cheaper to build your own. So that’s what i did and that’s what got me interested in computers.
So I worked at it, passed my A+, and landed a job at Mom and Pop computer repair place after my first wife and I moved to Texas. Talk about an education in baptism by fire. Everything was done on a shoestring budget and there were times where I just had to figure it out. For instance, we had a contract to maintenance IBM dot matrix printers (the ones that used blue/green bar paper). I got sent out to a place in Abilene that had a printer running off of SCO Unix, which was a first for me. I remember spending about an hour google’ing how to update the drivers before I got it finished. Although my boss at the time wasn’t impressed, I apparently took too long.
I say dumb things
After that, I moved into Systems Administration when I came back to Denver. I ended up working for an Oracle Consulting company for almost 4 years. Working quite a bit with the DBAs, I remember giving one them some static about never wanting to learn programming nor wanting to be a DBA because I thought being a generalist SysAdmin was the top of the IT hierarchy. It’s true, you don’t know what you don’t know. So Brad or Dave, if you ever stumble across this post…know that I am still eating crow. And sometimes I wish I taken the opportunity to learn Oracle from these guys. They are two of the sharpest people I know in IT.
I stepped away from Microsoft
While I was at the Oracle Consulting company, I occasionally got to mess around with our UNIX systems. One of the truly great aspects about that job, and my boss, was I was always allowed to learn something new. So when I moved to Tulsa in 2004, I jumped at the opportunity to become a Linux Administrator. Yep, another steep learning curve. I got my first taste of supporting a large environment, including a small taste of working with database servers. I was working with Redhat Linux, Solaris, NSK Tandem machines, and MySQL. This also where I learned a little about shell programming, which sparked an interest in programming in general. However, the rotating shifts took a toll after 4 years so I ended up leaving to take a IT Director position.
Now don’t read into that. I was the IT Director of a 5 site school district in Central Oklahoma that was dirt poor. In fact, IT Director is completely misleading. I was the IT Department. Needless to say, I found out I was over my head, and there wasn’t much about that job I enjoyed, when I guy I rode with let me know about a position where he worked. So I threw my resume into the pile, and after a long interview process (which is a story in itself), I took an analyst position at another school district.
Oh I guess I should mention that during my time as a Linux Admin I had gone back to school. While I needed the bachelors to help with the job searches, I figured as long as I was there, taking the Software Engineering track was just natural. And as long as I had already earned a bachelors with a focus in Software Engineering, a Masters in Software Architecture only made sense. Right?
For 5 years at the second school district, and for 2 years at the bank….my life revolved around the AS/400. I helped install and configure a new one, wrote a batch program that ftp’ed our data to a hot spare weekly, learned about replication, how to hang a windows server off of one, and hell of lot other things. I even got pretty good at finding and solving issues using PubLive (as/400 equivalent of Google). There was even an interest in learning Cobol and RPG.
Now what didn’t occur to me until about a year into the Bank job (sounds ominous when I put like that) is I was already a DBA. At the school districts we were always querying to build reports, occasionally updating data, ensuring backups, maximizing uptime, etc. At the bank, not only was I responsible for the AS/400 but also all the databases and applications that connected to it. So I was working with SQL and DB2 LUW as well as DB2 on the 400 itself. I have no idea why it took me so long to realize that, but for 7 years I was a DBA.
Back to Microsoft
Prior to getting laid off from the Bank, I had already started concentrating on SQL Server. I was attending meetings at the Tulsa Pass User Group pretty regularly. I have to admit, I came across that group when I attended the Tulsa .NET user group. I discovered in my undergrad and grad courses, the Microsoft tools and languages came a little more natural to me. It was much easier to work with the .NET framework than to have constantly deal with what seemed like dozens of frame works for Java.
For the past 2.5 years, I have been happily working as a SQL DBA at Denver area hospital. I can honestly say I am very happy with my career and career progression. I took an orthodox path to being a SQL DBA, but every step has prepared me for it. Even my Linux experience and interest in Python seems to be working out in SQL career. And blurring the lines between DBA and database developer isn’t that uncommon. Which means I get to learn and work with all the areas I enjoy about SQL.
I can say sticking my foot in my mouth about my reluctance to learn programming or becoming a DBA has ended up with me learning and doing just that. So Morphous was right, “Fate is not without a sense of Irony”.
T-SQL Tuesday is a monthly blog party that is the brain child of Adam Machanic (b/t). This month the blog party is being hosted by James Anderson (b/t) and is focused on deploying database changes.
DevOps has been a buzzed word in the IT space for a while now. In case you are unfamiliar, DevOps is the conceptual marriage between Developers and IT Operations. The idea behind DevOps is to facilitate communication and collaboration via cross department integration, which is a crude way of saying the barriers between operations and developers are being broken down/stripped. While the concept of DevOps is not new, bringing databases into DevOps is (or rather, maybe to me it is).
From a production DBA standpoint, it can be difficult to wrap your mind around how to apply DevOps concepts to your existing environment. This is where one should perhaps watch a webinar or catch a session at a SQLSaturday. I caught Steve Jones presentation on DevOps at the Colorado Springs SQL Saturday which really helped me wrapped my around it, as well as gave some ideas on how to apply it. One of the DevOps concepts that has really resonated with me is source control.
DBAs have a ton of scripts that are used from report building to performance tuning, and what ever else that they can solve. Over the years, and over teams, these scripts get updated and changed. Source control is an excellent way to keep versions as well as share across the team. It’s an even better way to maintain scripts when multiple team members are working together to develop a stored procedure(s) or large piece of code.
While I am very much new to DevOps and source control. I am definitely working towards understanding its nuances and figuring out how to implement it at the office. I have managed to setup both a repository at both GitHub and Visual Studios Team Services through Dev Essentials. Although now that I have the repositories setup, I still need to find the bandwidth to figure out how to check code in and out via SSMS. Once I have that completed and throughly tested, I can take that information to my team and begin using source control in the office.