Archive

Posts Tagged ‘Novell’

Living Every Day

April 8th, 2011 View Comments

Despite what some might think, not every moment I worked at Novell was torment.  In fact, most of my time there was pretty good.  But I admit there was a time when I got pretty discouraged.

It was some time after we’d shipped Novell Forge.  Multiple attempts to expand the scope and vision of Novell Forge had been thwarted when I’d repeatedly failed to make a good enough case to invest further in it.  The Developer Services organization was growing smaller and smaller, through layoff and attrition — Novell, sadly, never really did understand the need to invest in their developer community.  I’d been reassigned to a new team from a boss I really liked, and had been given what seemed like a busywork assignment.

I used to joke back then that I could prove I was the least important employee at Novell.  First, organizationally:  Developer Services was surely the most underappreciated and least important organization in all of Novell, and of all the assignments in our organization, mine was the lowest priority assignment.  This part I’d actually confirmed with my management, who had presented a slide deck with our ongoing objectives listed on one slide and those we’d rejected on a subsequent slide.  I’d verified that the first slide listed the accepted objectives in priority order, and my assignment was last.

Second, geographically:  You could (jokingly, of course) judge an employee’s importance by a) how close their building was to campus center, b) what floor they were on (higher floors being more important), and c) how close their office was to the corners and edges of the building (corners, then outside walls, being more important).  Since my office was the ONLY office not on an outside wall on the bottom floor of the building farthest from campus center, I’d joke that this also proved I was the least important person at Novell.

So I joked about it, but also wondered most days whether it really mattered if I came to work at all.  Did anyone care if I showed up?  Did anyone care if I left early?  Did anyone care if I actually accomplished anything during the day?  Did my assignment really matter at all?

I kinda wallowed around in this mire for some time, still coming to work and going through the motions, but wallowing anyway.  I thought about leaving Novell but nothing really materialized.  I’d heard all my life that you should love your job; shouldn’t I be finding a place to work that I loved?

Then one day it finally hit me:  Instead, shouldn’t I be loving the job I have?

I realized that, regardless of the importance of my work to the company, I could make it important to myself.  I vowed that I would take a lot more pride in my work, that I would try to deliver software of high quality and craftsmanship regardless of the assignment I was given, and that I would find other ways to get involved.  I started delivering better on my project.  I created a new technology.  I worked with some great guys at Red Hat to start a new Eclipse subproject.  I got involved with Novell’s Software Development Community of Practice and eventually became one of the practice leaders and one of Novell’s primary thought-leaders and bloggers around agile development methodologies.  I enjoyed my job much more and got an opportunity to move to a different team, a product development team, comprised of some great individuals whom I would never have gotten to know otherwise.

I’ve just finished reading Hugh MacLeod’s book “Evil Plans.”  One of the key phrases in that book is:  ”Life is too short not to do something that matters.”

I’ve been thinking about this and about me and my past and about tidbits I get from conversations with friends and things I pick up on Twitter and Facebook.  How many of us wake up every day with the sole goal of getting to the end of the day?  Every day?

What is it you are looking forward to?

When you wake up in the morning, are you most looking forward to about 16 hours from now, when you can go back to bed?  Or the time when the kids are finally asleep?

When you head in to work, are you most looking forward to noon, when you can take a break from work for an hour?  Or five o’clock, when it is time to go home?  Or the weekend?  Or summer vacation?

Isn’t that a waste, to spend so many hours of the day waiting for them to be past?

I realize that not all of us have our dream job.  But, as I learned, instead of yearning for your dream job and lamenting all the ways that your current job isn’t your dream job, you can also decide to love the job you currently have.  You can give more than you are currently giving — not more time, necessarily, but more heart, more care, more passion.  If you are a schoolteacher, you can yearn for summer vacation and lament those kids you have to put up with for such a low salary until then, or you can ignore the voices telling you how poorly you are paid and decide to make a difference in the lives of as many of your students as possible, a real difference, and find fulfillment in being the best in your profession.

And if you can do that with your job, if you can choose to love your current job instead of waiting until your dream job finds you, can’t you also do that with your life?  Can’t you also take the approach of choosing to give more heart and passion and care and love to the life you have instead of waiting for the life you want to come and find you?

The funny thing is, in my experience I found that as I gave more to my job, it started to become more like the job I wanted.  Things started to happen in my favor.  Opportunities came up that weren’t coming up before.

I’ve found this on other occasions as well.  At times when my career wasn’t heading quite where I wanted, choosing to care more and give more seems to get things moving again.  Things just start happening when you do that, somehow.

The best part, however, is that you have more days that are meaningful.  Each day is a day to give and add value and feel important.  You find meaning in your life every day when you stop worrying about all the things that aren’t working out for you and start finding ways to give.

Enjoy your job more by giving more of yourself at work.  Gain better friends by seeking opportunities to be a better friend.  Take time to read a book to your child, or play with the trains or Polly Pockets, or watch “Tangled” again even though you watched it yesterday, and the day before, and the day before that, because they will not be little for long.

Make your days meaningful and live every day.  Don’t spend your days waiting for your dream life to happen to you.  You deserve better than that.

Even More “Common” Sense

March 15th, 2011 View Comments

That last post reminded me of a funny story.  It is 100% true.

It was April of 2000 and we had just moved to Utah because I’d taken a job at Novell.  We were closing on our home the following day and I had just received a paycheck I needed in order to close on our new home.

Some of you already know where this is going.

I walked into the bank with paycheck in hand.  I went up to the counter and said, “I need to deposit this check, and then I need to draw a counter check for certified funds in [x] amount.”

The teller looks up my account information and says, “Uh, you don’t have enough money in your account to draw a check for certified funds in that amount.”

“Well, that’s why I’m depositing this check, see.”

“We have to wait for the money from that check to clear before we can draw a check for certified funds with that money.”

“How long does that take?” I asked.

“Usually two or three business days.”

“Well, that is not going to work for me.  I need to close on a home tomorrow!”

“I’m sorry, sir, that is our policy.  I’m afraid there is nothing I can do for you.”

I thought for a minute, nearly stepped away from the window.

Then I said, “Can I cash this check instead?”

“Well, yes sir, you can cash your check, if you want.”

“Alright,” I said.  ”I would like to cash this check.”

