Posted on September 5, 2007 in Uncategorized by Rob Di Marco8 Comments »

In the last few months, Adobe, Sun, and Microsoft have all had major announcements around their platforms for developing rich Internet applications (RIA).  Adobe, the current market leader in the RIA space with their combination of Flash and Flex, has recently been promoting the Air product that will allow Flex applications to hook into the desktop.  Microsoft has announced their Silverlight technology with a focus on integration with scripting and .NET languages and a strong focus on high quality video and audio experience.  Right after the Silverlight announcement, in what seemed like a knee jerk press release, Sun announced the Java FX technology to ostensibly compete in the space.  There are two motivators that are really driving interest in these technologies: better media (e.g. audio and video) experiences and better online/offline experiences.  Adobe and Microsoft get this and these drivers have been at the forefront of their offerings.  Sun hasn’t gotten the message.

Flash has been around for a long time and is installed and active on almost every browser, it seems most of the major video sites (e.g. YouTube) are currently using Flash as their RIA platform and the Flash 9 player has some new video/audio codec supports as well as support for ActionScript 3 that meets the ECMAScript specification (basically JavaScript).  Flash/Flex are mature, have solid tools, great documentation, a vibrant community and a huge installation base.  Flash/Flex has first mover advantage in the space.

Silverlight has just released their 1.0 and has gotten a ton of press.  From the development side, the combination of JavaScript and XML to create applications feels a lot like building applications with Flex.  Silverlight has also been designed to hook into .NET languages including IronRuby and IronPython and is really focusing on high quality audio and video experience.  For some cool examples of the technology check out a visual search engine, tafiti.com or the live streaming television broadcasting application LiveStation.  There is cross-browser and cross-platform support for the toolkit.  Not a huge community or install base just yet, but the technology is easy to install (about 4 MB download), easy to develop with, produces a fast and clean user experience, and the easy hook in to .NET languages plus its inevitable preloading into base Windows installs means that these communities will build up fast.

JavaFX is basically a nicer way to write applets.  There is no focus on offline applications, no focus on media, and a small effort on reducing download sizes.  Really nothing very interesting or new from what Java developers have had before.

