58 Search results

For the term "management".

What’s your mantra?

I worked really hard to line up the window so I could get that nice illumination look.I’ve been busy lately making the shift from “hands-on engineer” to “hands-off manager”; it’s been tough, because I’m not accustomed to stepping away from a problem and letting someone else figure it out.  Even though I’ve got an education background, and have been (inconsistently) involved in technical communities helping other people solve problems, I’ve never had to balance the responsibility of making sure that a job gets done with the responsibility of allowing someone to “learn from their mistakes”.  It’s harder than I thought.

As part of my management training, however, I’ve been focusing on laying out principles and guidelines rather than specifics; for example, instead of saying something like:

We need to make sure that John Smith has limited access to that database; can you do that for me?

I’m trying to say something like:

Our databases need to be secure, and that includes differentiation in access based on job roles.  Can you verify that all accounts are set up using that model?  If there are exceptions, can you document why?

The idea is that a) I need to trust that the people that work for me know how to do their jobs, and b) I need them to start aligning their practices with the principles that I think should drive our work.  I realize that last statement sounds a bit tyrannical, but in reality, I trust my team to help me develop those principles.  However, it’s my job to provide the direction, and their job to keep the boat afloat.

As part of this exercise, I’ve begun to realize that I’ve had a worldview for several years that I’ve always fallen back on when it comes to solving problems.  I’ve never thought of it as a mantra before, but the truth is that the following statement sums up my approach to most problems.

Simple is best.

When I encounter a challenge, and am forced to figure out a solution, I always fall back on the thought that a simple solution is usually the best one.  When I’m face with deciding between option A and option B, I’m usually going to lean toward the one with the fewest moving parts, even if it doesn’t address every possible outcome.  I’m a big fan of things like the 80/20 rule, and Occam’s Razor; it’s far easier for me to tackle problems in bite-sized chunks.  It’s the first principle by which I evaluate any solution that my team presents; if it’s not simple, it’s not manageable in my opinion.

Not everyone I work with is oriented toward simplicity; one of my best friends (I’ve worked with him for 9 years) often chooses beautiful and thoroughly complex solutions to problems.  I don’t know if could express what his mantra is, but I’d bet it would involve something about slicing and dicing problems into small pieces.   I also work with another guy who loses me in jargon in every discussion; he’s very passionate about writing code that covers every scenario, even if it takes 6 months to a year to do so.  I have a tough time thinking like that.

Mantra’s can be positive or negative.  For example, two of my former managers had different mantras that they relied on; one manager used to say:

Never make a person do what a computer can do for them. 

That helped guide us when making a decision on work priorities; if you’ve got someone cutting-and-pasting information from your application so that they can send an email, and they have to do that on a consistent basis, then you probably need to write some sort of hook into your application to let them use their email program from your app.  If you’re hiring staff because of the uptick in workload, then you should probably figure out ways to reduce the amount of work using computing power.

The other manager (different company; different time in my career) used to chant:

Whoa, whoa, whoa; that’ll delay the project.

which made us all think that that the project was more important than actual details.  It was a joke; the slightest interruption or shift in perspective would tip the entire apple cart.  His inflexibility was legendary, and ultimately led to the loss of his entire staff (before he was eventually sent packing).

What’s your mantra? Do your teammates or employees know it? Does it contribute to the work effort, or has it become a tired joke among your colleagues?

#TSQL2sDay 28–Jack of All Trades, Master of None

This month’s topic was chosen by Argenis Fernandez (blog | twitter): "Jack of All Trades, Master of None?".  It’s interesting to me lately because I seem to keep encountering blog posts and articles that ask some variant of this question.  I’m not sure if it’s spurred in part by the recent release of SQL Server 2012 (which is going to change a lot of the ways we manage data), or if it’s something in the collective waters bubbling under the Internet.  Or perhaps, it’s just the fact that I’m trying to define myself in a new role at my work.  Don’t know. 

