Sourcing: What Influences Pay

7 January, 2011 (11:21) | Sourcing | By: joseanes

For a while I have been considering re-coining a term: “Sourcing“.  People have ideas of what “Out-Sourcing”, “Near-Sourcing” and “In-Sourcing” is (links to definitions below).  The good thing about the industry where we are is that location is not as important as capabilities.  And as long as we concentrate on Capabilities, we can only move up from there.

One question people ask me very often is: “Do you hire people overseas for cost saving reasons?“.  To what they normally answer: “I hire people wherever I can find them.  Do you know a good candidate?“.  (Of course, people know how demanding I am so they are usually afraid of suggesting me a candidate).  Other people ask the questions of: “Do you save money by hiring people overseas?“  “Is it better to hire locally?” “How do you communicate?” “What about working hours?”

In the modern world, the cost of labor is becoming level across the world.  Sure, there are still some differences, but the more we understand them, the more we can help level the playing field even more.  Still, we have to pose the question:  What causes someone to pay X for someone in the USA and 1/3 X for someone overseas?  First of all, you would be surprised how that equation has changed.  Years ago it used to a ratio of 10:1.  Nowadays I even see ratios of 1:1 for very specialized resources of which there are only a handful in the world.)

As a guideline, pay increases or decreases due to a variety of factors.  Sure, market rates provide some influence, but I try to keep the base price calculation level across the different countries from where we source talent, regardless of the local economy there.  The factors taken into consideration:

  • Core Competency – Both in terms of skills and of experience/know-how that allows you to work faster.  This is the most important determining factor.  The one that causes variations of up to 1:3 among the workforce.  Updated skills, mastering tools, and doing the most with the least.
  • Real Amount of Work Per Hour – How much facebook vs. how much code.  Some people work more comfortably than others.
  • Ability to Interact – I work in Eastern Standard Time (New York time).  The more you can communicate in the right timezone the more valuable you become.  Some of my providers have adjusted their sleeping habits to match the greater team working hours – and that is taken into consideration.
  • Language Abilities – I am not great at English so I do not expect perfect language skills.  Yet, I expect someone to be able to do a presentation, inspire, convince, and gain respect.  No problem if he/she can’t.  People can always code well.  And Writing skills are mandatory: as a big portion of what we do is design, test plans, and other important documentation.
  • Ability to Face Client – Can the person meet the client face to face and work on the client premises?  If the person can’t do that, he/she becomes less valuable – even if they live next door.  Some people do not like to take 10 hours of unpaid time to meet a client in California.  (Travel time is not customarily compensated in the US, although most travel expenses are).  That means they are not as valuable.  Travel Costs is also a calculation here.  If I have to pay for someone to travel around the world that means the savings come out of somewhere.

Something to be aware is that the sword cuts both ways:  Many Americans are losing their jobs in other companies because they fail to prove themselves better in the areas that should have been a given for them:  Americans who do not like to travel or who have perfect street English but terrible written communication skills.  And most importantly, those that have rested on their laurels and stopped learning new technologies the moment they graduated from College.  It is not only that the cost of overseas resources is increasing year over year.  It is that the cost of mediocre resources in the US has already got below top-notch overseas resources costs, and will continue dipping.

Some definitions:

  • Sourcing – Finding the right resource for the task at hand.  (Wikipedia has an article, but I am not sure it covers my meaning).
  • Out-Sourcing – Delegating outside organization, but in modern times sometimes used interchangeably with Off-Shoring (delegating to teams overseas, possibly at lower salary economies).
  • Near-Shoring – Similar to Off-Shoring, but closer.  In the case of the US that would be in Canada, Mexico or other close countries.  Convenient due to the same timezones.
  • In-Sourcing – Delegating operations to internal resources.
Share

The Importance of Screenshots

29 December, 2010 (10:03) | Software Development | By: joseanes

Screenshots are of great importance in software development, and the old adage that an image is worth a thousand words still holds.  Ways in which you can use screenshots:

  • Installation Manuals – They show how to install, they counter-protect you from typos on the user manual, and they serve as a usability slide-deck to find out if the process is doable or not.
  • Test Plans - Not only do they guide people on the testing process, but it shows that the product was tested and how it was tested.  The former will serve to prevent people from checkin in changes that do not work.  The later will serve to find out if the test environment differs from client.  They also help in usability – if it doesn’t look as easy to test, chances are it is difficult to use.
  • Usability reviews – see both above.

Screenshots take 10 seconds to take, 60 seconds to annotate, and maybe another 60 seconds to paste into a shared Google document.  A cheap insurance against the maladies that it can prevent or alleviate.

Share

Cloud Everything

26 November, 2010 (09:49) | Hardware | By: joseanes