It seems no one at Sun has ever read The 22 Immutable Laws of Marketing[1].  Let’s look at how many of the marketing laws Sun is violating.

  • Law of Leadership – Being the first to market.  Sun actually had an opportunity 10 years ago when applets were starting to be built.  But while they may have been first to market for embedded applications in a browser, they let Adobe Flash be the first into the easy to install browser plugin for media applications.
  • Law of Mind and Law of Perception – Java GUI applications are thought of as being big, slow, and ugly.  By including the term Java in the JavaFX name, people will clearly associate JavaFX applications with those terms as well.  Sun should rebrand.
  • Law of the Ladder/Law of Duality - It is very hard to change market position.  And if you are not one of the top two players in a market, you need to find a new market.  JavaFX will not be in the top two, they need a new market.
  • Law of Line Extension – Another problem with Java, the brand is so generic and means so many things that you don’t know what it is.  Java ME, Java SE, Java EE, JavaFX.  They all leverage the Java brand, but are all wildly different products.  (Sidenote, Sun’s changing their NASDAQ stock ticker symbol to JAVA continues these violations)
  • Law of Resources – Adobe is going around with their Adobe AIR tour.  Microsoft is partnering with a bunch of big media players (e.g. check out http://silverlight.net/Showcase/ for samples for WWE, CBS, MLB) to work with Silverlight.  Sun spent some money on a press release.

For JavaFX to be a success, for their to be a community, I would recommend the following:

  • Figure out what market segment you are solving problems for.  Do you want to be in the consumer RIA space or should the focus be on RIA applications developed within corporate intranets?  Where Adobe and Microsoft are focusing on the consumer space (explaining the drivers of media and online/offline play), perhaps Sun could focus on a different problem space with different needs.
  • Stop with every name starting with the Java brand!  Get some differentiations with product names so people know what they are talking about.
  • Come up with a real roadmap for the technology and let the development community know it is a core part of Sun’s development path, not a one off project.

[1] EVERYONE should own this book.  It’s $10, will take an hour to read, and will change your view of how you look at your company and business.

Popularity: 35% [?]

Posted on August 25, 2007 in Software Development by Rob Di MarcoNo Comments »

Nowadays, I spend so much time online, that I have little time to do real reading.  But after missing my flight to Boston yesterday, I found myself with a few hours to burn and could actually put a dent in my backlog of Harvard Business Reviews that I had been meaning to get to for a while.  I wound up reading a great article, an excerpt from Management Challenges for the 21st Century by the late management guru Peter Drucker.  The thesis is that knowledge workers must take responsibility for their career path and act as their own personal CEO.  No one other than you is looking out for your career.  You will have a working life span of 40-50 years and it is up to you to make sure that you are both productive in and satisfied with your job.  If your expertise is Java today, it better not be your expertise in thirty years.  You had better adapt.

So how should a developer operate as a CEO?  What do they need to think about.  What questions do they need to have answered?  Let’s discuss a couple required characteristics of a good CEO and then apply them to your career path.

SIDENOTE: Often, when we think of career growth, we equate growth to earning more money or a getting a better title.  These may be evidence of growth, but are not requirements.  Career growth may also involve trying new technologies, changing roles, or changing industries.  It may mean getting out of technology

Taking Responsibility

You, and only you, are responsible for your career path.  Accept this.  It is not your boss’s job to get you trained on new technologies, it is your responsibility to make this happen.  Figure out what you would like to learn and then ask your boss to help you make it happen.  If you do not take responsibility for asking, it is very unlikely that you will get what you want.  Regardless of whether your employer will pay for your education, do it anyhow.  Learn a new language (programming or foreign).  Read books and then apply them to your work.  Go to an interesting conference.  While it is definitely preferred for your boss to play a part in what languages you learn or what books you read, it is your responsibility not your boss’s to make it happen.

Determine Strengths

What are you good at doing?  Drucker posits that the only way to figure this out is by using feedback analysis.  He suggests that after every key decision or action that you make, write down what you expect the result to be and then review it in 9 to 12 months.  See if there are patterns between where you anticipated the results and where you did not.  From this feedback, figure out what you are good at and what you need to improve.  In addition, you may see things that you have no business doing.  For example, software developers often make atrocious project managers.  For some, this may because they lack training in the area; for others it may be that they lack the ability to develop an effective plan.  By looking at how you have done, you can see if consistent lack of planning is a problem and try to figure out if you can improve it or if you need others to help you with it.

In addition, look at how you operate outside of just writing code.  Take the opportunity to learn about things that extend outside your area of expertise.  Read books on marketing principles, go out on sales calls, take a basic class on accounting.  Improving yourself in non-technical areas will help you better understand demands on your co-workers and you may find that you have strengths in areas you never anticipated.

Know Your Core Values

Core values are the things that you feel are truly important to you; they are different than ethics.  Ethics relates to doing what is right.  Values relate to doing what you believe in.  For example, one of my key values is that I feel you should only hire the very best technical resources, that these resources should have problems explained to them and then should be empowered to make decisions as to how to best solve the problems.  The corporation I was working for decided to take a different philosophy where the business users were more responsible for deciding how to solve the problem.  That may be the right decision for the organization, but it violated my personal values.  Other examples of value decisions a company will need to make may include:

  • The level of R&D investment to make
  • Use and contribution to open source software
  • Whether people should be compensated by stock options or by cash
  • What accounting rules to use to recognize revenue
  • Support for telecommuting

Just because you may disagree with a company’s values does not mean it is a “bad” company.  But trying to stay in an organization that has values that conflict with your values will only lead to frustration.

Planning for the Future

Take some time to think about what you where you want to be in five years.  Figure out what skills and experiences you will need to achieve this goal.  Write down what it will take and review the list regularly.  Another great suggestion that Drucker has is to have a hobby.  You never know if that hobby will lead to a second career.  After twenty years working with technology, you may lose your passion and you may be prefer a change in career direction.  By encouraging other interests, you may find that your desired career path is no longer in technology but is in another area

Popularity: 5% [?]

Posted on August 4, 2007 in Software Development by Rob Di MarcoNo Comments »

Just ran across a couple of articles on distributed data processing.  InfoQ is discussing the need for a new paradigm for scaling processing at the same time development on an open source solution is progressing as Yahoo! seems to be gearing up development on Hadoop (Tim O’Reilly’s take).  When you get to a certain size of data, you have to think about solving problems outside of the traditional application server talking to database server way.  If you want to complex processing against millions to billions of entities, your data access time on the traditional database system is way too slow no matter how many boxes or how fast your processing logic is.  More and more organizations will start to face this problem, and there is a definite need for an open-source distributed processing framework that can become a standard and allow for developers to start building tools on top of it.  Maybe it will be the Hadoop library, maybe it will be someone else.

At my previous employer, we (by we, I mean a bunch of other smart people on my team) have built out a framework to manage this sort of distributed programming.  I advocated strongly that the organization should open source the project using many of the reasons discussed earlier.  Now that I have left, I hope someone can pick up the torch and get the MapReduce project released.

Popularity: 9% [?]

Posted on July 23, 2007 in Uncategorized by Rob Di Marco1 Comment »

Was just reading an article at cio.com that talks about How to Recruit in a Hot Market.  One of the points they talk about is marketing your IT organization, mentioning that some large corporation employ full time marketers for their IT team.  But how is a smaller team to compete?  One overlooked method is how an organization can leverage open source to market their development team.

How Can You Be Marketing A Development Team?

First, everyone should take an hour and read The 22 Immutable Laws of Marketing.  I’ll wait…..

Wasn’t that an hour well spent.  Okay, now that we know what marketing is and what to think about when building a marketing plan, we can dig into marketing your IT team.

When you recruit, you are selling a product.  To be precise, you need to sell to the consumer (the qualified job candidate) that your product is one they should buy (they should work for you rather than working for someone else).  From our previous discussion on building teams, I know that you are looking to hire great developers so they will shortly have multiple job offers.  Heck, they may already have a job and not be actively looking (lack of awareness of your product).  So your competition is fierce.  One way to compete is on price (in this example, by offering a higher salary).  But most discerning consumers are also concerned about the quality of the good and how satisfied they will be with it.  This is where your marketing plan kicks in.

What Must Our Marketing Plan Communicate

We want our consumers, potential hires, to know:

  • That a stellar product exists in the form of a great IT team
  • That it is available to them as positions are available
  • That they will be satisfied with their purchase as others who have bought in continue to enjoy their work.

So how can we let our customers know about our wonderful product.  Well the traditional way is by posting classified ads online.  While that may let some people know of the availability, it will attract only those that are looking for jobs (missing candidates that do not know they should be looking) and does nothing to help with the other two bullet points.

How Does Open Source Help

If your company either sponsors an interesting open source project or, at a minimum, encourages developers to submit patches and improvements back to open source projects, it can serve to notify the development community about what your team is doing and the quality of work that is going on.  It makes people realize that there is something interesting brewing in your company and can easily drive people to your site (a fair percentage of requests to Health Market Science’s home page come from http://jackcess.sourceforge.net/).

Now Leverage Your Superstars

Now that people can look at a bit of your work, you can encourage your team to speak at conferences and user groups about the technologies.  Again, it helps to spread the brand name for your IT team, make potential candidates aware of what you are doing, is rewarding to your current team, and costs little to nothing.

In a future blog post, I’ll talk about how to find projects to open source and how to try and sell it to superiors (I know that I have not been as successful in the selling as I would have hoped, but I do believe it matters). 

Popularity: 9% [?]

Posted on July 19, 2007 in Uncategorized by Rob Di Marco3 Comments »

Ever thought of working at a startup?  Reading TechCrunch articles and wishing that you could be part of the fun?  Wondering what information you need to make a decision?

When considering joining a startup, here are the questions that I want to satisfactorily answer before making a decision.

Position Questions

  1. Will I be able to effectively partner with the other team members?
  2. Will I get along personally and professionally with the other team members?
  3. Do the other team members have complementary qualities to me or will we all be trying to fill the same? 
  4. Can we develop a shared vision?
  5. Can we disagree in a constructive manner?
  6. How will I get started at the position?  Would there be a trial period?
  7. What will be my roles and responsibilities in the short, mid, and long term?
  8. What will I be responsible for and what will other team members be responsible for?
  9. How much influence will I have over product and company direction?

Compensation Questions

  1. How will I be compensated?  How much cash (both deferred and non-deferred), equity, and bonuses.
  2. Is the equity being offered fair for my position and the state of the company (take a look at this hiring plan equity suggestion from Venture Hacks)
  3. How many outstanding shares are there and how many have been dispensed?
  4. How long will salary be deferred?

Company Questions

  1. Who do you think your competition is, both in the short and long term?
  2. How will the company differentiate itself from these competitors?
  3. What is the marketing plan to raise awareness of the product?
  4. What is the product development plan?
  5. When will releases occur and what will be in them? 
  6. Are the schedules reasonable from both a technology and market view?
  7. What is the upside opportunity for the company?  How likely is that upside to be realized?
  8. How much protectable IP will be available?
  9. How good is the current team?
  10. What gaps exist on the team and when will they be filled in (e.g. VP Marketing)?
  11. Where will the company be located and is there a plan to move as we grow?
  12. How susceptible is the company to changing fads in the VC marketplace?

Financial Questions

  1. What is the financial projections for the company? 
  2. What will the cap tables look like after all investment is in?
  3. What will be my equity position, taking into account preferred shares already granted and those that are planned for future investment?
  4. What are the revenue opportunities and when will we start seeing revenue?
  5. What is the proposed exit time frame?
  6. Who would be potential acquirors?

Introspective Questions

  1. Do I feel comfortable with the timing of taking this position?
  2. Do I have the support from my family?
  3. Am I more scared of failing or of missing a great opportunity?

Popularity: 14% [?]

Next Page »