I endorsed the check and she counted out the money into my hand.  But I didn’t leave.

“Is there something else I can help you with?”

“Yes, just a question.  If I deposit this cash, can you draw a check for certified funds using this cash?”

She looks at me, a bit stymied.  ”Well, yes.”

I handed her the cash she had just given me.  ”I would like to deposit this cash into my account, and then draw a counter check for certified funds for [x] amount.”

She proceeded to do just as I asked.  We closed on the house the next day.

(Homework assignment:  Essay:  Should I feel more annoyed at such a stupid rule with such an obvious workaround, or at the fact that an employee of the bank was unable to identify the workaround and help me out?  Discuss.)

Categories: Humor Tags: , ,

The Money Flow Principle

February 16th, 2011 View Comments

For some time now I’ve been telling friends about this concept I have which I refer to as “The Money Flow Principle.”  Despite the risk of it sounding a lot like hero-worship, I’ll let you in on the secret.

It was in 2003, when I was at Novell and was vigorously championing an open source strategy, that Novell acquired Ximian.  Since I worked in Developer Services it wasn’t long before we engaged in conversations with Miguel de Icaza, one of the founders of Ximian and the driving force behind the Mono project, the premier open-source C#/.NET implementation.  Since that time Miguel and I have kept somewhat in touch, or at least we have some vague awareness of each other.  It isn’t like we hang out or anything, but we have a friendlike relationship.

Since that time when we first met, I’ve given a lot of thought to Miguel and the career he’s created for himself.  I noticed, for example, that when Novell acquired Ximian (or sometime thereafter), Miguel was given a vice-president role — specifically, a role that did not exist within Novell at all prior to the acquisition.  I marveled how, due to his affiliation with Mono, Miguel was virtually un-fireable.  Even if he were to get “fired,” he would continue to be affiliated with Mono, would continue to lead the project, and would without doubt soon find employment elsewhere, still leading the Mono project.  I’ve found it interesting to think that, if Miguel and I were to both attend Microsoft’s Professional Developer’s Conference, he would be having lunch with Microsoft executive VPs (I know this because I know he has done so in the past), while I would be sitting anonymously at some table in the cafeteria.  Yet I’m the one who works for Microsoft, not Miguel.

This is all the more interesting since it appears that Miguel didn’t strategically set out to put himself into this position.  Rather, it seems that he simply set out to do interesting and valuable work and trusted to karma to see what would come of it.  It seemed that, over time, the effort he made to create value caused money and opportunity to naturally gravitate toward him.

This leads us to the “Money Flow Principle,” which is simply this:  Money eventually flows toward he who creates value.

The premise is sound and seems to hint of truth, and Miguel’s example of this principle in action is noteworthy.  Perhaps you, like me, have come up with any of a number of ways that you could contribute to society, but you’ve withheld your contributions because you couldn’t figure out how you would be fairly compensated for what you might choose to contribute.  Perhaps you, and I, need to internalize this concept a bit more.

This, by the way, is one of the messages of “Linchpin”, the book by Seth Godin which I wrote about previously.  What gifts do you have to give?  What talents do you have to share?  What contributions do you have to make?  What if you knew you would be well compensated for offering your gift to the world?

Maybe it’s time you stop worrying about whether you will get paid and start worrying about making contributions that are highly valuable, contributions that give you intrinsic fulfillment and help you feel pleased with your place in life.  If my so-called Money Flow Principle holds true, eventually the money will flow towards you.

(By the way, I previously contacted Miguel to let him know I was thinking of writing this blog post.  He was quite gracious and seemed pleased that I would consider it.  Miguel, if you should happen to read this, I simply wish to express thanks for your friendship and example, and I hope the post doesn’t embarrass you.)

Your Career Path … Probably Isn’t

April 5th, 2010 View Comments

I have a good friend named Chris Cooper.  (No, not the actor.)  I worked for Chris for many years when he was Director of Developer Services at Novell; now, Chris is a partner with UV Partners, a venture capital firm in Salt Lake City.

Working for Coop (he goes by Coop, not Chris; calling him Chris seems weird) was a very important educational experience for me, primarily because Coop is a businessman, not a technologist, by background.  Because of this, Chris taught me things about the software business that no other manager or director that I’ve worked for has been able to teach me.  In particular, Coop helped me understand many of the reasons why Novell made some of the decisions they made, and why they didn’t make others I thought they should.  Knowing this doesn’t mean that they are right, but it certainly helped me to gain a different perspective.

Some time ago I had the opportunity to meet Coop for lunch in Salt Lake City.  I asked him how he was liking his work and he gushed about how much he loved his job.  Then he admitted, “You know, I never would have even considered this as a career opportunity for me, let alone would I have thought I would like it so much.”  He briefly covered his background — education in business, joined Novell as a sales representative, established key relationships with others, always tried to execute in his assigned role — and then this opportunity played out for him.  We discussed how odd it is that as young people we fret so much about which major to choose and which college to go to and which classes to take and which job opportunity to pursue, almost as though we think that the sum of of these decisions is going to head us down a career freeway, at high speed towards a specific destination, with no exits or detours or scenic byways, when in fact many, many people end up somewhere completely different from what they had planned.

I mentioned this later to a long-time friend who had spent many years in his chosen profession as a physical therapist before making a career change to sell educational technology to schools (yeah, I know!).  Of course he could really identify with this.  He said that often we think of our career not only as a path, but as a freeway like I just mentioned.  But in fact, he said, our career is more like a waterway.  It might be a little stream, or a large river; it might be straight or twisty; it might be fast-moving and exiting, full of whitewater rapids, or it might be slow and steady, if somewhat boring.

He continued the analogy by saying that as you float along the waterway you’ve chosen, you might eventually realize, “Uh, I don’t think this is going where I want to go anymore.”  Maybe it started out going the direction you wanted, but quickly or gradually turned a different way.  Maybe you thought it was heading one direction, only to find that it actually wasn’t heading where you thought it was.  Or maybe it is still going where you once thought it was, but you’ve changed your mind about what you want.  Clearly, if you want to end up where you intended to go, you’ll have to pull your raft out of the waterway and choose another one.

That’s why I say, your career path probably isn’t.  It probably is a waterway.

