Selasa, 05 April 2011

Freelance Switch

Freelance Switch


Abstracting Yourself to Freelance Success

Posted: 05 Apr 2011 04:00 AM PDT

Credit: solaris_photo on Photodune

Perhaps one of the most important lessons to a budding programmer is the idea of abstraction. I still remember the words used to describe it to me, "If you find yourself copying code, don't do it." The idea is so dead simple; any time you find yourself replicating a piece of code you generate a function or sub routine to handle it.

Fast forward about 20 years and this basic principle has become a critical part of almost everything I do. The notion of abstracting code to ensure it is as easy to manage as possible is a great fundamental business skill to have. Want to make yourself a valuable commodity on your team, your clients happier, and your freelance business more successful? The formula is simple, any time you find yourself doing something repetitive; find a way to do it faster. Here is my simple formula to identify what to do:

  • Document the process for the system in question.
  • Identify the most time consuming step of the process.
  • Figure out how to automate or minimize the time required for this step.
  • Repeat

A Sample Situation

A simple example will clearly illustrate the power of such an approach. A project I was recently a part of included publishing a weekly email filled with the latest resources on a video training site. As it turns out, building a weekly HTML email to update the community is very time consuming. The largest complication was that the service was built on a hosted CMS that happened to have built in email marketing features. These features happen to be only accessible via the web interface. This meant there was no option to code this to happen with some easy server side programming.

The end result was that I could build and schedule a weekly email update, complete with custom content, in less than 10 minutes.

So, we had no choice but to build the email outside of the system. With this in mind I built a mini application that would scrape the site to collect the content for each part of the email. This would then be stuffed into the HTML email template. The end result was a fully built HTML email ready to go…well almost.

After building this, the next problem presented itself without need for any sort of review process. We wanted to track these links using special Google Analytics URLs. So, I mashed the code to generate these special links into the system. This meant that the final HTML code also included the specialized links ready to go.

The end result was that I could build and schedule a weekly email update, complete with custom content, in less than 10 minutes. Do this sort of thing a few times and you will not only find you are getting more done, but you will also find your clients loving you.

Not a Programmer?

So perhaps your biggest problem with this model is that you are not a developer. Certainly for many, this is not an option. Let's consider a lower tech example to prove the point. In a former job a huge part of my day to day work involved helping an array of account reps generate bids for work. The ongoing joke was that we could do most any task for $10,000. It turned out that when in doubt I would say, "Sure we can do that for $10k." But of course in reality this meant I way overbid a lot of projects (and lost a lot of potential contracts).

When I took a step back to assess the process for generating these bids it turned out we did a lot of the same things over and over. It also became clear that generating the raw numbers was generally the hold up. The answer was simple; create a price sheet to empower the account reps.

This is exactly what we did. We built a menu of the most frequently requested elements to enable them to confidently bid work without the need for constant help to ensure a reasonable budget. In the end I found that I only had to touch 1 in 3 bids. And on those, I only had to address a small portion of the work. This meant I was no longer the hold up and we saved the organization a ton of wasted time.

This sort of streamlining is so obvious it feels silly to even talk about it. But, at the same time there are an amazing amount of people that don't think this way. Also, it takes real time to do this sort of thing. And for many it is hard to allocate time to such things.

Let's Make it Even More Obvious

Still think I am crazy? I really think almost any typical job can be abstracted into success. The web development and programming community are full of them. But even more so, the world is full of them.

Consider the everyday return label. Don't want to waste time writing your return address on envelops? Order a huge stack of stickers for $10 and never do it again. This simple task has been abstracted by a sticker.

In another example, scribes used to copy books by hand. Clearly this got old fast and these guys had to be thinking there is a better way. Interestingly these guys were also a major hindrance to the spreading of knowledge. So there was a major need to automate and streamline their work.

Focusing Your Streamlining

At times it can be very difficult to identify where to start. Sometimes the process is extremely complicated due to numerous people being involved, specified knowledge and interconnected systems. Most often in such cases you are either so close to the problem that you can hardly see there is even a problem. Or, you see a dysfunctional system, but you are locked out due to the complexities involved.

Forget about fixing everything, just look for the biggest problem too fix.