We are a small, lean and mean company.  We do not believe in meetings and commercial real estate unless it provides real value to our customers.  The cloud tools are great way to do business.  But before we declare ourselves in the cloud, it is important to define what we mean with cloud.  Real examples may speak louder than words, so lets list all the ways in which we are on the cloud:

Software:

Virtual Hardware:

As far as our business is concerned, we are trying to keep just the core of our business in our desktops.  Our main workbench is Eclipse, and that is where we do most of our work.  That is the most important application that must be on our desktops.  Everything else should be migrated to the cloud as much as we can.

In which ways you participate on the cloud?

Share

CA World: Living in a Cloud

26 July, 2010 (15:43) | Uncategorized | By: joseanes

The theme at  CA World seemed to be The Cloud.  (Celebrated in Las Vegas, NV (LAS) May 15 to May 21 2010.)   For many, Cloud Computing seems to be a nice name for a bunch of ESX (VmWare Virtualization) servers running what was previously a collection of physical servers.  In this Trade Show, I finally felt like the industry was starting to go beyond throwing many servers into a big one to thinking in terms of resources that are scattered across multiple locations and have to be re-used as fluidly as possible.  And I also realized that we are far from the ideal situation that most virtualization companies claim:  I wasn’t able to find people doing VMotion (or similar) on production, mission critical applications yet, just like I haven’t been able to find in a while.

The Cloud readiness has motivated us to stop purchasing hardware – at least for a while.  We do have plenty of processing power on the office laboratory right now – very under-utilized equipment.  That is capital that could have been better used elsewhere – if anything on a few good steaks.  It is also a drag on energy use – something I am very concerned about – and on maintenance costs.

From customer facing perspective we have already started working with large customers who use Solaris and AIX virtual partitions on their mid-range systems to virtualize services.  CA management software, with some customizations we have done, has already started producing reports that present performance of applications across multiple hardware frames rather than on their individual virtual or physical systems.  It puts into perspective the consumption of computing resources rather than the mere utilization of a single host (also important, but easier to manage).

From a development shop perspective we won’t be making huge investments in Cloud computing.  I would rather be steering growth in what I consume that way:  moving critical services to the cloud and filling the void they leave in our in-house resources with the less critical growth.

We already had our source control I the cloud.  A necessity, as our careers would be in jeopardy if we lost the code.

Our first takeaway was the easier one:  moving storage into the cloud – something that is already under way into the Amazon E3 service.  Secondly, we will move the demonstration systems out to the cloud.

Overall, we are happy to have attended to CA World to get this perspective.

Share

CA World: Value of Vendor Specific Trade Show

26 July, 2010 (15:42) | Uncategorized | By: joseanes

We went to CA World, celebrated in Las Vegas, NV (LAS) May 15 to May 21 2010.  Overall, the experience was even better than the one before.  It is a great place to meet and greet old and new vendors, partners and clients.

As a boutique (read small) consultant firm, there is a question in the back of my mind:  Should we go to a trade show or should we work at a client site and produce revenue that week? – After all, somebody got to pay the bills.

There are several things to consider:

  • People Want To Meet People Like You – When you cold-call, people may be too busy to think about the services you offer.  When you go into a trade show, people go there because they need, know someone who needs, or want to sell the services you offer.
  • People Like to Know Stuff – You know stuff that others do not know.  You have a personal experience that others want to learn about.  Previous colleagues and clients want to catch up with you to absorb some knowledge (you just have to make sure that the content you provide is interesting).
  • People Like To Profit From Your Work – And there is nothing wrong with that.  Be on the lookout for vendors that would be happy to re-sell your services or products.
  • Tell People In Advance – You will get a better outcome of the show if you send a personalized e-mail to those people you want to meet.  Especially if you are very specific about things you would like to talk about.  You don’t always have to schedule a specific time weeks in advance (especially if you haven’t seen the event schedule) – you can always do that once you get to the trade show.  Just make a list of everyone that you know will go there and give them a call while you are there.
  • People Like to Buy, Not To Be Sold – The old advice still applies here.  Let them be the ones that bring ideas to you on which you may be able to provide help.  There is usually an easy exchange of ‘that is what you do, and this is what I do’ kind of information that happens at the start of many conversations.  Try to learn information and make space for them to ask you about information.  But do not try to sell specific stuff.  Mention the kind of things you have been working on.
  • Outcome is Not Known Until Months Ahead – I have never closed any opportunity at a trade show.  Take everything with a positive attitude.
  • You Need To Follow Up – All of those exciting conversations you had while holding that drink are useless if you do not send an email to remind you of that idea and follow up with a conversation.
  • No Time to Rest – Rest before and after the event.  During the event, try to have as much face time with your colleagues as possible.  Some people are early birds, some others are night owls: be both for a week. Big corporations can send an army of people to a conference; boutique firms can only send a handful.  As my brother says:  ‘to rest, death’.  (I just tell him I do not plan to die – to which he responds ‘too bad, no rest for you’).
  • It is Fun! – There is a reason why we have stayed on this industry for so long:  we enjoy it and we enjoy the people we have worked with.  It is fun to meet those people again, relive the good times and enjoy new good times.