This is why this post over the weekend by Seth Godin really stood out to me.  I’ve got a big extended family with lots of younger people (siblings, siblings-in-law, cousins, etc.) for me to give advice to that they can quickly ignore.  I’ve seen many of them struggle with this.  They choose a major because it is easy instead of choosing a major because it is interesting, or they don’t finish their degree at all, or they don’t even make choices in college or a career because they are afraid to commit their whole life to it.  I believe in the value of education, but sometimes I’ve wondered why it matters at all if your career is so much left to chance?

Seth’s post identifies the link for me.  Education should be preparing you to take the choices as they become available to you.  You might have a career endpoint in mind, but you can’t be so in love with that endpoint that you won’t consider opportunities and alternatives that become available to you along the way.  How do you even know you will like that endpoint anyway?  Fretting about choosing the right endpoint is pointless.  Your career isn’t a path, it is a waterway.  You don’t know whether the waterway leads where you want or not; you choose one based on the best available knowledge and judgment you have at the time.  You can always get out and choose another one.  So just get in and get started!

Novell Finally Kicks Jaffe Out

December 22nd, 2009 View Comments

Last week Novell announced that they are finally getting rid of their CTO, Jeff Jaffe.  It’s buried in the press release, but if you look hard enough you’ll find it.

It’s really too bad, because this press release really did not do much in the way of raising Novell’s stock price.  It must be because the news of Jaffe’s departure is buried.  If Novell had made a press release just about that, stock would surely have gone up.

As far as Novell goes, things can only get better.  I heard people were literally cheering in the hallways when they heard the news.  No, I’m not making that up.

Understand, I don’t have anything against Jaffe personally, so this isn’t meant as a personal attack.  I really don’t want to get too critical of people, generally.  But the fact that Jeff Jaffe was a CXO-level professional says a lot about what is wrong with corporate America in general, and Novell in particular.  He was very well compensated because he was expected to lead the company, but instead people at Novell wonder what he even got paid anything for at all.  If you had worked at Novell, you would know what I mean.

In a technical company like Novell, the CTO, if you have one, is expected to provide the technical leadership.  What products should we be focusing on?  What company strengths are we going to leverage?  Who is our target market and our customer?  What is our go-to-market strategy?  What is our partnering and third-party-developer strategy?  You’d expect a CTO to be intimately aware of all this stuff, and providing clear, consistent, and frequent direction to his engineering core to help bring about a technical vision that will win in the market place.

Jaffe’s strategy, on the other hand, was to completely disappear.

In fact, the only time I can ever remember him saying anything at all was just after he’d held a two-week-long brainstorming session with a bunch of his distinguished engineers.  I knew they were doing it, because it was going on in a conference room on my floor at Novell, right by the bathrooms and the elevators.

Presumably, the purpose of this session was to get the Novell brain trust together and answer questions like these to come up with a competitive strategy.  Of course, I wasn’t in the meetings, but the accounts I heard were a bit different from what I’d expected.  Apparently Jaffe went into the meetings with an idea of what the strategy was.  The first week was spent with the distinguished engineers trying to help him see that his strategy was not going to work.  Towards the end of that week they collectively gave up, and spent the second week trying to figure out how to not make his strategy sound so ridiculous.

A few days after the meetings, he announced his strategy in a company-wide conference call.  Basically the strategy was this:

  • The open source community is full of people who like to develop software and give it away for free.  They just like to work on interesting projects.
  • We like to make money on software and we have lots of great ideas.
  • Thus, perfect synergy.  We will give the open source community ideas of software to create that will make us money.  Since they have nothing better to do, the open source community will gladly make this software for us.  Then our engineers will add a few key features, tie pretty bows around it, and sell it.

This same day I received an offer to work for Mozy.  It was pretty clear that Jaffe’s strategy was a joke.  Embarrassing, even.  I remember thinking, “Things are never going to change around here if this is the best strategy our CTO can come up with.”

I was pretty discouraged about it.  It is hard to work for management that doesn’t instill confidence.  It is really surprising to me that a person could make the kind of salary he made with the kind of title he had and still do such a lousy job of leading.  How in the world did he ever get the job in the first place?

After the call, I walked to the office of a teammate to vent about it.  I told him, “I know in the past I’ve joked about some of the decisions different people in our upper management team have made, and I’ve quipped, ‘I could do their job better than that!’  Of course, we both know that I was kidding.  But this time, I’m completely serious when I say this:  I could do the CTO job better than Jeff Jaffe.  I know I could.”

My friend said, “Yes, I know.”

When I was at Novell, this happened fairly often.  Employees regularly felt very discouraged, disheartened, and demotivated because of executive management.  I figured that was pretty much just the way companies worked, and that it happened like that everywhere.

Which is why I marveled at this fact, when Jaffe left.  I contemplated how I’d felt that way, and realized that I’ve never once felt that way about my management chain at Microsoft.  On the contrary, I find that I am continually amazed at the level of professionalism, attention to detail, quality of decision-making, and overall caring about the company that I find in my management chain.

I thought perhaps it’s just because I’m new, so I mentioned this to a guy on my team who’s been with Microsoft for over ten years.  He said, “Pretty much, that is how I’ve always felt about my management chain too.”

Novell breaks my heart.  I wanted so badly for Novell to succeed while I was there, and I still want good things for Novell.  I know many great people who work there.  Novell’s problem has never been in the individual contributors; it’s been with the company leadership.

So getting rid of Jaffe can only be a step forward.  It may be too little, too late, but it’s worth a try.

Categories: Business Tags: , , ,

Three Months at Microsoft

October 15th, 2009 View Comments

Last week marked three months that I’ve been working at Microsoft.

As I’ve discussed before, making the decision to leave Mozy for Microsoft was not an easy one.  Let’s face it:  I’m not exactly a spritely youth anymore.  I’ve worked at a lot of different companies — and when I say “different,” I also mean, “different from each other:”  Small companies you’ve never heard of (Spillman Technologies), large companies you’ve surely heard of (IBM), companies whose politics continue to keep them from succeeding (Novell), companies who manage to succeed in spite of the politics (Mozy), and companies that just frankly exist only as dark, ghostly nightmares in the frightening nether regions of my mind (Enterasys Networks).  Yet as different as these places are from each other, one thing mostly remains the same:  the process of creating software is the same everywhere.