My solution in such cases is to stop thinking about the problem. Stop trying to think for those involved. Step back and listen. Talk to the people involved. In almost every such case you will find that people will tell you the hardest or longest part of the process. When you have identified a smaller part of the process that holds things up, go dig into that chunk of work. Almost always, there is some poor soul desperate for someone to help them. They often know they are the hold up, but are too overworked trying to keep up to actually do anything about it.

Once you find this person, start the whole process over. Don't even worry about mapping out their routine. Ask them what the most time consuming, annoying or difficult chunk of work is and you will easily identify what you need to streamline or abstract. I have heard everything from, "I have to buy a new file cabinet every year to hold all the paperwork for this annual process," to, "I copy this data from here to here 500 times every week." In most of these cases the problem will quickly present itself. You just have to start asking questions and listen.

Oftentimes you will find (especially in large systems with lots of people), that the whole system is so complex that you feel totally overwhelmed at where to even start. In such cases you dig and dig until you find a simple thing to start abstracting. Once you do this, other pieces will fall into place. At yet another job I built intranet based applications for internal processes. I coded for 3 years and only scratched the surface of things to automate. Forget about fixing everything, just look for the biggest problem too fix. You will be a hero and quickly find the next piece to work on.

The Power of Abstraction

This simple process and point of view has changed my life, my career and the overall impact I am able to have. A fabulous example of this is my blog Design Meltdown. I ran this site intensively for about 3 years (and casually since). This involved collecting enough design samples to publish a collection of 20-30 web sites each day in a specific category. Imagine the amount of work required to collect something as simple as a set of 20 pink web sites or 20 designs that imitate print.

In many ways I can't believe I ever bothered to even start the site, given the ongoing time investment that would be required. As with many things though, I forged ahead with enthusiasm and no fear of the hurdles.

To say the least, the obstacles presented themselves rather quickly. First and foremost were two key issues:

  • I had to identify tons and tons of fresh sites to catalog
  • I had to generate a lot of images and thumbnails

In the first problem I found that I was monitoring tons of online showcases for sites, as well as soliciting sites to review from my readers. Oye, what a mess, checking for duplicates was the most obvious problem. And this is not to mention the sheer amount of time required to do this every day.

So I did what I had to, I wrote a program to automate it. A simple script would monitor key sites for new samples to use. These would be added to a list for me to review and tag for future articles. This meant I was building as many as 40 collections or more at one time. When I was ready to generate a new post I would simply use the one with the most samples.

The second problem was managing all of the images. I started by automating the screenshots of the sites and storing them on my web server. Then I automated generating the thumbnails. Then I automated generating the code I needed to place into the page to create the post. Each solution pointed out the next problem.

All I had to do was surf the newest material and tag it. Generating a post was the easiest and fastest part! In the end I had countless people comment on the "team" behind the site. Thanks to the automation the site could operate, and generate the amount of content required.

As a result the site changed my life. My entire career has been shaped by this site. And without abstracting the process to make it as painless as possible, I would never have had the time to make it happen.

Abstract Yourself

If I have heard it once, I have heard it a hundred times, "We need you to replicate yourself." Why do I hear this in almost every job I get? Well, I think it is because I have a knack for getting things done, and I mean a lot of things done. People want to replicate me, but they seldom realize why.

It is inevitable that those who get more done will get more work and be more profitable.

This has lead me to an interesting need. At times I truly need to abstract myself. Fortunately there is a very easy answer to this. Many tasks (such as design work), might not be suitable for such an approach, but many are. Do you generate a ton of copy, but find the editing and refining process time consuming? Hire an editor. Need to write tons of CSS to create templates for your favorite CMS? Hire a slicing firm.

The notion of abstracting tasks is not new. We hire accountants, plumbers, web developers and lawn care services for things we could all do (to varying degrees of success) if required. Most employers will look at you sideways for asking to outsource parts of your job, but in the few cases I have convinced them it always works out. And as freelancers we have quite a bit more flexibility in how we handle client projects than someone in an employment situation.

Many people refuse to even think along these lines, as fear of becoming obsolete. Ironically this is the exact opposite of what happens. When you do this, two things happen: First, you manage the person helping you out and are essentially the connector between the two. If you go away, the relationship does as well. This makes you a critical component in keeping the productivity going. Secondly, your client will find ways to fill your time, or you’ll have additional time to take on higher value clients. It is inevitable that those who get more done will get more work and be more profitable.