I’ve always been a data person; one of my first jobs in IT was working for a forestry agent doing data entry; my job was to take the handwritten note cards from the tree counter, translate their coding system into digits, and enter it into an old Macintosh computer (this was the late 80’s, and Macs were super sophisticated at the time).  These numbers were important; they represented an estimate of how much timber (and what kind) was on a property, so that the value of that property could be accurately assessed.  It had nothing to do with SQL; wasn’t really even any sort of programming.  Just look at a card, mentally transform the code into a number and tree type, and punch it in.

Later, in college, I got involved in doing social science research; this eventually led to a position as in public health & communication research.  Still digging on numbers; I was using SPSS at the time.  I went to bed at night dreaming of statistical relationships and discovering new stuff.  When our department encountered resistance from the IT department for managing one our studies, I started hacking into Microsoft Access to build a contact management platform.  This was a transition point for me; I went from entering numbers to evaluating numbers to finally programming.  However, it was always data.

I made a career change and dove into true IT work shortly after that; my job title said “Access Report Developer”, but I became the DBA (because there wasn’t one).  I loved SQL 2000, but when the IT department at that company shrank, I became not only a programmer, a report developer, and the DBA, but also the guy that fixed printers.  When I had an opportunity to jump ship to another company to become strictly a DBA, I took it.

I’ve been here for 9 years, now.  In that 9 years, I’ve been the DBA, a database developer, a data architect, and now a manager.  Although I’ve primarily worked with SQL Server, I’ve dabbled in mySQL, XML and Visual Basic.  I’ve looked at backup jobs and maintenance plans, DTS and SSIS (and other solutions); my T-SQL is strong.  I used to think I was a specialist in database development, but I’ve come to realize that there’s people that are a lot more specialized than me.  I’ve also come to realize that data without context is meaningless.

I guess I’m growing up a little; when I was kid counting trees, I didn’t really care about how efficient the system was.  I was just earning spending money at a job that was better than mowing the lawn.   When I was doing research, I realized how important my work was, but even then there was little that I could do to change long-term outcomes; I was just an analyst.  In IT, I could finally get to a point where I could take the numbers that I saw and do something about it.  I’m just not collecting data for a reason; I’m using that data to help make decisions that make my company more profitable (which ultimately leads to more money in my pocket). I collect, I analyze, I interpret, and I react.

So what does this little trip down my history mean in terms of the post topic? For me it means that I’ve got a niche, but it’s a pretty big one.  Most of work is done with a certain tool, but the skills I’ve learned along the way don’t restrict me to that tool.  I’ve worked with people who get the specifics of the platform a lot better than I do, but miss the big picture; I’ve also worked with visionaries who get lost when I discuss normalization and efficiencies.   I’m neither a Jack of All Trades, nor a Master of just One.  I’m just a data guy, and I like it.

Agile Database Administration

Last night, I had the pleasure of presenting at the Greenville SSIG; my topic was Agile Database Administration, and it was a presentation that I had pulled together at the last minute.  It still needs some refinement, but overall I thought it went pretty well.  However, I was surprised at a couple of things:

1.  Out of my (admittedly) small sample of attendees, only about 2% had encountered Agile methodologies (like Scrum) in their work, and

2.  Even fewer of them understood the challenges that Agile is supposed to solve.

I decided that in order to improve the presentation, I would try to do a little more research; since I own a blog, this seems like the perfect place to synthesize some of my thoughts on the subject.  As I did in my presentation, I’ll try to skew the discussion toward data people, but there may be some challenges along the way (since much of Agile focuses on management of development tasks, not administration or service-oriented tasks).

Begin at the beginning….

The Agile movement begins with the Agile Manifesto, a short statement of belief written by 17 software developers during a weekend at a resort in Utah.  The entire manifesto reads as follows:

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

There are twelve basic principles associated with the manifesto; I’ll tackle those at a later post.  The concept of the manifesto is clear, however, in that the goal is to manage tasks through a focus on relationships and the business environment as opposed to strictly moving from point A to point B.

As a sidebar, I do find it quite funny that the Agile Manifesto webpage appears as if it was thrown together after a weekend of drinking and philosophical conversations at a ski resort; it hasn’t changed in 12 years.  I’m not sure if that’s intended as a silent testament to the longevity of agile code or not.