So that makes a decision to leave hard.  Since the process of creating software is the same everywhere, it is the intangibles that end up mattering, such as whether you like your boss, whether you get a nice computer or monitor, how comfortable your chair is, etc.  When you consider leaving, you wonder what unidentified intangibles you’ll be giving up and what you’ll be getting, and whether you will feel like this was a good trade a year later.

Leaving Novell for Mozy was like this for me.  I got many, but not all, of the intangibles I expected when I went to Mozy.  I gave up all of the intangibles I expected I’d give up from Novell, like five weeks of paid vacation and a beautiful window office on the 7th floor looking directly north to Mount Timpanogos.  Some things at Mozy ended up being worse than I expected, e.g. the 5% pay cut last spring.  Of course, I do realize that it is not Mozy’s fault that I didn’t get all the intangibles I expected; I set that expectation, not them; I failed to assess the situation accurately.

Nonetheless, as I contemplated leaving Mozy for Microsoft, I thought about this.  “Well, software engineering is the same everywhere.  So since the in-and-out of the job function is mostly the same, I wonder what intangibles I’m gaining and what I’m giving up?”

Well, I failed to assess the situation accurately again.  I made one key error:  Software engineering is NOT the same everywhere.

In particular, it is not the same at Microsoft.  At Microsoft, software engineering is more… uh… yeah:  more.

More better.

Have you ever worked for Microsoft?  If you haven’t, you don’t know anything about us.  I know you think you do.  You don’t.

Never in my career have I ever worked in any organization that took software engineering as seriously as Microsoft does.  I was very surprised to see how seriously we consider things like security and software quality.  I’m aware of the reputation Microsoft has received over the years for bugs and security issues.  Maybe things are different now, or maybe that whole thing was just a function of being the world’s largest, most powerful, and most widely used software company.  At any rate, I can tell you from personal experience that security and quality are very important here — important enough that we will delay shipment if we don’t feel like it meets our standards.  While this may seem obvious, I’ve never seen this commitment to quality permeate throughout an organization like it does here.

It has been incredibly refreshing to see a company take software engineering as seriously as I do.  I love that I’m free to require explanation or justification from my management when I don’t understand something.  I love that I’m supported in insisting on perfection in software design, code, and process to the degree that I can help us deliver it.  I love that people can communicate with me honestly and openly without worrying about my feelings, and that I can do the same with them, because, unlike some places I’ve worked, there is an undercurrent of trust and mutual respect between me and all of my peers wherein we know and believe that, despite having different opinions, we are each talented and capable professionals with the best interests of the company at heart.  I love being surrounded by incredible talent that makes me feel both humbled to be a part of the group and inspired to improve myself every day.  I love working for a company where, instead of feeling like my career has topped out and has nowhere else to go, I feel I have broad, wide-open vistas of learning and advancement just laying before my feet; opportunities sitting before me just waiting for me to seize them.

I had no idea a software company could be that much better than what I’d experienced in the past.  It is really awesome.  It may not be for everybody.  Not all software engineers care enough about delivering quality software that they will do whatever it takes — write unit tests, participate in code reviews, follow rigorous and time-consuming processes, be a small fish in a big pond — in order to do it.  But if you care about delivering quality software, like I do, I must say I highly recommend us.

After only three months I find myself saying something I never thought I’d say:  I love working at Microsoft.  I really do.  Intending absolutely no negative to any other company I’ve worked for (with the exception of Enterasys Networks, I have fond memories of great talent, great people, and great product deliveries at every company), working at Microsoft is unlike anything else I’ve ever experienced.

The Truth About Novell Forge

September 30th, 2009 View Comments

I got an interesting e-mail the other day from Novell:

Please Note: You have been sent this email because you are listed as an administrator of one or more Novell Forge projects.

When Novell Forge was first launched Novell recognized the need for a site dedicated to providing hosting services to a growing number of software development projects, many supporting our open source initiatives. Novell Forge quickly grew and was soon providing these service to nearly 1000 such projects. Demand for new projects has all but disappeared during the past two years while a number of additional project hosting options have begun that can provide a similar set of services to those of Novell Forge.

Now that there are many other options, Novell can turn its focus to other areas and pass the project hosting responsibilities to these other dedicated hosting sites. Novell will be decommissioning the Novell Forge system on December 15, 2009.

This is interesting to me because it is not entirely true.  I should know, because without me there would never have been a Novell Forge.

It’s a bold statement, I know.  It’s one I’m happy to explain.

I came to Novell from IBM in 2000.  It didn’t take long to realize that Novell’s developer story and strategy, or rather the complete lack thereof, was (and still is) a significant weakness in their overall execution.  People buy a computer operating system in large part because of the applications that they can run on it; if a business wants to run a CRM system, they’ll want to be sure that whatever platform they buy will run a CRM suite that is acceptable to them.  This is why having a strong developer strategy is crucial to platform providers, and almost everyone seems to understand this.  Novell certainly should; NetWare owned the x86 server market in the 80′s and early 90′s until Microsoft entered that market.  Initially, the Microsoft offering was not necessarily better than NetWare in terms of stability or performance, but Microsoft definitely outgunned Novell when it came to applications.  It was so much easier to create applications for Microsoft’s platform that their supported portfolio dwarfed Novell’s, and that was a significant key to dethroning Novell’s dominant position in the x86 server market in the mid 90′s.

Anyway, when I came to Novell and learned this, I thought that probably Novell’s Developer Services organization just didn’t know what to do (a mistaken analysis, I later learned) and if I worked there I could probably fix everything.  I was pretty young, arrogant, and naive then.  But in 2002 I was presented an opportunity to work in Developer Services and I took it.

One of the first things I was asked to do was to provide support to customers programming to eDirectory.  I decided to try to learn more about how to do this the same way our third-party developers would, by using the resources that were available online.  I found what appeared to be our authoritative how-to-program-to-eDirectory tutorial, got most of the way through my sample app, and got stuck.  Finally I started asking questions.  I quickly learned that everything I’d been doing was wrong; the authoritative documentation was incorrect.  It used an out-of-date and deprecated API and was no longer considered best practice.  It was some two or three years out of date, but hadn’t been changed yet because changing the documentation was just too painful.