Now, on some tips for boutique consulting teams with small budgets:

  • Beg – People know your size.  You are not Big Consulting.  They know it is you and a few good guys and gals on which you put all your trust.  The Trade Show operator may be willing to give you a break in the price – or the entrance fee altogether, if you ask nicely, to many people, and very frequently.  Offer that you will pay your own ticket and hotel, but paying the conference fee makes it too much.
  • Offer Added Value – Prepare Talks, Presentations, and Whitepapers and have them ready for show time.  You may be able to present on some of these events.  That helps both, the organizer (by adding valuable content) and your firm (by validating your expertise in a field).
  • Offer Help Presenting – Your labor is also valuable.  You can offer a few hours a day of booth duty presenting one of the products of that company.  A few hours of work won’t prevent you from getting value of the show.
  • Standard Travel Strategies – You already know how to optimize flights, hotels, etc.  Do not be restricted by the Conference’s chosen travel agent.  Be creative.
  • Allow Others To Entertain You – There are people with big expense accounts burning a hole in their pockets.  Their job may even be to find people like you and your team and have you add value to their operations.

I think this was a week well worth it.  The value obtained out of it will be felt – just not immediately.  It will fatten the next 18 months of pipeline and increase cooperation with my consulting and product partners.

Share

Oracle: Get Date In Different Timezone

4 June, 2010 (12:09) | Uncategorized | By: joseanes

Today I got the task to give the same Oracle DATE in multiple timezones.  Sounded simpler than I found.  I am sure someone else has done this in a simpler way, but I didn’t found the straightforward answer so I decided to spell it out here.

Oracle is terrible with dates and times.  It has the TIMEZONE and DATE data types, but they do not work well together – and sometimes I think they do not even work well together independently.

The query itself was huge, so I will save you from reading it all.  The important sub-component of the query was (S is the table where SAMPLE_DATE was):

CAST (   FROM_TZ( CAST(
S.SAMPLE_DATE AS TIMESTAMP), ’America/New_York’         )
AT TIME ZONE  ’GMT’
AS DATE )

To make matters more interesting, this was in Cognos, so I used prompts to get the expected timezone, as in:

CAST (   FROM_TZ( CAST(
S.SAMPLE_DATE AS TIMESTAMP), ’America/New_York’         )
AT TIME ZONE  (#prompt(‘Timezone’,'text’)#)
AS DATE )
And to make things even funnier, the task was not as simple as I originally stated it.  They only wanted to use records that where within some business hours definition:
TO_NUMBER(TO_CHAR(
CAST (   FROM_TZ( CAST(
S.SAMPLE_DATE AS TIMESTAMP), ’America/New_York’         )
AT TIME ZONE  (#prompt(‘Timezone’,'text’)#)
AS DATE )
, ‘HH24′))>=#prompt(‘FromHour’,'number’)#
That is the story.  Oracle, Timezone conversion, DATE, TIMESTAMP, Cognos, and Business Hours.  Just to make it very fun.

ddd

Share

Flight Case: A Rack Alternative

26 March, 2010 (06:33) | Hardware | By: joseanes

I was debating between several options for my test servers: a 4 post rack enclosure, full size, half size, a collocation center, or just the status quo: leaving them stacked one on top of the other on utility shelves.  The rise and fall of countless of startups has flooded the market with different data center quality hardware pieces that you can use on your own lab if you comb through eBay and craigslist.  I already had the servers and routers, now I needed a formal place to organize them.

Rack enclosures seem to be the proffered way on data centers – and can be found cheaply on ebay, if you can pay the freight (which could be more than the article price).  But through a lot of luck and a bit of searching I found a guy who sold me a flight case.  It is hardened for air or truck travel, very well padded all around, with 19″ racks inside on both ends.  It only fits 12U from each side, but I think it is sufficient for the purposes of the lab I wanted to enclose.  For $250 USD Cash, I can’t complaint: and it fitted on the Subaru – free freight.

I have found some advantages to it:

  • Easy to move around.
  • Noise reducing (all of that padding on the sides really help – maybe it was made with some musicians in mind rather than geeks).
  • Racked servers are easier to maintain than piled up servers (this would be true of any of the racking alternatives).

Just wanted to share the fact that there are alternatives to the full rack.  Who knows, maybe I will buy a 42U rack some day if my server collection keeps growing – albeit I would rather go the could computing path.

Share

Don’t Waste Memory : Read From Streams

5 March, 2010 (09:01) | Uncategorized | By: joseanes

Just because we now build the most basic desktop with 16 GB of RAM, it doesn’t mean you want to read that 2 GB file into memory before processing it.
Two recent situations that re-iterate this idea:

JAVA JAXB
The other day we discovered a performance issue on one of the software applications we where building during the Quality Assurance phase. With small, unit testing input files the application was flying. With large files the application performance dropped quickly, worse than linearly. The input files where XML files being processed by JAXB.

We initially thought the culprit must have been some inefficiency inside JAXB but we soon discovered we were wrong on that initial assumption. Very simple log4j debug statements before and after a point where we converted a File to a String (prior to sending to JAXB) was the bulk of the time spent – a big waste of time since JAXB is great at processing File streams directly, without any need to convert to JAXB.

Lesson learned: whenever possible go from File or Stream to whatever processes your data. Skip loading into memory.

C Microcontroller Based HTTP Client / Server
On another project we were working on , we quickly discovered that using memory was not an option. These microcontrollers have 1 or 2 KBytes of RAM. That means that all of your variables must consume less than about one or two dozens of lines of text worth of data. That is tiny. Yet, you can serve a web server out of them, but only if you avoid RAM.

The secret is not to build the string that you intend to send back to the user in memory before sending it. Rather, you want to programmatically build each component and spit it out the Stream (network) as soon as it is available. That way you are not limiting the amount of data you can send.

Lesson learned: Treat your memory as a scarce commodity, and you will soon find that you can do wonders with very little resources.

Share

Pachube

18 February, 2010 (17:49) | Arduino, Data Center Energy | By: joseanes

Pachube is a data aggregator for time series data (things you can chart).  You dump data on it on a periodic basis and later on you can retrieve it.  Kind of a data hub.  Very useful on applications that are geographically and network dispersed (firewalled)  that you only want to access from around the world.  Could be a great idea for a Data Center Energy Monitoring Solution where you have a low density of elements (sensors) per location, but a widely dispersed and highly firewalled environment.  Also great for locations where you want to put instrumentation, but you do not want to put a full featured workstation to collect the data.  They are on an wide open beta.  Check them out.  And they do favor Arduino folks, and that is how I found the site.
I decided to try them out.  I may use them as a repository of sensor data on small, less sensitive projects.  For more security sensitive projects, I might use other alternatives.
My initial experimentation goal was to extend upon the libraries they offer for the Arduino and the Arduino Ethernet Shield.  I produced a library that I quite like:  20100218-pachube
This is the experiment I did:
My goal is to create a Pachube manual update client on the arduino that pushes EEML XML format to Pachube directly, without a PC in the middle.  I want to do this because the XML format is a lot better than the CSV one:  it allows me to tag the data from within the code with labels and units.  It is also cleaner to understand.  I also want to use the same EEML XML format for my own purposes.  So the same Arduino + Ethernet Shield that sends the data, I want it to provide the data itself as a web server for my internal applications as well as to pachube.
Eventually I will equip this machine with an XBEE to serve as a gateway to other applications, much like what Funnel IO is trying to do but eliminating the need for a PC in the middle.  (No sense in having a small device if it has to be connected to a full featured PC).
If someone has a better library, please let me know where to find it.  Here is a link to the code I am using to accomplish this purpose.  So far it is working well enough.  Some interesting points:
  • I had to print directly to the stream (ethernet in or out), because creating an EEML XML string was too much for the small memory of the Arduino.  Direct writing as a stream solves that.
  • I still want to avoid the reset every time it uploads to pachube (took that from the pachube CSV example).

The code: 20100218-pachube

Share

XBee / ZigBee

9 February, 2010 (09:46) | Uncategorized | By: joseanes

Digi has a mesh network device that, I must say, has impressed me.  The ZigBee / XBee product line can quickly convert a microprocessor / micro-controller(like a PIC or an Arduino) into a powerful network application.  They communicate with the micro-controller like a serial port (think COM ports in your computer), but transmit wirelessly in the 900Mhz / 2.4GHz frequencies.  The configuration is minimal (unless you want advanced features), and they have a range from a few hundred feet to a few miles, depending on the model you buy.

Given those properties, I decided I had to give it a try for the Arduino Data Center Energy Sensor Platform experiments.

Setup was incredibly easy.  I just had to:

  1. Download the management tool from Digi.  Installed.
  2. Connected the Xbee USB Explorer (Sparkfun $25)
  3. Inserted first XBee.
  4. Updated firmware.
  5. Set the low destination bits to FFFF – broadcast.
  6. Did 3-5 for the 2nd XBee.
  7. Plugged in the 1st XBee on the Arduino XBee Shield (Sparkfun $25) that I had for the sensor transmitter (see the Arduino posting).
  8. Leave the 2nd XBee on the explorer, and watch the serial input traffic come in.

It couldn’t be simpler.

Share