It should be noted that many agile methods actually began before the manifesto; the manifesto was not intended to spawn new methodologies, but rather to provide a common framework for several existing methods.  It’s a philosophy, not a method; you have to think agile before you can be agile (I’ll pause for a minute to let that sink in… ready to move on?)

Let me try to define the agile movement by what it is not:

  • Agile does not mean a particular method of development; rather, it’s an umbrella for several different methods.
  • Agile is not represented by a set of tools; but you should use tools in an agile way.
  • Agile is not an excuse for sloppy work; instead, it’s an attempt to focus on quality throughout development.
  • Agile is not a solution for every organization; the agile philosophy represents a change in process which must be endorsed by the organization in order for it to be successful.

Jumping the candlestick…

The term agile means “nimble”; it’s the ability to quickly respond to a changing environment.  Most agile adherents recognize that processes such as lengthy requirement gathering sessions can cripple the development process; if your organization spends a lot of time defining what it needs up front, the business environment can change before you get it developed.

But what about database administrators?  Most admins I know have mild cases of ADHD; database professionals are the master of change.  Need a query to see what’s happened over the last year?  No problem.  Backups not working? We’ll look into it.  Server overloaded?  We’ll deal with it.  Printer not working?  Not my department, but sure.  Developers too slow in getting a report to you?  I can do it.   We’re already agile, right?

Wrong. To be agile doesn’t mean you leap over one flame to another; it’s finding a method of getting things done that is responsive to business changes while solving business problems.  If you’re constantly hopping from one issue to the next without figuring out how to keep the fires from occurring, you’re eventually going to get burned (see what I did there?).  If your servers can’t handle the queries your users are throwing at it, you can tune the queries but you may need to look at a hardware solution.  If your boss keeps asking you for the latest numbers, it may be faster to run the query for her, but writing a report (or showing her how to write a report) will minimize the long-term problem.

Thinking agile means thinking strategically; be nimble (solve the immediate problem), but be clever (address the root cause).

Where do we go from here?

I hope to start pulling together a few blog posts on various agile methods and how they relate to the agile philosophy over the next few weeks; specifically, I hope to talk about how the agile philosophy is influencing my database administration management style.  Until then, here’s some links for you to consider:

http://en.wikipedia.org/wiki/Agile_software_development

http://www.agilemanifesto.org/ (Be sure to read the principles on the next page).

http://www.agiledata.org/essays/dbaSkills.html (lots of material here; I need to revisit it

Stuff in the FROM Clause: Interfaces

IMG_0323[1]Finally wrapping up this blog series (while standing at my mobile office waiting on my daughter to finish track practice); I’ve previously discussed four different categories of database objects that can be used as the source of various SQL statements:

Base Structures

Virtual Structures

Temporary & Semi-Temporary structures

I want to wrap up with the following category: Interfaces.  Interfaces are methods by which queries can be executed on a remote server (and I use that term to mean remote to SQL Server, not necessarily remote to the host). and the results returned for consumption by a SQL statement.   There are basically three interfaces supported by SQL Server.

OPENDATASOURCE

OPENDATASOURCE is an ad-hoc method of connecting to any OLEDB provider; below is a bit of sample code from MSDN:

SELECT *
FROM OPENDATASOURCE(‘SQLNCLI’, ‘Data Source=London\Payroll;Integrated Security=SSPI’) .AdventureWorks2008R2.HumanResources.Employee

If you’re familiar at all with server naming notations for SQL Server, you can easily identify the four-part schema above (Server.Database.Schema.Object).  Note that OPENDATASOURCE is intended for limited use; heavy connections should consider using linked servers to take advantage of security management (particularly in the case of SQL Authentication).

OPENROWSET

OPENROWSET is similar to OPENDATASOURCE; it’s an ad-hoc method of calling data from an OLEDB provider.  The primary difference is that OPENROWSET supports a querystring, as well as pulling data from a single object.  This allows you a great deal of flexibility because you execute complicated queries using remote resources, and then only return the data that you need.  OPENROWSET can also be used for BULK insertion of data

OPENQUERY

