Follow @jack_ganssle

Go here to sign up for The Embedded Muse.

Embedded Muse 204 Copyright 2011 TGG February 22, 2011


You may redistribute this newsletter for noncommercial purposes. For commercial use contact info@ganssle.com. To subscribe or unsubscribe go to http://www.ganssle.com/tem-subunsub.html or drop Jack an email at jack@ganssle.com.

EDITOR: Jack Ganssle, jack@ganssle.com

Contents:

- Editor's Notes
- Quotes and Thoughts
- Tools and Tips
- Consulting Survey
- Advanced Degrees
- Jobs!
- Joke for the Week
- About The Embedded Muse

Editor's Notes

Are you happy with your bug rates? If not, what are you doing about it? Are you asked to do more with less? Deliver faster, with more features? What action are you taking to achieve those goals?

In fact it IS possible to accurately schedule a project, meet the deadline, and drastically reduce bugs. Learn how at my Better Firmware Faster class, presented at your facility. See http://www.ganssle.com/tem-subunsub.html .

I'll be offering a two-day version of this class in Brazil in March. There's more information here: http://www.temporealeventos.com.br/?area=123-projetando-sistemas-embarcados-com-jack-gannsle-no-brasil-aos-Programadores-e-engenheiros-desenvolvedores-lideres-que-atuam-em-projetos-de-sistemas-embarcados .

Michael Linden sent a link to an interesting, and disturbing, article about how cubicles are shrinking: http://www.cnn.com/2011/LIVING/02/08/shrinking.american.cubicle/?hpt=Sbin

Quotes and Thoughts

A C program is like a fast dance on a newly waxed dance floor by people carrying razors. - Waldi Ravens

Tools and Tips