I felt this situation was unacceptable.  We needed the freedom to create an abundance of rich and helpful developer content and to have it published and updated freely and frequently.  We needed to be able to do this without going through drawn-out and tedious approval processes and staging phases for even minor edits.  We needed to be able to continuously deliver not only whitepapers but tutorials and sample applications.  I felt that what was needed was a complete overhaul of Novell’s developer site, converting it into a web application where administrators (Novell Developer Services employees) could update the content and have complete control over what information was being provided to our developer community.

I discussed this with a colleague and my manager, and then we called a formal meeting to discuss this proposal.  I think there were four Developer Services employees in the room.  As we discussed the reasons to do this, other advantages surfaced.  A key issue was that, in Novell’s then-existing developer forums, many Novell developers were already contributing to solving each other’s problems, including answering each other’s questions and even sharing code, from small snippets to complete applications.  We realized that instead of top-down support flowing from company to customer, what our customers really preferred was community support with Novell as an active participant.  As we discussed this, one of my colleagues suggested that instead of writing the web app I suggested, we should do a project hosting site, like SourceForge.  Such a site would allow us to participate as a community with our users to exchange sample code, documentation, tutorials, and other content.  Novell Forge was born.

As we began to socialize the idea, we found out that a separate group within Novell had been tasked with creating a project hosting site for internal company use.  When we both became aware of each other’s goals, the synergies were obvious and it seemed apparent that we should try to coordinate our efforts.  Interestingly, we had human resources to give to the project but lacked funding for capital expenses; the other group had capital expense budget but lacked human resources.  Ultimately we agreed that, as my team developed the Novell Forge solution, we would also develop an internal-use version of the site to meet the goals of this team; in exchange, they would help us to get the hardware we needed to host Novell Forge.

Around the time Novell Forge was launched and completed, a number of people involved directly or indirectly from that team claimed credit for having launched Novell Forge.  Some of them were quite handsomely rewarded by the company, presumably at least in part due to their claimed credit for the site.  Others still claim in public that they are responsible for the site even though they had absolutely nothing to do with the conceptualization, proposal, approval, or implementation.

Meanwhile, those of us who did come up with the idea, who did make the business case and get the approval and deliver the site, well, we pretty much had to settle for a brief pat on the back from Novell.  Or did we even get that?  Anyway.

Novell Forge, despite its pretty lame name and humble beginnings, was actually quite well received by the press.  It earned kudos for Novell from Dave Kearns of NetworkWorld, which was not exactly easy to come by.  And as Novell tried to reinvent itself with an open source focus, purchasing such open source companies as Ximian and SUSE Linux, the existence of Novell Forge was frequently cited as evidence that Novell was serious about an open source strategy (example).  Interest in the site grew quickly and it soon hosted over 1000 external projects, as stated in the e-mail I quoted above.  My team was excited about the traction the site was gaining.  We had many, many ideas for how to grow the site and make it an even more useful tool for software developers.  We had more work to do than time to do it, and it was neat to feel like what we were doing had an impact to Novell.

Even though Novell didn’t seem to care about it.

Oddly, in spite of what my team thought was a pretty obvious success, we could not get approval for funding to continue to promote the site.  The team was gradually reduced in size, again and again.  When people would leave, their vacancies would languish unfilled until that position was eventually lost.  The team was instructed to not develop the site but instead to work on undefined new work in other undefined areas, wasting many person-years of development effort.  The community could sense Novell’s lack of investment and they lost interest.  Novell Forge became a laughing stock.  It was used as evidence of what a company does when they “just don’t get” open source, when it was ironically used as evidence of Novell’s good faith not too long before.

Things finally came to the point where there was only one employee assigned to maintain the site, along with other unrelated duties (I, and the rest of the team, had by now been reassigned to different projects).  Novell Forge was completely unsupported by Novell’s IT group, leaving instead the support of the site to this one individual.  I recall an occasion where the site went down over the weekend and was out for a couple of days.  It was obvious that the site was in demand, because users made Novell aware of the outage quite quickly.  However, Novell was not willing to pay for 24/7 support for the site, so instead of being brought back online right away, the site was down for the entire weekend until that resource came in to work the next Monday.  My manager brought this to the attention of our team with the insistence that we address it.  He stated that from that point on, that one employee would be the primary off-hours maintenance person for the site, and I would be the backup.

I then asked if Novell was going to start reimbursing me for my cell phone bill.  He said no.  I asked if they were going to buy me an additional cell phone, pay that bill, and also pay me extra to carry that additional phone.  He said no.  He said they would just list my personal cell number in the emergency contact list, and would call it if there were an emergency.  I stated that in that case I maintained the right to not answer.  He stated that I would have to answer, that it was my assignment.  I claimed that Novell could not require me to answer my personal cell phone if I’m the one paying the bill.  I then reminded him that in Novell’s support organization, at least at that time, people that were expected to respond 24/7 had their cell phone bill paid by Novell, were paid an additional amount to be on call, and were paid an additional amount if they actually took a call and worked that call during off hours.  I said, “If the site is important to Novell, that is what Novell should do.  If the site is important, it should be important enough that Novell is willing to pay in order to maintain uptime and keep our customers satisfied.”

Novell was not willing to pay.

I shortly moved on to a different team within Novell, and the other guy left the company altogether.  I’m not sure who has been maintaining the site since then.

What Novell chooses to do with their money and their human resources is their business.  This isn’t meant as a criticism; I don’t claim to have the right experience to criticize their decision to strangle Novell Forge to death.  This is simply meant as a statement of fact, and the facts are pretty clear:

  • You get what you pay for.
  • Novell did not pay for Novell Forge by giving due reward and recognition to those who truly brought this idea to the company.
  • Novell did not pay for Novell Forge by feeding its success with additional funding, promotion, and development.
  • Novell did not pay for Novell Forge by giving it the kind of support and maintenance that its customers expected.
  • The customers of Novell Forge were initially enthusiastic, but grew to sense the lack of commitment by the company and thus stopped participating.
  • Novell Forge died as a result.

Novell Forge may be planned for decommission this December, but it died years ago.  And don’t think you can fool me, Novell.  Novell Forge did not die because of lack of interest by the user community.  Novell Forge died because you did not care about it.  Whether that was a good decision or not is not for me to decide, but please, Novell, at least be honest with your community.  We did not kill Novell Forge — you did.

UPDATE:  Dan Reese, a member of my team back then, corroborated this in his blog.

Actions Speak Louder Than Code