OPENQUERY is intended for use with linked servers; the purpose is to allow code to be executed on a remote server first, and then the affected result sets being used on the local server.  In order to use the OPENQUERY method, you must first define a linked server, and then use a query string to do the actual heavy lifting on the other box.

Interfaces are relatively easy to understand and use, but they need to be carefully evaluated for each situation.  For example, OPENDATASOURCE allows you to quickly retrieve data from a single object on a remote server, but that means that all of the data is retrieved to the local instance.  If the remote server is across a network, then you have to deal with network latency.  OPENROWSET and OPENQUERY provide a work-around (through the use of a querystring), but the querystring can not be parameterized, so it’s a bit clunky to work with.  However, for quick and dirty movement of data from within T-SQL, interfaces can be a valuable tool at the right time.

New Year’s Post 2012 (the where-have-YOU-been post)

OK, so around November last year, I fell off the grid.  Stopped posting in the middle of a series.  Just walked away.  And now, like a bad high school relationship, I’ve popped back up and begged you to start reading my blog again.  I swear I had good intentions, and I promise I didn’t cheat on you with that other set of readers; you know, the ones with the short skirts and the car…  I digress.

November and December were a career-changing period for me; things happened that were good, but left me extremely busy at work.  I chose to spend my free time focusing on family time, and I let other things (like my blog and my contributions to the SQL Server community) slide.  Since it’s now a week into January, I thought I would start anew, and try to kick off the year on a good foot.   Instead of making specific resolutions (which I’ll probably break), let me pick a direction and head that way.

First, I want to continue to focus on my family. Last year was an amazing year for me; I got married during the summer, and I had to relearn some things about a healthy family structure.  The first rule is that it takes more than just time; it takes an effort to communicate about things, including those things that are not always easy to say.  If you’ve followed my blog at all, you know that this is my second marriage; my first marriage ended in part because I stopped participating.  Hopefully, I’ve learned from that.

However, I didn’t just bring me into this new union of souls; I have two teenage daughters that I’ve brought along with me.   They need time to get to know their new extended family as well (they now have 10 grandparents, and uncles, aunts, and cousins), and I need to make sure that I keep investing my time in them as well as my wife.   I love these three women very much, and I need to do everything I can to make sure that they know that.   I guess I’m just stating that to lay out the framework for the principles that are following.

Second, I need to focus on my new career.  I got promoted to a management position in mid-November.  I’ve worked for this company for 9 years, and although I’ve been the senior member of the development team for most of that time, this is my first management position ever; I’m now the manager of a newly-formed team of Database Administrators, which means it’s a strange new world for me.  I’ve got to learn to do things a little differently; my goal is not to solve problems, but rather to empower others to solve problems.

Third, I want to be more diligent about my contributions to the community.   This means that I need to lay out specific time for blogging, and other community activities (I’m the treasurer for AtlantaMDF, as well as the organizer for the Eleventy-First SQL Saturday).  I also need to be more focused in my activities; I’ve spent a lot of time recently on StackOverflow, and I probably need to be less obsessive about that; I need scheduled activities, not hit-or-miss.

 

So there you have it; my simple return to blogging and my New Year’s “resolutions” all wrapped up in a simple package.  I’m still going to have to find time to finish the last series I started, but I’m hoping to find some time in the next few days.  Take me back, just one more time. Please?

#msteched skydiving into the cloud

Here’s a first for me; I’m live-blogging from a keynote.  Diving straight into it, so please excuse the sparseness of the notes.

Robert Wahbe trying to lay out the vision for the cloud from Microsoft; trying to establish that the future is the cloud.  I hate buzzwords, but I think the point of the metaphor is to draw together private vs public application development.  If you build your internal private apps as a private cloud, it should be easy to move to a pubic distributed architecture.

Factors driving the move to the cloud:

  • Extension of existing applications
  • large data sets
  • high perf computing
  • events
  • marketing campaigns (high spike traffic)

Talk about Travelocity’s use of the public cloud.  Focus on scalability, and new products to handle the traffic.  Capacity on demand is the buzzword that they use, and I wish I had a server room like they just showed. 

How easy is it to do this is the question they raise?  I’m still a skeptic.  Biggest problem is not a greenfield scenario, but migration from an existing infrastructure.  Let’s see if demo guy (I missed his name) can convince me. 

