These days find me sitting squarely on the customer side of the development cycle. I haven't let that limit my approach, though.
I still use automation, APIs, logging, checklists - basically all the tools I used when I was on the other side. Perhaps this delineation of 'sides' is unnecessary when both are striving to work together. This is just a unique configuration, one where a technical "expert" is collocated with the customers instead of SMEs being collocated with the development team.
One day, our software vendor set up a WebEx to walkthrough the installation of their software. I shared my desktop and began to follow the developer's instructions. The first one hour session ended when we encountered an anti-virus policy that was not accounted for in the install package. Simply put, our company disallows "autorun.inf" files to be created on the file system, but the software has a dependency whose installer unpacks just such a file. This looked like it would be a job for our internal IT department, who would ultimately be responsible for deploying this software anyway. One session down, one to go.
In our second session, we were able to continue the installation by temporarily bypassing the blocking process. Since this is what the IT department would have to do, I felt it was not masking any potential issues. The dependency installation was taking more time than the developer expected. We tracked it down to another internal IT process that was pushed out recently. Search indexing was working hard to account for the deluge of new files being created on the file system. Once we disabled that process for the sake of brevity, we continued on to the last issue.
The package was finally installed on my system and all that remained was to update it. It was at this time that my co-worker Shane asked what would happen if we attempted to update while a session was active. We explored this scenario with the developer and were able to confirm that the update did not occur - as we had expected. However, the developer was perplexed as to why the active session window did not close during the update attempt.
The developer mentioned that the recent buyout of their company required them to update all their company branding, including their window titles. It was possible that the routine responsible for closing the session window was looking for something with Company X in the title, but was actually Company Y. The developer began to search through their code to determine if this was the case.
I thought I could prove his point rather easily during our WebEx. I fired up AutoIt and compiled the following code:
WinSetTitle( "Company Y", "Company X" )
I ran this on the remote box where we had an open session, observed that the window title changed, then re-ran the update utility. Sure enough, the window closed and we were able to move on. The developer gave us a great compliment, exclaiming that what we had just done was, "a pretty cool hack". We were able to confirm his suspicions in real time, and thus confirmed where his fixes needed to occur.
I later looked back on that moment with much fondness. It reminded me that there are still some technical activities we can engage in that provide value for both sides of the effort. After all, we all just want to deliver good stuff. Who cares if some customers understand those lower-level details, provided the testing represents the customer's interest?
Tuesday, December 22, 2009
Friday, August 7, 2009
Facebook's Hidden Bug
Facebook allows me to gather friends ad infinitum. Currently, I have 279.
As I add friends, I offer up chunks of Facebook real estate for their posts, thoughts, comments, etc. But keeping up with 279 friends causes me to spend a lot of time reading these little nuggets of personality.
So I limit my interaction, as I've noticed that I tend to get sucked in. Some of my friends notice the same tendency. I know this because I read their comments. Just not all of them.
The bottom line is this: I am a user of Facebook whose sole purpose is to visit the site briefly to find out what people of varying importance to me are saying.
That is the User. The problem here is that everyone has something to say, but there is only one method of consuming that information: reading. Reading takes time and reading takes space. While having to read is not the problem - I'm not that lazy - the volume of items to read has become insufferable. As more and more people post their little gems with great rapidity (e.g., Twitter), my home page becomes a teenage-ADD-brain dump of middle-age technical professionals, musicians, and old high school chums; most of whom are being rudely run off the page by Twitter-bullies.
I think Facebook should provide an option where users are provided posts grouped within a certain time frame. Only the latest entry by a friend is shown with an option to see more. Think of something like a tree view where the root is "Posts within the last 8 hours." The child nodes would be unique friend avatars with the most recent item and a count of how many posts they have made within that time frame. Collapsed under that would be children nodes with the actual posts, comments being children of THAT node. Something like this:
"Posts within the last 8 hours"
--->Bill Clinton "Taking a nap!" (3)
------>"Taking a nap!"
------>"Eating a ham sandwich."
--------->Al Gore
------------>"Again?"
--------->Hillary Clinton
------------>"What's new with that?"
------>"Rescuing reporters."
--->George W. Bush "Poking Cattle" (2)
------>"Poking Cattle"
------>"Tipping Cattle"
etc...
In addition, I should be able to specify classes of friends. Friends from high school, friends from work, good friends, acquaintances, friends I have accepted because I didn't want to be rude but really can't remember them at all.
I should be able to rank these classes such that the higher the rank, the higher up on the page. Yes, older posts may appear before newer ones, but that's okay with me because I know that it is time boxed to my requested window.
Currently, Facebook just blithely assumes I want to read it all at once and treats the posts with a flat hierarchy, which is really nothing more than LIFO. I would love to have an option like this.
As I add friends, I offer up chunks of Facebook real estate for their posts, thoughts, comments, etc. But keeping up with 279 friends causes me to spend a lot of time reading these little nuggets of personality.
So I limit my interaction, as I've noticed that I tend to get sucked in. Some of my friends notice the same tendency. I know this because I read their comments. Just not all of them.
The bottom line is this: I am a user of Facebook whose sole purpose is to visit the site briefly to find out what people of varying importance to me are saying.
That is the User. The problem here is that everyone has something to say, but there is only one method of consuming that information: reading. Reading takes time and reading takes space. While having to read is not the problem - I'm not that lazy - the volume of items to read has become insufferable. As more and more people post their little gems with great rapidity (e.g., Twitter), my home page becomes a teenage-ADD-brain dump of middle-age technical professionals, musicians, and old high school chums; most of whom are being rudely run off the page by Twitter-bullies.
I think Facebook should provide an option where users are provided posts grouped within a certain time frame. Only the latest entry by a friend is shown with an option to see more. Think of something like a tree view where the root is "Posts within the last 8 hours." The child nodes would be unique friend avatars with the most recent item and a count of how many posts they have made within that time frame. Collapsed under that would be children nodes with the actual posts, comments being children of THAT node. Something like this:
"Posts within the last 8 hours"
--->Bill Clinton "Taking a nap!" (3)
------>"Taking a nap!"
------>"Eating a ham sandwich."
--------->Al Gore
------------>"Again?"
--------->Hillary Clinton
------------>"What's new with that?"
------>"Rescuing reporters."
--->George W. Bush "Poking Cattle" (2)
------>"Poking Cattle"
------>"Tipping Cattle"
etc...
In addition, I should be able to specify classes of friends. Friends from high school, friends from work, good friends, acquaintances, friends I have accepted because I didn't want to be rude but really can't remember them at all.
I should be able to rank these classes such that the higher the rank, the higher up on the page. Yes, older posts may appear before newer ones, but that's okay with me because I know that it is time boxed to my requested window.
Currently, Facebook just blithely assumes I want to read it all at once and treats the posts with a flat hierarchy, which is really nothing more than LIFO. I would love to have an option like this.
Wednesday, August 5, 2009
Letters to a future me about...automation
The point of the product is not cool automation frameworks. Automation is a byproduct of the testing effort. The end-user may benefit from automation much the same way that my cereal benefits from automatic milking. Which is to say it may be helpful, but is putting the cart before...um...a quadrupedal animal of some variety.
Saturday, August 1, 2009
No excuses...
This post was originally intended to catalog a few tools to aide in viewing the internals of a system with an added chastisement to those who complain about not having enough information. In fact, I never got to CLR profiler or the array of performance counters made available in .NET. Instead, it turned into a brain dump of the ways in which I ask questions and seek out their answers. The journey took me somewhere I didn't expect. You'll see what I mean...
I've been reading a lot of posts lately talking about how testers cannot test lower level functionality, structures, etc. because they don't have access to the code.
If you're working with a .NET application, my response is "Pish-posh".
Download Reflector. Nefariously point it in the direction of those impenetrable .NET assemblies. Behold the fruit of your efforts:

This is an actual disassembly of a program I was writing using the WebAii automation framework. Though my example is incomplete, you can still see what's going on under the hood.
"But Zach", you protest, "I can't read all that code-y stuff! What kind of bugs can I find doing that?"
Well, using this tool, I can think of one possible bug that doesn't require intimate knowledge of C#, .NET, CLR, or IL disassembly techniques. How about the fact that you can go out and download a tool that can expose your stakeholder's intellectual property after a few clicks of a button? If the company is concerned about protecting its secrets, they should be concerned about the relative ease with which one could reverse-engineer their system.
There are also plugins available that allow you to view differences between two versions of the same assembly. If a bug-fix is delivered, you may be able to ascertain where that change was made. What do you find there?
"But our application is web-based! I can't just look at assemblies on my local machine!" More pish-posh! Your browser has a "view source" function. Use it to peer in behind the curtain. Want some more power than that? Download FireBug. More power than that? Download Wireshark.
But tools are not the answer to the question. In fact, they are distracting if you don't understand the question you're asking. Put another way, I'm not persuaded by the argument, "I don't know what all this code stuff is all about. I just mash buttons." It is time to take a lesson from the economy and learn something new. The internet has now made this a lot easier than it was when I was trying to learn Raster Interrupts on my Commodore 64.
Your Mission:
Make a Windows application containing one button. When you click this button, a dialog box appears that reads, "Hello, World!". I won't tell you HOW to do this, that is YOUR job. But a few points are hidden in this exercise.
Learn Developer Empathy.
Many communities like to push the idea that testing and development should be at odds. I think this is a dangerous idea. To me, developer empathy is NOT the same thing as BUG empathy because developers are not the problem. Sure, they may have coded it in wrong, but you're not going to be able to catch all the bugs in the system ANYWAY. So none of us are doing are jobs perfectly, cool?
As the saying goes, you catch more flies (which are bugs) with Honey than with Vinegar. The 'honey' here is your willingness to learn about life on their side of the table. I guarantee that if you approach a group of developers with the problems you encounter while doing this exercise, you'll receive no end of advice. You can also use your experience to frame questions about the system under test: "I notice this alert comes up in the browser when I enter in invalid information. How is that different from my little application?" These are the kinds of questions I asked developers. Just remember to ask when it is convenient for them. I always walk away with more knowledge and more questions. Which leads me to...
Mind Map your journey.
Create a mind map. In the middle, enter in the task of creating that Windows application. Before you start trying to figure out coding, try to articulate your confusion and frustration. Create nodes that encapsulate your questions: "What is a Windows application?", "Why do I hear so much about, 'Hello World'?" As you find answers, add them as nodes of the question itself. But you're not done because that answer should have created several new questions for you. Add them and repeat. Download this mind mapping program if you must.
As testers, ours is not only a journey of questioning things, but in finding out the answers to those questions. If someone plops down a huge system for you to test, how are you going to tackle it? The question is always antecedent to the approach. So if you don't know, find out and track the way(s) in which you found out. Like watering holes in the desert, there will be places you perennially come back to for answers. Where are they? You won't find them unless you go looking for them.
Brush up on your Google-Fu
Learn to ask questions in different ways, including how to ask them in a Google query. Remove extraneous words. Group the related terms together to eliminate false positive results. Reduce the results to a certain domain, a certain file type, within a certain period of time. This ability can greatly improve the signal-to-noise ratio.
Don't brush up on your Google-Fu
Send that query out without all the constraints mentioned above. Misspell a word. Ungroup terms. Expand the time frame. Select a result from page 10, not page 1. Select the LAST result. You will be surprised by how much you uncover in the journey. Bob Ross called them happy little accidents. I cannot tell you how many discoveries I made on the way to answer a completely DIFFERENT question. In fact, most of the downloads on this page are result of another train of thought.
Now, you've downloaded Microsoft C# 2008 Express and written your program. Go ahead and set up a new, small project for yourself and see it through to completion. Use TDD,BDD, NUnit or MbUnit. (What do all those terms mean? You don't seriously expect me to answer it for you, do you?) You will have gained more knowledge of how to view the internals of the system. These internals are not only the constituent bits that comprise the application, but the human processes around their creation. Knowing these processes can guide your questions later on. No, you're not developer level but you are CONVERSANT. Being conversant means being able to have a conversation, and conversations lead to questions which lead to discoveries which leads to...
Have fun playing with the tools. Just don't start/stop there.
I've been reading a lot of posts lately talking about how testers cannot test lower level functionality, structures, etc. because they don't have access to the code.
If you're working with a .NET application, my response is "Pish-posh".
Download Reflector. Nefariously point it in the direction of those impenetrable .NET assemblies. Behold the fruit of your efforts:

This is an actual disassembly of a program I was writing using the WebAii automation framework. Though my example is incomplete, you can still see what's going on under the hood.
"But Zach", you protest, "I can't read all that code-y stuff! What kind of bugs can I find doing that?"
Well, using this tool, I can think of one possible bug that doesn't require intimate knowledge of C#, .NET, CLR, or IL disassembly techniques. How about the fact that you can go out and download a tool that can expose your stakeholder's intellectual property after a few clicks of a button? If the company is concerned about protecting its secrets, they should be concerned about the relative ease with which one could reverse-engineer their system.
There are also plugins available that allow you to view differences between two versions of the same assembly. If a bug-fix is delivered, you may be able to ascertain where that change was made. What do you find there?
"But our application is web-based! I can't just look at assemblies on my local machine!" More pish-posh! Your browser has a "view source" function. Use it to peer in behind the curtain. Want some more power than that? Download FireBug. More power than that? Download Wireshark.
But tools are not the answer to the question. In fact, they are distracting if you don't understand the question you're asking. Put another way, I'm not persuaded by the argument, "I don't know what all this code stuff is all about. I just mash buttons." It is time to take a lesson from the economy and learn something new. The internet has now made this a lot easier than it was when I was trying to learn Raster Interrupts on my Commodore 64.
Your Mission:
Make a Windows application containing one button. When you click this button, a dialog box appears that reads, "Hello, World!". I won't tell you HOW to do this, that is YOUR job. But a few points are hidden in this exercise.
Learn Developer Empathy.
Many communities like to push the idea that testing and development should be at odds. I think this is a dangerous idea. To me, developer empathy is NOT the same thing as BUG empathy because developers are not the problem. Sure, they may have coded it in wrong, but you're not going to be able to catch all the bugs in the system ANYWAY. So none of us are doing are jobs perfectly, cool?
As the saying goes, you catch more flies (which are bugs) with Honey than with Vinegar. The 'honey' here is your willingness to learn about life on their side of the table. I guarantee that if you approach a group of developers with the problems you encounter while doing this exercise, you'll receive no end of advice. You can also use your experience to frame questions about the system under test: "I notice this alert comes up in the browser when I enter in invalid information. How is that different from my little application?" These are the kinds of questions I asked developers. Just remember to ask when it is convenient for them. I always walk away with more knowledge and more questions. Which leads me to...
Mind Map your journey.
Create a mind map. In the middle, enter in the task of creating that Windows application. Before you start trying to figure out coding, try to articulate your confusion and frustration. Create nodes that encapsulate your questions: "What is a Windows application?", "Why do I hear so much about, 'Hello World'?" As you find answers, add them as nodes of the question itself. But you're not done because that answer should have created several new questions for you. Add them and repeat. Download this mind mapping program if you must.
As testers, ours is not only a journey of questioning things, but in finding out the answers to those questions. If someone plops down a huge system for you to test, how are you going to tackle it? The question is always antecedent to the approach. So if you don't know, find out and track the way(s) in which you found out. Like watering holes in the desert, there will be places you perennially come back to for answers. Where are they? You won't find them unless you go looking for them.
Brush up on your Google-Fu
Learn to ask questions in different ways, including how to ask them in a Google query. Remove extraneous words. Group the related terms together to eliminate false positive results. Reduce the results to a certain domain, a certain file type, within a certain period of time. This ability can greatly improve the signal-to-noise ratio.
Don't brush up on your Google-Fu
Send that query out without all the constraints mentioned above. Misspell a word. Ungroup terms. Expand the time frame. Select a result from page 10, not page 1. Select the LAST result. You will be surprised by how much you uncover in the journey. Bob Ross called them happy little accidents. I cannot tell you how many discoveries I made on the way to answer a completely DIFFERENT question. In fact, most of the downloads on this page are result of another train of thought.
Now, you've downloaded Microsoft C# 2008 Express and written your program. Go ahead and set up a new, small project for yourself and see it through to completion. Use TDD,BDD, NUnit or MbUnit. (What do all those terms mean? You don't seriously expect me to answer it for you, do you?) You will have gained more knowledge of how to view the internals of the system. These internals are not only the constituent bits that comprise the application, but the human processes around their creation. Knowing these processes can guide your questions later on. No, you're not developer level but you are CONVERSANT. Being conversant means being able to have a conversation, and conversations lead to questions which lead to discoveries which leads to...
Have fun playing with the tools. Just don't start/stop there.
Labels:
Head Talk,
Testing Tools
Saturday, June 6, 2009
Testing Programming Interview Questions...
I was cruising around the internets today and stumbled upon one of those sites that posts programming interview questions. You know the ones: archetypal algorithmic queries requesting the shortest way to move manhole covers from Mt. Fiji while weighing eight balls of 3 different colors (choose only two). Those kind of rudimentary questions.
I suppose the allure is that if one were able to successfully answer all the questions, they'd be a shoe in for the illustrious programming gig. Or perhaps to validate themselves; either they haven't been discovered (yet!) or are simply too brilliant to be burdened with the trivial job search (gimme a raise!). Only narcissists - insecure in their feeble abilities - answer these out-dated questions to puff up their sense of self-importance with a strapped-down, vein-tapped quick-fix of techno-trivia devoid of context.
So by the time I got to question number 6, I was feeling pretty good about myself. It read as follows:
You’ve got someone working for you for seven days and a gold bar to pay them. The gold bar is segmented into seven connected pieces. You must give them a piece of gold at the end of every day. If you are only allowed to make two breaks in the gold bar, how do you pay your worker?
***SPOILER ALERT***
I pondered for a bit, acquiesced to my plebeian logic, and moved ahead to the answer. However, when I read the answer I realized that it required that the worker be willing to trade in yesterday's pay for today's pay. Ummm???!!!!(Note I cannot spell the word I want to type here, so I'll simply link to a wav sound of it in use). I would never have arrived at that conclusion. There appeared to be a great many assumptions about what actions could/could not be taken.
And that is why I'm writing this. I'm not so much fascinated by the answers as I am the meta-questions. What questions would you ask before you would feel satisfied?
Some of mine include:
-Can anyone else cut the gold instead of/in addition to me?
--If Yes: Are they subject to the same restriction as me?
---Do we both get 2 cuts each?
---Must I pay extra for their services?
---Can we renegotiate the terms if the worker is the cutter?
-With what are we cutting the gold?
--What if the cut cannot be made in a 24-hour period?
What questions would you ask?
I suppose the allure is that if one were able to successfully answer all the questions, they'd be a shoe in for the illustrious programming gig. Or perhaps to validate themselves; either they haven't been discovered (yet!) or are simply too brilliant to be burdened with the trivial job search (gimme a raise!). Only narcissists - insecure in their feeble abilities - answer these out-dated questions to puff up their sense of self-importance with a strapped-down, vein-tapped quick-fix of techno-trivia devoid of context.
So by the time I got to question number 6, I was feeling pretty good about myself. It read as follows:
You’ve got someone working for you for seven days and a gold bar to pay them. The gold bar is segmented into seven connected pieces. You must give them a piece of gold at the end of every day. If you are only allowed to make two breaks in the gold bar, how do you pay your worker?
***SPOILER ALERT***
I pondered for a bit, acquiesced to my plebeian logic, and moved ahead to the answer. However, when I read the answer I realized that it required that the worker be willing to trade in yesterday's pay for today's pay. Ummm???!!!!(Note I cannot spell the word I want to type here, so I'll simply link to a wav sound of it in use). I would never have arrived at that conclusion. There appeared to be a great many assumptions about what actions could/could not be taken.
And that is why I'm writing this. I'm not so much fascinated by the answers as I am the meta-questions. What questions would you ask before you would feel satisfied?
Some of mine include:
-Can anyone else cut the gold instead of/in addition to me?
--If Yes: Are they subject to the same restriction as me?
---Do we both get 2 cuts each?
---Must I pay extra for their services?
---Can we renegotiate the terms if the worker is the cutter?
-With what are we cutting the gold?
--What if the cut cannot be made in a 24-hour period?
What questions would you ask?
Tuesday, April 28, 2009
Stopgapplication is officially a pseudoword!
( Thank you, Victoria )
------------------------------------------------
Zach Fisher,
thank you for submitting stopgapplication.
you can view it by going to
http://www.pseudodictionary.com/stopgapplication.
replace any spaces in the url with underscores.
you can link to it by clicking on "link to word"
and you can send it to friends by clicking the
"send to friend" button under your word.
regards,
hd - editor
paul - concept
garret - programming
------------------------------------------------
Zach Fisher,
thank you for submitting stopgapplication.
you can view it by going to
http://www.pseudodictionary.com/stopgapplication.
replace any spaces in the url with underscores.
you can link to it by clicking on "link to word"
and you can send it to friends by clicking the
"send to friend" button under your word.
regards,
hd - editor
paul - concept
garret - programming
Friday, April 24, 2009
Thoughts On: Stealing
Taken from a response I posted here.
======================================================
Lots of talk on this thread about the role of RIAA/labels/music in the context of file sharing. For a good expose on how the music industry found itself in the horns of this dilemma, check out "The Way The Music Died". It is well done, fair, and thought provoking.
I've lived in Nashville, TN since 1999 and for most of my time here, I had no aspirations for being an artist but was more involved in the session scene. Nash-vegas was once home to a thriving music industry comprised of a tenuous relationship between artists, labels, and songwriters. I joined ASCAP ( American Society of Composers, Authors and Publishers ) in the early 2000's and have realized mechanical royalties on songs I've written and co-written. I've played on a slew of custom albums ( read: low-budget ) where I played drums, sang BGVs, arranged, wrote string arrangements, programming, etc. I also received payouts from the Musician's Union for playing drums on "Shadowlands" on this album. And prior to all this, I played percussion for a series on The Learning Channel. Why all this "bragging"?
Because I've only earned about $100 in royalties for 2 songs that were recorded on a limited release ( @1000 copies pressed ). And the payout from the Musician's Union for playing 1 track on a nationally released, major-label album? About $45/year in mail-money. Now that I'm no longer pursuing music in a professional capacity, I can comfortably say: There is NO MORE MONEY in making music. Not in the established model. Some of this is the fault of greedy label execs. But a lion's share of the blame also belongs in the laps of people who view "songs" as algorithmic sequences of 1's and 0's - coldly detached from the hard work of people that are never seen and almost never recognized; that these products are somehow the inherent right of the digital denizens.
In this volatile economic environment, I've seen my friends lives reduced to panic-inducing shambles as a once dependable - albeit flawed - system of monetary compensation dried up seemingly overnight. The closest thing to retirement for these individuals is the steady stream of royalties on a large body of work. It is serendipitous income and a far cry from what I read between the lines of most protestations of the "right-to-file-sharing" adherents - that somehow the music industry is getting its just desserts for a century of decadent living. These friends of mine are living lives far from opulence, even when the DOW was well neigh 12,000. I think my engineer friend put it best, "its like complete strangers coming up to my supper table and stealing food off my kid's plate."
Some may argue that the internet levels the playing field, making it easier for unknown artists to be discovered. That maybe true, though I'm skeptical that any singular source of discovery will not necessarily homogenize. Fact is, it takes many talented people to create good music: songwriters to write the songs, engineers to capture quality sounds, producers to guide the artistic vision, mixers to blend the constituent elements into a complete musical thought, mastering engineers to combine disparate vignettes into a cohesive whole. These people are talented and deserve to work. I've heard some good indie music online...but the quality sucks. My bias is observed. Consumer electronics has done much to put power in the hands of the many, but when you see a professional at work, these devices seems like crude toys. It is an inspiring thing to "watch" the creation of an album.
Some may also argue that these poor folks should suck it up and get real jobs like everyone else. News flash: you assume that they don't already. If we adhere to the thinking that art is not worth compensation, I would ask if we would ever stop paying professional athletes just because we can toss a ball around every once in a while? What if the teeth of the digital age set its edges on your career? In many cases, it already has. We should not wait for higher courts to legislate what ultimately is a moral decision: taking a product for free when it is meant to be purchased, regardless of distribution methodology, is stealing. Period.
I understand that some will disagree with me. But before you do, I invite you to come to Nashville, TN. I'll give you the southern hospitality tour of the city and the surrounding areas. I'll show you the historic points, serve you some sweet tea, and top it all off with a trip to some of the songwriters and engineers most affected by greed in its many forms. I invite you to explain your rationale to them.
Zach...
======================================================
Lots of talk on this thread about the role of RIAA/labels/music in the context of file sharing. For a good expose on how the music industry found itself in the horns of this dilemma, check out "The Way The Music Died". It is well done, fair, and thought provoking.
I've lived in Nashville, TN since 1999 and for most of my time here, I had no aspirations for being an artist but was more involved in the session scene. Nash-vegas was once home to a thriving music industry comprised of a tenuous relationship between artists, labels, and songwriters. I joined ASCAP ( American Society of Composers, Authors and Publishers ) in the early 2000's and have realized mechanical royalties on songs I've written and co-written. I've played on a slew of custom albums ( read: low-budget ) where I played drums, sang BGVs, arranged, wrote string arrangements, programming, etc. I also received payouts from the Musician's Union for playing drums on "Shadowlands" on this album. And prior to all this, I played percussion for a series on The Learning Channel. Why all this "bragging"?
Because I've only earned about $100 in royalties for 2 songs that were recorded on a limited release ( @1000 copies pressed ). And the payout from the Musician's Union for playing 1 track on a nationally released, major-label album? About $45/year in mail-money. Now that I'm no longer pursuing music in a professional capacity, I can comfortably say: There is NO MORE MONEY in making music. Not in the established model. Some of this is the fault of greedy label execs. But a lion's share of the blame also belongs in the laps of people who view "songs" as algorithmic sequences of 1's and 0's - coldly detached from the hard work of people that are never seen and almost never recognized; that these products are somehow the inherent right of the digital denizens.
In this volatile economic environment, I've seen my friends lives reduced to panic-inducing shambles as a once dependable - albeit flawed - system of monetary compensation dried up seemingly overnight. The closest thing to retirement for these individuals is the steady stream of royalties on a large body of work. It is serendipitous income and a far cry from what I read between the lines of most protestations of the "right-to-file-sharing" adherents - that somehow the music industry is getting its just desserts for a century of decadent living. These friends of mine are living lives far from opulence, even when the DOW was well neigh 12,000. I think my engineer friend put it best, "its like complete strangers coming up to my supper table and stealing food off my kid's plate."
Some may argue that the internet levels the playing field, making it easier for unknown artists to be discovered. That maybe true, though I'm skeptical that any singular source of discovery will not necessarily homogenize. Fact is, it takes many talented people to create good music: songwriters to write the songs, engineers to capture quality sounds, producers to guide the artistic vision, mixers to blend the constituent elements into a complete musical thought, mastering engineers to combine disparate vignettes into a cohesive whole. These people are talented and deserve to work. I've heard some good indie music online...but the quality sucks. My bias is observed. Consumer electronics has done much to put power in the hands of the many, but when you see a professional at work, these devices seems like crude toys. It is an inspiring thing to "watch" the creation of an album.
Some may also argue that these poor folks should suck it up and get real jobs like everyone else. News flash: you assume that they don't already. If we adhere to the thinking that art is not worth compensation, I would ask if we would ever stop paying professional athletes just because we can toss a ball around every once in a while? What if the teeth of the digital age set its edges on your career? In many cases, it already has. We should not wait for higher courts to legislate what ultimately is a moral decision: taking a product for free when it is meant to be purchased, regardless of distribution methodology, is stealing. Period.
I understand that some will disagree with me. But before you do, I invite you to come to Nashville, TN. I'll give you the southern hospitality tour of the city and the surrounding areas. I'll show you the historic points, serve you some sweet tea, and top it all off with a trip to some of the songwriters and engineers most affected by greed in its many forms. I invite you to explain your rationale to them.
Zach...
Labels:
Head Talk
Subscribe to:
Posts (Atom)