At one job I had as many as 10 outsourced people working for me. Much of my job was managing those people and keeping them busy. The end result was huge profits for the agency and lots of happy faces, as a freelancer this would have brought me higher profits. There were times we actually had to sit down and worry our margins were somehow too high.

Efficient and Faster

If it seems I am beating the point to death, it is only due to my enthusiasm for the topic. I had to hold myself back from stuffing this article full of many more situations where I see people in a wide range of jobs, getting ahead by looking for ways to do things better and faster. It would seem that a large number of people are content to churn away mindlessly. In a way this is great. It gives everyone interested in being efficient a huge opportunity.

Photo credit: Some rights reserved by solaris_photo.


Top Freelance Jobs from Job Board – Week 1, April

Posted: 04 Apr 2011 08:00 AM PDT

Looking for a new client? The FreelanceSwitch job board is a great resource of freelance gigs and opportunities. These opportunities are in various fields, from development to writing to design, and come from a wide range of potential clients. The job board is hand-moderated by dedicated staff and volunteers from the freelance community.

Each week, we’ll feature a selection of the best job opportunities posted for the week. This week, we’re featuring jobs in interactive development, graphic design, photo editing, and more!

To apply for any of these jobs, simply pick up a FreelanceSwitch membership for an affordable $7 a month. See something you like? Join now!

Interactive Developer – Staff or Freelance

Budget: $5,000 to $10,000

We are a full-service digital creative agency that uses technology to solve communications problems. Our team members are engaged in a collaborative effort to produce high quality work while enjoying a creative, family-like environment.

Our clients are a diverse group of some of the nation's best known companies. Our work, whether web-based, interactive, or iOS apps, speaks for itself.

We are looking for an interactive developer who enjoys creating memorable user experiences, actively participating in projects from their inception, and working closely with a project team (Art Director, Designer and Interactive Producer). This position is full time and on-site at our downtown Chicago loft offices.

Learn more & apply!

CodeIgniter Developer

Budget: $1,000 to $2,500

We are looking for a backend developer with knowledge in CodeIgniter and PHP who is looking to work with a unique and quickly growing company. We would like to have someone start immediately on a online store project that is about 80% complete. Please include a portfolio if you have one.

Requirements

  • Excellent communication skills
  • Able to work remotely, check in with regular status updates
  • Familiar with PHP, HTML, MySQL and jQuery
  • Familiarity with setting up and maintenance of LAMP servers is preferred
  • You are not afraid to dive into existing sites to debug issues and perform timely adjustments and modifications
  • Interest in the music industry

Learn more & apply!

Freelance Photography Editor

Budget: $500 to $1,000

We are looking for designers to retouch, edit, and prep photos for use in other design work. This is a monthly job. Each month a batch of photos will come in to be edited, freelancer receives photos, completes edits within predetermined deadline, rinse and repeat.

Responsibilities:

  • Color and levels correct photographs.
  • Prep work for press and/or web.
  • Remove backgrounds from main subject. (Very Important! Must look natural around hair and edges)
  • Work with project managers to meet deadlines.

Learn more & apply!

JUNIOR GRAPHIC DESIGNER/ ASSISTANT

Budget: $10,000 +

Our New York based Entertainment Advertising Agency is looking for a Junior Designer with skills in Adobe InDesign and Photoshop.

Please in your response include a digital portfolio of your previous work as well as a resume.

Learn more & apply!

Business Development Monster

Budget: $10,000 +

My company is looking for someone with tremendous business development skills. What does this mean? We need someone to find leads and turn them into clients. From discovering potential clients and turning them into long term relationships, we hope the person (or people) that get in touch with us can give a favorable impression of our company and become a valuable resource for us to turn to.

My company is in software design and development. This includes web applications, integration with popular social services, mobile application development (iOS, Android, BlackBerry, Windows Phone), data processing, financial processing and more.

We pay a very competitive rate. We’re a growing company and we hope that you will grow with us.

Learn more & apply!


Tidak ada komentar:

Posting Komentar