Ooh, a Contoso application; I’ve been stuck on AdventureWorks for too long.  Somebody bring back Northwinds.

Ooh, we all need AUTOMATION!  AUTOMATION is what we need! Really?

OK, the VMM service deployment looks cool.  

OK, ADHD just kicked in, and I’ve heard blah, blah, blah for the last couple of minutes.  Apparently, Systems Center will let you do all kinds of one-button stuff.    Now, can I get management to convert from an app that had no clue about that 10 years ago but is still critical to my business?

Now, SQL, and Sharepoint with Amir Netz.  Project Crescent looks interesting. Wow, I like the animation.  I think there will be a lot of future in Management of Business Analysts.  Too much information can cripple a company just as bad as too little; there’s going to have be some training in “what are good questions to ask?”  We’ve finally got the tools to tell us “42”, but do we understand our businesses well enough to understand how we got there?

Average number of devices is 4, so a lot of us are now carrying 6 or 8.  I have two on me right now (work lappy and iPhone), and two at home.  I feel geek-deprived.   Must buy more gear.

Windows Phone 7 interface is nice, but I thin Microsoft has a long way to go to win the smartphone wars.  I really don’t want to go back to carrying multiple devices (smartphone for personal, and smartphone for work).   

Just realized that my butt is starting to hurt; that’s a good indicator that a keynote is running long.  Time for the mid-keynote stretch. 

I’m wondering how many butterflies the Kinect guy has right now; the first few gestures slipped a little.

Second half of the keynote?  Yeesh….  I hope there’s a power plug in the building somewhere.

I chuckled a little when the guy said that “if you’re an ASP.NET developer, you can write Sharepoint Applications.”  I think of all of the swearing that my ASP.NET developer buddies do when you mention Sharepoint…

OK, I’ve done as much as I can for now; I’ll try to blog more today around the sessions. 

resolution check-up

Wrapping up April, and thought I’d touch base with myself (“Hello, me!”) and see how I’m doing on my resolutions:

Professional

Technical Skills

  • I want to learn something new every month.  My goal is to tackle something challenging, and be able to understand the ins and outs of it within 30 days.  For example, I want to finish tackling XML (including XSD’s) in SQL Server.

Meh.  This month sucked.  I had both my personal and my work computer blow up, and adding in the wedding planning stuff, I fell way off track here.  Time for a kickstart.

  • I want to upgrade my certifications by the end of the year; I’ve been dancing around the MCITP exams for a while, and I need to finish them.

The good news about having a work computer down is that I actually spent some time studying for these.  I need to find more time, but I’d love to finish the first one up by the end of next month.  Studying for the Database Development one made me realize that there’s a lot of features I don’t know as well as I thought I did.

Presentation

  • I want to make at least 6 technical presentations by the end of the year; last year, I managed to eke out 8, but given some of the recent changes in my personal life (see below), I think 6 is reasonable.

Did two presentations at Columbia, SC SQLSaturday, and they both went well.  I’ll be presenting at the Data Architect’s Virtual Chapter’s meeting in May, and I’m submitting abstracts for PASS Summit.

  • I will blog at least once a month about some technical topic (see the first bullet point under technical skills).

<crickets>

Management

  • I will understand the SCRUM methodology, and learn how to implement it with my team at work.  Although I’m not a team leader, I AM the Senior Database Architect, and I need to code less, and teach more.  This is my year to do so.

OK, so I’m a scrum leader, but I haven’t really focused on stepping up in my current position.

Personal

Health

  • I’m getting married again this year, and I want to look good for my new wife.  I also want to avoid long-term health issues.  I was losing weight last year (until I started dating), and I want to get back on track.  I’d like to lose 50 lbs by October.

Dropped 10 lbs, and plateued.  Sigh. This one is hard.

  • I have apnea, and I’ve been horrible about using my CPAP on a regular basis.  I will use it regularly.

I’m actually doing pretty good with this one; I need more hours of sleep, but the sleep I get now is good.

  • I need to exercise more, so I will find 20 minutes a day to do SOMETHING, even if it’s just walking around the office for 20 minutes.