August 7th, 2009 View Comments

It took me a while, but I finally settled into my routine and got to where I’m reading my RSS feeds most days again.  I was going through the posts of the past month or so, since the job change, and ran across this article on the “Making Good Software” blog about things that keep someone from being a good software engineer, outside of (and often in spite of) an ability to engineer software.

I’ll summarize here.  It isn’t my intent to plagiarize; if you are remotely interested go read the article.  Here are the things:

  • Lack of discipline
  • Big ego
  • Poor communication
  • Forgetting the customer
  • Lack of proper work prioritization

I have known many of these people during my career.  Indeed, I was one of them.  I remember coming to Novell from IBM almost ten years ago.  I thought I was pretty hot stuff and I made sure my team knew it.  In fact, I actually said (this is embarrassing to admit) on more than one occasion, “There are people who know C++ better than I do, but I haven’t met any of them.”  My ego surely made me hard to work with.  It definitely was a cause of friction between myself and my management chain, and ended up being a (deserved) source of frustration and difficulty for me, until I recognized the problem and started working to address it.

I’m pretty ashamed of having behaved that way back then.  I hope I’m better than that today.  I guess recognizing the weakness is a good first step.  Fortunately for me, back then I was on a really great team with a lot of very capable, patient, and talented engineers that waited for me to learn from my mistakes and to grant them the mutual respect they deserved.  I consider myself pretty fortunate to have been able to learn from them what real software engineering is about.

Over my career I’ve had to work with people like this from time to time, software engineers that manifest one or more of these traits.  Sometimes these guys are pretty talented technically.  I’ve felt sorry for them as I’ve observed, realizing that these weaknesses are going to hold their career back until they recognize them and work to overcome them.  No amount of programming prowess will compensate for it.  And what’s even worse is, often because these people have the personality issues they have, you don’t get anywhere by trying to bring these weaknesses to their attention; they are often unreceptive to this type of feedback.  Like I said, you just have to wait until they recognize it themselves.

I can imagine being in a performance review with someone like this, having them explain to me all the technical awesome they did, and me replying, “Your poor soft skills are shouting so loudly that I cannot hear your technical awesomeness.”  Or, as I said in the title, actions speak louder than code.

I really believe this is true.  To write software professionally, of course you must have technical ability; however, this is a necessary but not sufficient condition for greatness.  The best software engineers I’ve had the fortune to work with in my career, past and present, not only had awesome technical ability but did not exhibit weakness in these areas.  And I’ll tell you what:  Those teams are wonderful teams to be a part of.  Those teams create strong. uplifting work environments and are able to deliver great products that meet customer demand.

Another way to say this is, in order to be a good software engineer, you must first be a good employee.

In fact, I’ll tell you how important I think this is.  The ability to mitigate or eliminate these defects from a software engineer’s persona is so important to me that, if I had my own company and were making the hiring decisions, I would not hire a candidate that I knew had these problems, no matter how incredible their technical ability.

A person with these weaknesses is really only suited to be set to the side to work on a special side R&D project where interaction with other employees is limited, and they don’t have to interact with customers at all.  Problem is, those kind of projects are either a) strategically important to the long-term future of the company, or b) of little to no real value, or c) a combination, often high potential value but with a lot of inherent risk that causes the real value to be low.  If the project is strategically important or of high value, do you really want to reward the biggest jerk in your company by giving him the highest profile assignment, leaving your best engineers to maintain the legacy project?  Wouldn’t you want to have someone working on that high profile assignment that knows how to collaborate with others and assemble all the best ideas to solve the problem the best way, even if that solution isn’t his/her own?  Contrariwise, if the project is of little real value or has so much risk that it offsets the real value, why even do it at all?

Nope.  In my company, if I were ever to have one, I wouldn’t hire or keep an employee who had these weaknesses and was not committed to addressing them.  I’ve seen the difference, both in morale and productivity, between teams where they don’t have these problems and teams that do.

Delta Dumbness

July 31st, 2009 View Comments

I joined my first frequent flyer program when I started working for IBM. Before then I did not really do any business travel. But when I first went to IBM I had to travel to New York just a couple of months later, and I joined the United Airlines frequent flyer program, since I was working in Boulder, and DIA is a United hub.

When I got back from New York, I had somewhere around 4000 miles in my account. Not “points” or “credits” – miles. I did some quick math and figured, “Gee, 4000 miles is enough for both Amber and I to fly round trip to Las Vegas! Let’s go!” So I called United to schedule the trip, at which point they carefully explained to me how stupid I was, because everyone knows you need at least 25000 miles to fly anywhere at all, and what was wrong with me anyway.

One day, I will meet the person who came up with this dumb scheme, and then I will spend the rest of my life in prison. Just kidding. I figure the jury will probably side with me.

Not long after this, I left IBM for Novell, and I also left those precious miles behind as I moved to Utah, where there is a Delta hub, and we are free to bestow upon United Airlines the loathing they deserve. I got a frequent flyer account with Delta instead. But I just wasn’t getting the miles. Traveling once or twice a year to San Francisco or Boston was just not doing the job.

Then one day my boss came and told me he needed me to go to Bangalore. Bwa-ha-ha-ha! At long last! A trip to Bangalore will accumulate nearly 25000 miles in a single trip! That’ll show ‘em!

I’ll tell you what – anyone who has to fly clear to Bangalore and back deserves a free flight.

So I had this nice little balance of, I think it was, 29000 miles. And then it was 30000. And then it was 32000. And all this time I could never actually get a chance to use the miles, because where am I going to fly by myself?

Two trips to Seattle this year bumped me up to 38000 exactly. My mom said if I ever went to Seattle again and wanted to take Amber, she’d watch the kids. And then my new boss at Microsoft asked me to go to TechReady in Seattle. All the stars aligned! I was finally going to get to use my miles!

Ah, if only it were so easy. I logged into Delta’s website to buy Amber’s ticket. What a shocker – the flight I needed Amber to take to come with me cost not 25000 miles, but 40000.

40000. And I had 38000.

I saw a link that said, “Transfer points from another rewards program.” One of the participating programs was the Starwood Preferred Guest program, which I’m also a member of, because the W hotels rule. It said that Starwood points convert 1 for 1 into Delta miles, so I logged into my Starwood account, and lo and behold, I had just under 2300 Starwood points! Hurrah!

