Friday, October 23, 2009

Feast or Famine in Software Development Organizations?

In so many areas of my life I go thru these cycles of feast or famine – social engagements, work load, car problems, what have you. I either have lots or none, or is that just my perception?


There’s one area that I can think of in which I’ve never had this problem – the software development organizations I’ve been a part of. Sure, we’ve had that with bugs, or turnover, but never, ever, ever workload. There was ALWAYS more than enough work to do. Maybe it’s just the nature of the beast – companies always want to improve their products and there are a wealth of ideas on how to do that. It’s also a positive thing. I love being busy, and if a company can not keep it’s developers busy, why does it need them?


The downside however can be a feeling of overwhelm, or inefficiencies, or continual long, long weeks. What kinds of things can we do to smooth this out a bit, or at least mitigate the negatives? I have some ideas:


1) Prioritization – so many organizations are SO bad at this. The priority is the priority of the moment, based on the loudest customer, one data point, or the whim of an executive. A well thought out prioritization can allow your development teams to get more done, just by finishing what they’re already working on. I’m not saying it should never change, but it certainly should change less frequently than you change your clothes.
2) Focus – knowing the big picture will help with number 1, as well as with coherency of design and team morale. If you’re building something to do x, don’t try to do y. Pick one thing (at least to start) and do it exceptionally well
3) Learn to say “No” – I find that people (not just in development organizations) spend an inordinate amount of time exploring roads not taken, as in “maybe we should have done x”. I once heard a speaker call this “Killing the un-chosen alternative.” I like that, and not because I’m violent – I’m not. I like it because it allows you to devote 110% of your attention to being successful on the path chosen and stop second-guessing yourself, a time wasting distraction if there ever was one.


I for one hope there isn’t a famine of new product ideas or developers to carry them out. Let’s just try to do it sanely.

Friday, October 16, 2009

Self-regulation in Software Development

Senia Maymin (I can’t link to her website for some reason – I’ll update this when I can) has written a bunch about a concept called Self-Regulation. This concept fascinates me. It’s one of those things that’s simple – particularly to understand, but certainly not easy. It’s the skill that you use to do the things you need to or should do. The idea is that self-regulation is like a muscle and the more you use it (in any area) the stronger it gets (in every area.)


It’s easy to see how it applies to my life – go to the gym, make my sales calls, blog, etc. I always thought that once you did those things and saw the benefits, you’d do them again BECAUSE you saw the benefits, but the way she talks about it, it’s less intellectual than that. The more you do these things, the easier it is to do other things. But how does it apply to the field of Software Development?


It’s easy to see the areas where you might need self-regulation, testing, documentation, and perhaps for some, design. Does this mean that if you make yourself do a good thorough design it will be easier to make yourself do the testing or documentation? Well, it’s certainly easier to do those activities for a well designed system, but is it easier to get yourself motivated to do them? Interesting question – I really don’t know…

Friday, October 9, 2009

Partnering with other engineering firms

We’ve been interested in partnering with other engineering firms, but have never quite made it work. I’m not exactly sure why, but looking back, I’m not sure all the previous attempts have been true partnerships. We’ve been approached by a few firms recently, so it’s got me thinking about it again.


It seems like it would be a good idea. We often have consulting jobs and don’t have the right person, and occasionally we have a consultant free that may be able to do a job for another firm. In this economy, it makes sense to maximize any opportunity, and by working with other firms, you can expand your network and broaden your offerings.


So what would a perfect partner look like? Well, first of all there would be some commonalities. For example it makes more sense for us to partner with someone working in product development than say distribution. Second, there should be some extension of services. We’ve met a great mechanical design firm in the past, which could be a great potential partner. We do very little of that, and they do very little software and hardware design. Finally, there needs to be common values. We would never consider partnering with a firm that did shoddy work or engaged in unsavory (in our opinion) business practices.


I’m looking forward finding those good fits. I guess with anything, patience is key.

Friday, September 11, 2009

Getting a Job as an Engineer or Programmer



I know a lot of people that have been out of work for a long time.  Most of them are continuing the battle.  So what can they do to increase their chances?  Besides the obvious (networking, personal introductions, etc) there are ways candidates can stand out from the crowd even when they don’t have a personal connection in the hiring company.