<crickets>

  • I will drink at least 8 glasses of water per day.

Does Diet Coke count as water?  Working on it.

Spiritual

  • I’ve slacked off in my religious activities; my faith was nourished by church attendance during my divorce, and I need to start growing again.  I will find a new church in the next two months (my old church is too far to drive on a regular basis), and become a regular attendee.

Boy, did I bomb this one!  Tried a few places, and then wedding showers, vacations, etc, hit.  This one may have to wait until after the wedding.

  • I choose to absorb the goodness from people who love me, and I will reject the poison from those who do not.  I will focus on the important things in life (like my kids, and my future bride), and worry less about the unimportant things (like who’s mowing the grass).

I gave up reading certain blogs for Lent, and I feel much better.  I’ve also learned where my breaking point is, and when to walk away.  I’m happy, and more importantly, I’ve started to recognize when I’m unhappy, and I DO SOMETHING ABOUT IT!

Social

  • I will listen more to my children, my family, and my friends.  I will find ways to let them know I love them.

I’m getting pretty good at this.

  • I will nurture my own friendships; while I love my fiance’s friends and family, I want to bring more to the table than just me.

I’ve touched base with old friends, but haven’t really found the time to make new ones.

Financial

  • My divorce pulled me way off course.  While I’m a long way from being out of debt, I will continue to make strides in that area.  I will pay off at least one credit card ahead of schedule.

I’m paying off a debt on Monday, and I am VERY excited about that; granted, I’ve got a long way to go, but it feels good.

  • I will save more; I plan to find ways to cut costs (like taking advantage of coupons, and eating out less).

Doing OK with this; need to be more aggressive about it.

 

So, it looks like I’m hitting about 50-50; doing well in some areas, and falling behind in others.  Time to step up my game a bit.

Resolution checkup

As February draws to a close, I thought I’d do a quick check-up to see how well I was keeping up with my New Year’s resolution list.  In sum: not great, but not too bad, either.  I need to make some adjustments, but I think I can pull it back in.

Here’s the rundown (copied and pasted from the original, with some notes below):

Professional

Technical Skills

  • I want to learn something new every month.  My goal is to tackle something challenging, and be able to understand the ins and outs of it within 30 days.  For example, I want to finish tackling XML (including XSD’s) in SQL Server. 

I think I’m doing OK on this one; I haven’t really done great this month, but I have spent a little time each month working on something new.

  • I want to upgrade my certifications by the end of the year; I’ve been dancing around the MCITP exams for a while, and I need to finish them.

Spent a little time studying, but I need to get on this.

Presentation

  • I want to make at least 6 technical presentations by the end of the year; last year, I managed to eke out 8, but given some of the recent changes in my personal life (see below), I think 6 is reasonable.

I have two presentations scheduled for SQL Saturday 70 next month.

  • I will blog at least once a month about some technical topic (see the first bullet point under technical skills).

See the above point; as I learn, I blog.  I did miss the T-SQL Tuesday blog for Feb (which makes me sad).

Management

  • I will understand the SCRUM methodology, and learn how to implement it with my team at work.  Although I’m not a team leader, I AM the Senior Database Architect, and I need to code less, and teach more.  This is my year to do so.

I’ve done this; I’m moving on to something larger. 

Personal

Health

  • I’m getting married again this year, and I want to look good for my new wife.  I also want to avoid long-term health issues.  I was losing weight last year (until I started dating), and I want to get back on track.  I’d like to lose 50 lbs by October.

Started Weight Watchers and have lost about 10 pounds so far.  Have tapered off a bit, and I need to get back on this bandwagon.

  • I have apnea, and I’ve been horrible about using my CPAP on a regular basis.  I will use it regularly.

How about irregularly?

  • I need to exercise more, so I will find 20 minutes a day to do SOMETHING, even if it’s just walking around the office for 20 minutes.

Blech.  I did OK for about two days.

  • I will drink at least 8 glasses of water per day.

Does Diet Coke count as water?  Sigh; it looks like I’m not doing so hot in the Health area.