The tool tips keep pouring in! Keep `em coming.

Amr Bekhit suggested an open source tool he recently released: "It's called PC-Lint Wizard and can be found at http://helmpcb.com/?p=220. It is a GUI tool designed to make it easy to setup and maintain Gimpel's PC-Lint for software projects."

Ajay Wazir suggested CodeDesigner, which translates various state and related diagrams to source code: http://www.codedesigner.org/ .

Martin Thompson liked Bill Knight's suggestion:

Bill Knight wrote: "One tool that I have found extremely useful in my
work is the "LOGIC" logic analyzer made by Saleae
<http://www.saleae.com>. It is a small, inexpensive, 8-channel
device that can capture and continuously stream data with sample
rates up to 24MHz to your Windows/Mac/Linux machine for display and
analysis."

"Seconded :)

"And when you consider that the software decodes UART, SPI, I2C straight onto the waveform display (as overlays), it's a must have for low-speed serial bus debugging. It's hard to put a "time-saved" number on it as things suddenly jump out at you instantly when you can see the decoded bus in real time!"

Ron Kumetz sent: "I have been using two tools from Trace Systems which have been incredible productivity boosters. I would hope that telling others about them would perhaps help someone else under the gun to get things done while also benefiting the company that sells them at the same time:

"The first is the SUMS system which is an ethernet bootloader on steroids. It is a complete firmware update management system for Microchip PIC based embedded systems. I can't imagine how anyone could duplicate the functionality for less than the price that Trace Systems sells it for! http://www.tracesystemsinc.com/ethernet-bootloader-pro/sums-compatible-bootloaders-for-ethernet-devices.html

"The second tool is TCPMaker also by Trace Systems http://www.tracesystemsinc.com/tcpmaker/tcpmaker.html. TCPMaker allows you to define your browser based user interface in a graphical development environment and then generates the code to manage sending data back and forth between the browser and the PIC based embedded system. I had a cool looking GUI up and running in an hour and the Adobe Flash based system has controls that are much cooler looking than HTML while being easy on your bandwidth. Once again doing this yourself may allow you to pat yourself on the back but you are not going to save your employer any money by doing so."

Dwayne Reid likes Open-Bench Logic Sniffer: "I don't know if you have come across something called the Open-bench Logic Sniffer (OLS) but its an open-source logic analyzer based on a PIC and a FPGA. It's good for up to 32 channels but the board itself contains only enough 5V-tolerant buffer inputs for 16 channels. The other 16 channels are brought out to headers.

"Here's the kicker: it costs $50 including shipping to anywhere in North America (and most of the rest of the world). Probe sets cost an extra $6 per input cable of 8 clips + ground. The daughter-board adding 16 more buffered input channels is an extra $15.

"Although the firmware is currently evolving, the current stable firmware is eminently usable. There are two distinct software platforms available for it: SUMP and something expressly designed for the OLS by a forum member with username of jawi.

"The first shipping version has FPGA code written by somebody who is not particularly experienced. It works but the performance is less than what is actually possible.

"The current beta firmware was written by somebody who actually designs large FPGA systems for a living. He has apparently gotten almost all of the features of an Agilent HP 16550a analyzer into the unit.

"Short-list of specs: single-data-rate (max) 100 MHz, double-data-rate sample rate (max) 200 MHz.

"Overview: <http://dangerousprototypes.com/open-logic-sniffer/>
In-depth description: <http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer>
Even more hardware detail <http://dangerousprototypes.com/2010/02/25/prototype-open-logic-sniffer-logic-analyzer-2/>
Stable firmware: <http://dangerousprototypes.com/forum/viewtopic.php?t=1780&p=17226>
Beta firmware: <http://dangerousprototypes.com/forum/viewtopic.php?f=23&t=1711>
Windows software: <http://dangerousprototypes.com/forum/viewtopic.php?f=57&t=1198>
ordering: <http://www.seeedstudio.com/depot/open-workbench-logic-sniffer-p-612.html?cPath=174>"

Consulting Survey

Thanks to the 141 of you who filled in the consulting survey from last month.

Hourly rates are all in USD.

73% of respondents are in the USA. There are not enough data points to establish any sort of correlation between hourly charges and the State in which the consultants work. In the USA consultants charge from $45/hr to $300/hr, with the average being $97/hr, with a median of $85/hr. In more detail (in the USA):

$45 to $60/hr - 14% of respondents
$61 to $80/hr - 30%
$81 to $100/hr - 32%
$101 to $125/hr - 11%
$126 to $150/hr - 6%
More than $150/hr - 8%

The correlation coefficient between years of doing consulting work and rate (USA) is only 0.25.

Part time consultants in the USA average $79/hr; full time get $104/hr. 35% of respondents report consulting part time; the rest do it full time.

There's no real correlation between fee charged and whether the consultant does just hardware, software or both. Nor is there any between fee and contractual arrangement (PO, informal, contract, etc). Further, there is none with years the consultant works for a particular customer.

There's far less data for the rest of the world, so correlations are impossible. Here's some data:

Australia: Average $90/hr, min of $80, max $100. Four data points
Canada: Average $93/hr, min of $65, max $150, 5 data points
Mainland Europe: Average $80/hr, min of $60, max of $109, 9 data points
India: Average: Average $12/hr, min of $5, max of $20, 4 data points
New Zealand: Average $60, min of $52, max of $65, 3 data points
UK: Average of $71/hr, min of 50, max of $100, 6 data points.

Consultants like their work, no matter where they are in the world. 55% report they "love it." One respondent hates it, 8 are "somewhat unhappy," and all of the rest are "reasonably happy." That's a substantially happier group than the survey of engineers in general I did in 2009.

Respondents averaged 12 years working as a consultant, and put in about 31 hours a week. 76% say they think things will be the same or better in the coming year.

41% use a contract with the customer. 33% have an informal agreement, and the rest use a PO.

7% rely on fixed price contracts. 59% bill hourly, and the rest report using a mix of the two schemes.

72% mostly work in their own offices. A few reported "other" for where they work, but a quarter work at the customer's facility.

Many people left comments. Here are few highlights:

Biggest problem is finding competent help when necessary on larger projects. Most folks that are good don't have time and can only help on weekends, etc.

For every 2 hours that I bill, I probably spend another hour on non-billable activities, such as background reading, marketing, presentations/conferences, taxes & accounting, general business development, networking, travel, etc. I could charge less and bill more hours, and spend less time on non-tech stuff; but I love working on challenging stuff that pays well & dazzles the customer.

At the risk of sounding like a jerk, I wonder if you do/will make a distinction between a "consultant" and a "contractor". It's not about title or prestige, it's about role & value. A consultant should bring extraordinary insight, value, and mentoring/teaching skills to the table. He/she should leave the group, not just the code/project, in a better state.

Have been moving away from this work mainly due to less available in area and more competition locally - I am guessing due to laid off full timers (I haven't been laid off yet).Hourly rate has been stagnant and/or declining in recent years.

I billed on a tiered schedule based on expertise, schedule, team size and complexity. For instance, a single person project that has an extended schedule, I'd charge $80/hr for the design phase, $65/hr for implementation. For immediate turn around projects that I have extensive experience in, I'd charge upwards of $95/hr, but with a hourly cap.

I could probably earn more and have a career path with a "proper" job but being able to indulge my passion as an embedded systems consultant in a home-based business is great for job satisfaction and family life.

I do embedded C, C++, ASM (little these days), and PC based apps. Very busy with same steady clients. One to two clients for most of the time, occasional small side projects. The rate hasn't changed in the last 10 years. Am I lucky to keep the same rate or am I under compensated?

I do mostly telecommute work in embedded software which is really rare and hard to find. My customer is somewhat local (50 minutes away), so I can go in every now and then for meetings. It works great having a young family and homeschooling.

I do not consult by choice - I was laid off from my "normal" local job and after nearly a year without work, took this short term contract with a long commute.

I got better quality customers when I raised my prices. Any my old customers suddenly had more respect for me. Best part is they don't like to waste my time. I found a barrier at $200/hr and lowered my rate a bit since the recession.

I have found one steady customer at $120/hr is more profitable (and satisfying) than short term projects at a higher rate $135-$150/hr.

I have to keep raising my rates to keep from having too much business, or I won't have time for my family.

It's a great career and I highly recommend it to all enterprising engineers.

My day job permits one day per week consulting. With regards to the degree discussion, if you make it all the way through the PhD gauntlet and get to work at a top tier university, having consulting opportunities at this level is one of the perks. My work is about 50/50 on-site and off-site.

Rates are poor here in the UK at the moment. Just over a year ago my rate was 50 (pounds) and ten years ago 39.50. Most I know have the same concern. My role is much more senior within the client now - the rate was take it or leave it. Little choice here at the moment.

Things are about the same but I worry about the future and if I can keep it going.

Typically, first project with a client is with a contract and from then on it's informal. My rate varies: 85/hr for scientists, SBIR etc., $100/hr for medical or life-critical aerospace, $150/hr for program management & business development. I had continuous work through the slowdown but now I'm getting buried...

When I started out in 1988, I did it purely for the perceived riches I would get. Within a few short years I realised that the main benefit is actually freedom from drudgery. About 10 years ago, the Labour government of the UK started to go after consultants by taxing them to death, but that backfired when the majority of us tightened up our contractual arrangements and business behaviour, and managed to avoid paying the draconian taxes completely. Now, I love my working life. Yes, I work hard, but it is at times that suit me and my family. Being in the embedded world, the hourly rates are low (compared with w/bankers for instance), but it is enough to live on.

Advanced Degrees

The degree article sparked tons of debate. Here is the final round of comments.

Paul Bennett responded to Gary Stringham's comments:
" Wow! You got quite the response
to your Advanced Degrees discussion. What surprised me was the high
rate of those who think that degrees aren't or shouldn't be
necessary/required. How would those people feel if an un-degreed
doctor were to perform open heart surgery on them? How would they
feel if an un-degreed lawyer were to defend them in a big lawsuit?

"It seems that the medical, accounting and legal degrees are more attached to a style of apprenticeship than purely theoretical learning. I have a lot of respect for apprenticeships as I came up through that route myself and feel it gave me a really good grounding in the practicalities of the profession. I am sure that doctors, lawyers and accountants practical capabilities are usually well honed (with a few exceptions that tend to make the headlines).

"Attached to the apprenticeship there was day-release at college so that we had a good education in the theory side as well. Any good Embedded Systems Engineer needs both the theory and the practical aspects. Having worked with others who came through the apprenticeship route and those who only did their degree level education also I have been able to compare the two sides of the argument.

" Moving into the embedded world, if you found out that an un-degreed
programmer wrote the program for your pacemaker that had a bug and
killed you, wouldn't you want to posthumously sue the company for
killing you? What about an avionics programmer that included a bug
that caused the plane to flip over and kill you? For safety-critical
applications, I would think those companies would required degreed
engineers to reduce their liability risk.

"The way development companies can reduce their liabilities is by regular, rigorous and searching auditing of their development processes, being open and honest when they haven't got it right. Additionally, their development process needs to incorporate sufficient levels of review at all stages of the development process. Whether or not the engineers are degreed or not matters little so long as the development company adheres to decent moral ethics and a sound development process.

" While I agree that a degree is not a guarantee of competencee, it
would bee a good decree that each worker bee in CS & EE have paid
their fee and properlee obtained their degree."

"I consider that, through my apprenticeship, I have paid my dues. I continue to fund my own attendances at conferences within the embedded systems arena (including ESC, IEE and Safety Critical Systems Club)."

Steve Stearns contributed: "I've been working actively in the embedded field since 1978. I graduated with a BS EE/CS in '81. My work was initially as a worker bee, than as product development manager for over a decade, and now as a consulting worker bee for a decade. The productivity of the embedded design engineers I've worked with has generally been inversely proportional to the years of formal education. Those that never finished their degree (usually they had started it) but went right out into work and stayed with it were generally the most productive. Interestingly, they were often the best read as well having understood they had to study on their own continuously to stay successful (the more advanced the degree, this less this seems to have been recognized).

"Those with a BS were nearly as good. Those with a masters were generally weak performers and, on the embedded side, I never succeeded in getting anything useful out of the few PhD's with which I worked.

"On the other hand, I did have a team of PhDs working for me at one point as MRI pulse designers and they were outstanding and totally kicked butt. So clearly the correlation (as I've experienced it) is not universal but is, instead, niche dependent."

Juergen Kemmler sent: "I'm Diplom Ingenieur (FH) Nachrichtentechnik == Degreed Engineer of applied Science in Communication Technology. My study 1980-1984 consist of the following parts: Before the real study 3 month of metal education like a Communication Technology worker (which had only 6 weeks!). We learnt filing. We filed a 250g hammer out of piece of iron and annealed it. We learnt to work with an engine lathe, We learnt hard-soldering and so on.

"The 1st Semester was a practical Semester (6 month) in a telecom company. In this semester we learnt the whole practical electronic education of a Communication Technology worker, which was pretty good. We learnt how to measure with all in that time available measurement equipment. We built switching circuits on patch panels for measure purposes.

"The 2nd to 5th semester were on our "University of applied Science". We started with 40 students.

"The 6th semester was also a practical semester. I worked in the research center of a telcom company. Here I developed with less support of my responsible engineer a dynamic RAM board with error correction. I got paid and not less for that time and for a student in 6th semester!

"7th and 8th Semester were on University. The 8th semester was the one where the degree dissertation was performed. It could be done in University or in a company (which was paid). We end with 22 students. Our professors always said, that we learnt nearly 90% of the theoretical learning matter of an 'real' University student.

"I hate math and theoretical electro-technics, but I'm sure, I need this knowledge as background to understand technical principles.
My opinion is, this education is enough for more than 80% of all jobs in industry.

"In my company it is over 90%. Nearly 50% of our engineers start with normal worker education (2.5 to 3 years). During this time they gain the maturity for study in a "University of applied Science". Our customers are around the world and we are benchmark in the industry.
My country stands for high quality products, I think we do something right in the education of engineers.

"Do things as simple as possible, but not simpler."

Esben Ovesen wrote: "First of all I think the trend of using engineers for coding is overkill. The engineers should be designing, not coding. But maybe the software business is too young and immature. Or maybe I am just too old school. The state of (embedded) software development, as I see it, is that we put too much thinking into the coding activity because the design activity is inefficient or missing.

"Secondly, comparing a judge or doctor to an engineer does not make any sense to me. The judge or doctor is the single point of failure. If she or he fails to do the job correctly nothing can prevent the accident from happening. If an engineer fails to do the job correctly the error is caught in some kind of test before the product leaves the company and if it is not the company stands as responsible, not the engineer.

"Finally, I must say that hands on practice has been the fastest way to learn. I hold a BSEE. During my education I have learned some basic C and C++ skills, and briefly a kind of software development process. What I did not learn about was software design, testing and configuration management. These subjects, which I think is crucial to software development, I have learned as a need-to-know thing in my daily thrive for a more reliable software development process. After 15 years I think I have a fairly good understanding of how to do. And more important: Why it is necessary. But I know a lot of software people, embedded or not, to whom design, test and CM could not mean less even if they hold a MS - Coding is fun."

Juha Kuusama made an interesting point: "I often bid for projects to customers. I want to be able to say "I'll put two MS's with several years of experience on this, as I want to ensure the success of the project" instead of "I'll but two good guys on this. They don't have degrees, but they usually deliver". All other things being equal, an MS is worth about 2x of an "experienced guy", both to the company and to the employee."

Jobs!

Let me know if you're hiring firmware or embedded designers. No recruiters please, and I reserve the right to edit ads to fit the format and intents of this newsletter. Please keep it to 100 words.


Joke for the Week

Many folks sent this link about the difficulty of programming: http://www.xkcd.com/844/ .

About The Embedded Muse
-----------------------
The Embedded Muse is a newsletter sent via email by Jack Ganssle. Send complaints, comments, and contributions to me at jack@ganssle.com.

The Embedded Muse is supported by The Ganssle Group, whose mission is to help embedded folks get better products to market faster. We offer seminars at your site offering hard-hitting ideas - and action - you can take now to improve firmware quality and decrease development time. Contact us at info@ganssle.com for more information.