Starwood told me you must transfer a minimum of 2500 points. Bummer.

I saw another link that said, “Purchase miles.” I did the calculation and saw that I could buy those 2000 miles for only about $60. The only bad thing was it said it could take up to 72 hours for the miles to be credited to my account – and I needed to leave in 70. I called Delta, to see if I could just buy the miles over the phone, and then book the flight. Alas, they could not do anything about it – 72 hours! Amazing – they are powerless!

The Delta rep suggested another approach. “Sign up for the Delta American Express card,” she said. “After you make your first purchase, your account is immediately credited with 20000 miles. You could sign up for the card today, get the card number, make an online purchase, get your 20000 miles, and then buy the flight with miles.” Ooh, that is a good idea.

So I had her transfer me to American Express. They also explained, “Yes, if you sign up, once you make your first purchase with the card, your Delta SkyMiles account will be immediately credited with 20000 miles.” Sweet! I signed up over the phone for the card. After I got done, the American Express rep said to me, “Your card should be there in about three weeks.” I said, “Okay. Can you please give me the card number now, so I can make a purchase with it today.”

“Uh, I can’t do that,” she replied.

“Well, I need to get those miles today, to use to book a flight, so I was told I could get the number and buy something online today, and get the miles.”

“Well, I can’t do that,” she explained. “And even if I could, you would not actually see those miles or be able to use them for about 6-8 weeks.”

This is a new definition of “immediately” that I am not familiar with. (However, now that I am aware of it, I plan to use it often. Amber: “Matt, will you please change Oakley’s diaper?” Me: “Sure babe, I’ll do that immediately.”)

Anyway, I got approved for the card, but I still was 2000 miles short. There was no way for me to book the flight with the 38000 miles and cover the difference. I had to take one flight in order to be in Seattle in time for a mandatory meeting, but the only way for me to put her on that flight was to pay cash. So I had to book her on a different flight, which meant she would fly out of Salt Lake four hours after I did.

Lame, Delta – lame.

Categories: Rants Tags: , , , ,

The Effective Desktop, For (Mostly) Free

July 1st, 2009 View Comments

Setting up a new computer is one of those things that should be enjoyable, but is mostly just tedium.  That’s because there really isn’t a single OS out there that does for me everything I want in a single distribution – at least not one I’ve found.  In truth Linux comes closest, but in the case of Linux, there are still some things (like Motocross Madness 2, one of the best PC games ever) that you just don’t get there.

And don’t start giving me lectures on Mac.  Same problem applies there.  Even without games, I still have pretty much the same setup overhead for Mac as anything else.  Macs are great, don’t get me wrong, but I don’t write Mac software anymore, so I don’t have to be showing the Steve-love for a while now, until I start doing Mac development again.

Anyway, I’m willing to bet that at my new job my development machine will be a Windows machine – it’s just a hunch I have.  So here’s the rundown of setting the machine up for usefulness and effectiveness.

Basics
Firefox First is Firefox. Firefox is a great web browser, fast and pretty reliable.  Once you’ve got Firefox installed, you’ll want to grab a handful of Firefox plugins.  When I set up next, I’ll be trying Google Gears, AdBlock, FireBug, Better GMail/GCal/GReader, Tab Mix Plus, FaviconizeTab, Fission, and GreaseMonkey of course.  I keep IE around because sometimes I need it, but I make Firefox my default browser.
ThunderbirdSunbirdRSSOwl In addition to e-mail, I use calendaring and news readers (RSS/Atom) almost every day. A lack of decent free options in the past got me used to using Google for all of this stuff. But if I were to decide to use rich applications for these purposes instead, I’d give Thunderbird, Sunbird, and RSSOwl a try.
Next is OpenOffice.org. I know, most people use Microsoft Office.  I realize it is better.  I realize it is more powerful.  I realize it is more ubiquitous.  It is also expensive for my purposes.  Stick with Office if you like it.
For instant messaging I use Pidgin. Since I’ve got friends using MSN/Hotmail, Google, and Yahoo! among others, Pidgin gives me a great way to be able to chat with all of them in a single IM client.  And it has some great plugins that I’m eager to try out.
Multimedia
For listening to and organizing music, I’ve been hearing a lot about Songbird and I think I’ll give that a try.  I don’t buy music from iTunes and I don’t have an iPod (I know, lame).  If I did I’d go with iTunes.  Although, I do like iTunes Genius feature, so I might go with iTunes just for that.
When it comes to audio editing, Audacity is where it’s at.  I’ve used Audacity to make ringtones from some of my music MP3s, to edit and mix recorded WAV files into MP3 files, and even for my son’s science project to examine the differences between sound waves.  A must-have.
In doing research for this blog post, I ran across these apps:  MediaCoder for translating and saving media files, Handbrake for ripping copies of your DVDs to formats for your handheld, and ImgBurn for creating DVDs.  So I haven’t actually used them yet, but I can hardly wait to try them out.  Managing video files and recordings is something I built my computer to do, but finding the software to get the job done has been tough.  Hopefully I’ll find the answer among these tools.
DoubleTwist is a new application I’m eager to try for managing the transfer and synchronization of files from the PC to your handheld device.  I’ve got a really cool little Sony Ericsson phone that is supposed to work flawlessly with DoubleTwist; can’t wait to find out.
I’ve used The Gimp for my photo editing for years and, for me, it removes any need for me to buy Photoshop.  I’m sure Photoshop users would disagree.  But hey, I’m not a graphic artist.  I’m just a guy who needs to edit photos from time to time, even for my job, and can’t justify the expense of Photoshop.  Lately, friends have been telling me about Paint.NET, and what they are telling me is that they like it better than The Gimp.  That’s a high standard in my opinion.  I’ll have to check it out.
Ah – where would I be without Steam?  Steam’s client is free to download and serves as the launching pad for most of the games I play.  A lot of games I really like, such as Audiosurf and World of Goo, I first found out about via Steam.  Every time I launch it it seems there are more titles and more publishers available through Steam.
Security
Truecrypt is a highly regarded application for encrypting data on your PC – one I’ve been meaning to try for a long time and plan to soon.  I know, I should do this.  Eraser, on the other hand, is one I’ve used for a long time.  It makes it really easy to truly erase files from your computer by performing multiple overwrite passes to keep your data from being restored after you’ve intentionally deleted it.
For managing the applications that launch automatically when your PC starts, it is hard to beat Mike Lin’s Startup Monitor and Startup Control Panel applications.  Startup Monitor runs discretely in the background, and just notifies you when some application has requested to be run at startup, allowing you to decide whether to accept this or not.  Startup Control Panel offers a simple view of the applications already scheduled to run at startup, and allows you to disable them.  Great for improving boot times and free resources, not to mention helpful in keeping your desktop secure from rogue apps running in the background doing who knows what.
Spybot Search & Destroy is essential for keeping your PC clear of spyware and adware that want to do evil things behind your back.  It integrates with most common web browsers, including Firefox, to help lock them down to avoid evil cookies and other tracking software from sending information about you to others.
If you are up for trying a free PC antivirus application, ClamAV is the answer for you.