Spiritual

  • I’ve slacked off in my religious activities; my faith was nourished by church attendance during my divorce, and I need to start growing again.  I will find a new church in the next two months (my old church is too far to drive on a regular basis), and become a regular attendee.

Checked out a church; didn’t like it.

  • I choose to absorb the goodness from people who love me, and I will reject the poison from those who do not.  I will focus on the important things in life (like my kids, and my future bride), and worry less about the unimportant things (like who’s mowing the grass).

Mixed results on this; while I think I do a great job at spending time with my kids and my future bride, I’m still struggling with ways to handle conflict in a positive fashion.  My strategy now is direct confrontation, rather than continuing to tap-dance around issues.

Social

  • I will listen more to my children, my family, and my friends.  I will find ways to let them know I love them.

See above.

  • I will nurture my own friendships; while I love my fiance’s friends and family, I want to bring more to the table than just me.

Need to do better about this.

Financial

  • My divorce pulled me way off course.  While I’m a long way from being out of debt, I will continue to make strides in that area.  I will pay off at least one credit card ahead of schedule.

Not really making a lot of headway here;  this one may have to wait until my fiancee and I combine households (thus saving on rent payments).

  • I will save more; I plan to find ways to cut costs (like taking advantage of coupons, and eating out less).

Ditto.

There you have it; a mixed bag.  I think I’m making some positive steps in the right direction, but I’ve still got a long way to go.

I’m doing it wrong…

me_doing_it_wrong At some point in your career, you have to realize that you’re going about it in the wrong way.   It may hit you like a ton of bricks, or it might be a subtle realization, but either way you realize that things aren’t working out for you like you expected.  I’ve had a couple of those moments throughout my career; one was shortly after I flunked out of graduate school.  Nothing says “you’re doing it wrong” than sitting outside of your advisor’s office for a meeting that never happens.

I’ve had other epiphanies in my career, such as the time when my ethical standards were a little higher than my employers; when I got sent home by a GM after a discussion over my responsibilities, I started polishing my resume.   I was doing it wrong by working for the wrong company.

Recently, I’ve begun to realize that I’m not living up to my full potential in my career.  I’ve spent the last several years building an enterprise solution for my company that has become the core product of that company.  It’s a good product, and I’m proud of it.  However, like many small companies that have grown up fast,  our company is built on a complex ecosystem of ever-changing goals and feature requests.  We built a system based on assumptions, and we’ve become one of the leaders of our industry because we’re often the first to deliver a product for a niche market.  Many of the assumptions we made didn’t pan out, and the applications we’ve built have slowly degenerated into a mass of tangled wire and unrealistic expectations.  I realized this as I’ve struggled to add a new feature and retrofit it into this existing solution; it’s taking more and more time to solve development problems because we’re not sure what features are still being used by some employee in a dark corner of the building.

As I was rewriting a stored procedure for the fifth time trying to eke out a few more milliseconds of performance, I realized that I was thinking like an engineer.  Engineers find creative solutions to problems in a very hands-on way; they worry about wiring things together so that they work, and they work well.  Engineers are worried about the microcosm; as every geek’s favorite engineer (Scotty from Star Trek) would say “In four hours, the ship blows up.”  That’s pretty straightforward; under condition x, outcome y is to be expected in a certain amount of time.

The problem?  My title says Architect.  I’m supposed to be thinking about the big picture, not just how a couple of applications are wired together.  I’m supposed to understand (and enforce) the rules about how events become data, and how data becomes information.  I should be more concerned with defining the specifications for our system than trying to figure out this damned stored procedure (for the fifth time).  Maybe we shouldn’t even have this particular stored procedure; maybe with a little tweaking, we could eliminate the problem altogether.

So what does this mean for me?  Well, as part of my New Year’s resolutions, I’ve been determined to learn something new every month.  This month, I’ve been focused on what does it mean to be a Data Architect, and I’ve been trying to find a little time every day to transform myself from an engineer to an architect.  I’m not going to master all of these subjects at once, but here’s my working list (from high-level goals to specific action items).  I expect this list to evolve, but it’s a start.