First some basics, I am amazed at how many candidates don’t return phone calls, or when they do they’re rude, disinterested or worse.  I’ve had phone conversations with your typically “crusty” engineer, and I even had a candidate recently swear at me.  Actually, not just once, but a long angry “F-bomb” laced tirade.  I understand he was frustrated, but calling me names did not make me inclined to help him out.



Ok, so assuming you have some basic common sense and social skills what can you do to stand out?  Do a little research – check out my company.  At least know what we do, better yet, have some relevant questions.  Next, have some ideas how you can add value to my company.  Interviewers need to figure this out – make it easy on us.  If you have prior experience in my industry, highlight it.  Don’t just assume that because it’s on your resume it will be obvious.  Finally, tell me something about yourself that differentiates you.  Please, please, don’t tell me you have good people skills or are a self starter. It may well be true, and it may be very important for the job, but it’s so cliché, it’s meaningless.



And for extra credit?  Go above and beyond and do some more research.  Find someone in the company or a former employee (LinkedIn is a great resource for this) and get more info about the culture, and what the job entails, and then tell me how you specifically, with your unique background and skill set can help make my company more successful.  The more specific the better, and if you can tell me how you’ve done this in the past, even better!



Good luck, and keep the faith!

Friday, August 7, 2009

Hiring engineers now is easy, right?

Wrong!  I’ve run across quite a few people in the past year that have assumed that’s the case, but have found out differently.  Hiring top software programmers and hardware engineers is always a challenge.  Having piles and piles and piles of resumes does NOT make it any easier.


So what’s a hiring manager to do?  Well, the last hire I did for myself (as opposed to the ones that I help our clients with) I had four very clear objective criteria.


1)      The candidate had to have a Bachelors’ degree


2)      The candidate had to have experience with a specific program


3)      The candidate had to have at least 2 years professional experience


4)      The candidate did not require H1-b sponsorship


One of our clients is doing this now with good success.


Now, I know you can make valid arguments against any of those hard and fast rules.  Some of the smartest people I know don’t have college degrees.  In different times I might have made that argument myself (might be good idea for a blog entry next year), but you need some way to get through hundreds of resumes a week.  The nice thing about objective criteria is that a hiring manager can get help – someone to prescreen for him.  So what are your deal breakers?  Knowing that going in will make hiring in these times much easier.


I’m sure all you job seekers out there are saying “That’s not fair!”  You’re right, but as my mother always said, Life’s not always fair.  So what’s a job seeker to do?  Well, I need something to write about next week…

Wednesday, December 31, 2008

Selecting a Channel Partner

One of the challenges I face this year is selecting and managing channel partners. Although this is not entirely a new experience it is the first time that I have determined to actively manage the relationships. In the past, partnership arrangements have been created solely by expertise in a certain technology.  For example we became experienced with a specific microprocessor family and toolset and developed a solution partner relationship with the vendor.  The relationship was casual with few interactions. And as one might expect we had had mixed results; some referrals, some proposals, and minimal actual work.

I began to think whether having channel partner relationships are really helpful towards meeting our business development goals. I believe they can be. But I need to figure out how to make the partnership work.

So I began asking questions.

  • How can I know which company is the right one to establish a relationship?

  • What type of company should I be evaluating (i.e. service or product)?

  • How much time and money should I invest in the partnership?

  • How does our company add value?

  • How can I project a business return?

  • Are our business interests aligned?


I have many more questions with few answers so far. But it is a beginning. I will have more to say about channel partnerships as the year progresses.

Sunday, September 28, 2008

Messiness

I happen to be one of those people who are very organized. In fact, I don’t function very well when I’m not. My desk is neat, my files are organized, and when they are not, I am not as productive. I don’t consider my self compulsive, but I suppose some might.

I think this kind of mindset has made it very easy for me to adopt and appreciate a formal development process and good architectural standards. I’ve known a lot of people who have offices or workspaces in which every available surface is covered with piles of stuff. Similarly, I’ve know developers whose code is just as “messy” - inconsistent coding standards (even with themselves), poorly partitioned, intertwined spaghetti.

Do you think some people are just naturally predisposed to be “neat” in all areas of their life? Can developers that are not naturally predisposed to this find comfort and value in good development practices?