Okay, I haven’t used it and probably won’t for a while because I’ve already got a license for a security suite.  But if you are in the market it is probably worth a try.  It certainly could not be worse than BitDefender (that steaming pile).

Utilities
Daemon Tools is a simple utility that can mount local disk images as filesystems.  Mac does this very easily, of course, with .dmg files, but you need a tool like Daemon Tools to do it on a PC.  Use Alcohol 120% to create mountable disk images from game CDs, for example, which will enable you in most cases to play PC games by mounting the disk image in Daemon Tools instead of inserting the CD.  Or use it to mount ripped DVD ISOs when you are converting them to a format you can use on your handheld.
Many years ago, Novell had this really great product called iFolder that you used to synchronize files between multiple computers.  Like many Novell products, it was a really awesome product that nobody ever heard about because Novell can’t figure out how to market anything.  But Novell employees know about iFolder and most of them are like me – once I got used to using it I could hardly stand to not have it.

When I left Novell this was a big big problem for me.

Finally Dropbox came along to address my problem.  Dropbox allows you to do what iFolder did years ago – synchronize files between multiple computers.  Dropbox is not nearly as full featured as the latest iFolder 3, but at least this one you can use without being a Novell employee.

As I’ve said before, once I started working for Mozy I realized that online backup should be considered essential for anyone.  I really don’t know why a person wouldn’t use Mozy.  Even if you are backing your data up on a second drive, USB drive, thumb drive, etc. you should be using Mozy, to automatically provide a secure backup copy of your data in a separate location – for recovery from fire damage, for example.

Having worked at Mozy for the past 14 months, I can vouch for their solid technology which is, in my opinion, the best in the industry without question.  You need online backup, so why not use Mozy?  You can back up 2GB for free or as much as you want for $5/month.

For archiving and compressing infrequently-used data, I recommend 7Zip. It will unpackage almost anything and will package in the most common formats, including Linux-compatible TAR/GZ formats.  It’ll also do encryption and self-extracting packages in some formats.  In other words, it’s pretty much everything you want in an archiving tool, for no cost.
I haven’t tried Everything yet but I plan to soon.  This is a highly rated desktop search engine along the lines of Spotlight for Mac.  Windows search I mostly use as last resort, but if this is anything like Spotlight I’ll use Everything all the time.
Freemind is a note-taking application that I’m eager to try.  I’ve been needing one of these for some time, so I’m anxious to give it a shot.
I consider Cygwin an essential PC utility.  Since I’m a lot more familiar with the Linux shell than the PC DOS-style shell, Cygwin provides me with a command prompt I’m comfortable with.  Cygwin comes with a large number of helpful tools, like the GNU C complier suite, ssh/scp, wget, and others.
I’d also consider SQLite an essential PC utility.  SQLite is a very simple file-based SQL engine that is very useful and freaking awesome.  I’d recommend a PC utility for using SQLite but there really isn’t a good one.  Probably your best option is SQLiteSpy.
Application Development
I’ve said before that if a person’s going to learn to write software, I think the two most important languages to learn are C and Python.  Since you already installed Cygwin you probably already have a C compiler on your machine, so now you need to get Python installed.

In addition to Python, Ruby seems pretty interesting and one you should definitely look at, in addition to Python (and not instead of Python, not yet anyway).

You should note that if you plan to do Python and/or Ruby development, you’ll probably want to get used to doing that natively on your machine, and not via Cygwin.  So don’t depend on the Cygwin Python and Ruby interpreters – use the native interpreters instead.

If you must, use Java.  Sometimes there’s stuff you just can’t do without it.

Ah, Eclipse:  the mother of all development environments.  Having worked closely with the Eclipse foundation and been part of starting an Eclipse project myself, I have a strong affinity for Eclipse.  For Java development, I’d consider it one of the best, if not the best, Java IDE available.  It’s also a great free alternative for a lot of other languages and application types.  Get not only the base Eclipse, but the plugins for C/C++, PHP, RCP/Plugin development, Data Tools, Test and Profiling Tools, and Web Tools.

And if you aren’t going to get the Eclipse Python plugin, you’ll want to install Eric instead.  Eric is a pretty good little Python IDE that works on both Linux and Windows.  You’ll need PyQt for Eric to work I think.

If you are really wanting to do development in C# and .NET instead, but don’t have the .NET platform, you could try SharpDevelop.  I haven’t tried it though, so I can’t say – and in my new job, I’ll be doing my C# development in Visual Studio, which is certainly better.

If you want to try out simple GUI programming, especially cross-platform GUI programming, try wxWidgets.  You can program directly to wxWidgets in C or C++, or in Python using wxPython.  If you think GUI programming with wxPython is your cup of tea, you might also want to try Boa Constructor, which is a good Python development environment with GUI building tools.
For web development on a Windows PC, I love WAMP.  This simple bundle offers Apache, MySQL, and PHP all together in a single package that you can easily start and stop all as one.

(This is the part where the Mozy PHP bigots comment to tell me how rotten PHP is, and where they tell me how much better Perl is, and where I nod and pretend to agree in order to keep the peace.  So bring it on.)

WAMP is great for your typical free-style web application development, especially if you are building from an existing framework, which is quite likely to be built in PHP.  If you’re building from scratch, however, you would probably want to strongly consider Ruby on Rails, in which case you’ll want to install RubyGems to get Rails and other goodies.

Finally, I hear Kompozer is a pretty good HTML-style editor and page builder, and I might give that a shot sometime.