High Level Goal: A Data Architect needs to establish the standards for information and data in the enterprise.

  • I need to document the information architecture of our division of the company, using a standard data flow diagram notation.  I need to spend some time daily refreshing my memory on that notation.
  • I need spend time with employees throughout the organization, discovering what the business entities are, and what the vocabulary for those entities are. 
  • After discovery, I need to publish a standard vocabulary document and data-dictionary, showing how we capture that information today:
    • I need to propose changes to our business vocabulary, and
    • I need to propose changes to our database schema to standardize our notation.

High Level Goal: A Data Architect needs to understand the nature of the enterprise’s information on all levels: physical, logical, and procedural.

  • I need to talk to our production DBA’s an understand how our database servers are set up physically, including the clustering structure, the drive arrays, the SAN, etc.
  • I need to talk to our engineers to understand how data gets to the databases.
  • I need to talk to our product owners to understand what information they want from the data, and what’s the best way to deliver it.

High Level Goal: A Data Architect needs to recommend the best architecture for information management, including a plan on how to get there from here.

  • I need to refresh my memory on all aspects of SQL Server, not just the parts I use on a daily basis.
  • After discovery, I need to recommend ways to improve efficiency in our data capture processes.
  • I need to listen to all voices in the organization, even those I don’t normally agree with.  I can’t afford to throw away good ideas simply because I don’t always like the originator of those ideas.

More to come, but this is what I’ve been working on so far this month (February 2011).

I need ideas: building a cheap-but-powerful dev machine…

As part of my New Year’s resolutions, I’ve vowed to tackle a new technical challenge per month; however, to do so, I’d really like to beef up my home development environment, and was hoping to get some suggestions from some people on what to do.  A little background information would probably help, so let me sum up what resources I have (and some other factors influencing my decision):

Resources:

  • My company provides me with a mid-tier (LOW mid-tier) laptop for development.  While I can load some software on it, I’d rather not load my own personal development environment onto it.  I’ve thought about virtual machines, but it’s really incapable of doing much more than it already does (SQL Server Management Studio 2008 and Visual Studio 2010 can barely be opened at the same time).  It’s also a brick; traveling with it is NOT fun, but I have to carry it with me in case I need to securely access our network.
  • I have a desktop PC that was state-of-the-art 4 years ago, running Windows XP.  I’ve loaded Win 7 onto it, and the motherboard doesn’t like it.  I mostly use this PC for some minor development work, balancing my checkbook (Quicken), and browsing the Internet or watching my SageTV recordings.
  • I have a MVP MSDN subscription that I won at SQLSaturday 51 in Nashville; I know a few people were surprised that I won it (because they assumed I already had it), but I’m not an MVP (at least not an officially recognized one; see Paul Randall’s shout-out to @sqlagentman on this post.).  While I can get bits and pieces of this software to work on my home machine, I really think I’d be better off with a new environment.

Factors Influencing My Decision:

  • Budget is top priority; I have limited funds for this project.  I’d like to spend less than $500 upgrading my environment.
  • Mobility.  I do plan on traveling some to make presentations; the question is, how much of my development platform needs to be mobile?   Can I just get a superfast desktop, and do minor road development on my laptop?  On the other hand, I am spending a lot more time on the road between my apartment and the office (and my fiance’s house) these days; should I invest in a laptop, even if means I have to carry two laptops from place to place?

So, there you have it; resources and factors.  I’ve thought through a couple of scenarios, but I’m very open to suggestions:

  1. I could make my home PC a kick-a$$ development platform for under my budget.  Not very mobile, but cheap.  A couple of parts from TigerDirect, and away I go.  I might even have enough scratch left over to invest in an Android tablet or iPad for presenting (yeah, presenting; that’s how I plan to explain it).
  2. I could buy a cheap but beefy laptop and replace my home PC; not as powerful, but probably capable of doing dev work.  It’s mobile when I need it to be, but it does mean I would probably have to carry two laptops when I travel.  I’m worried that it won’t be powerful enough, but the i3 machines are pretty tasty these days.

Please feel free to leave comments with ideas; I’d love to hear some suggestions.  I’d also love to hear suggestions on 64 bit vs 32 bit (I’m assuming 64 bit); how would YOU build a cheap development platform?