Résumé
Twitter
Work Blog
Guestbook
Login

Ideas: Thinking Outside the Box

Share |
<= Previous Post | Next Post =>

Three Challenges to Traditional Software Development

  1. Software Pay-for-Performance Incentives
    Why don't we motivate software engineers based on true pay-for-performance? Pay them based on the success of the product by giving them shares in ownership. I have only considered the application on retail software. For example a company, as an incentive, might offer 10% of every sale of a particular software product back to their development team. They would use an internal equation to decide the amount of product ownership each contributing individual has (eligibility would apply). If a company decided I contributed 10% to the development of such a product, then I might receive $1 for every sale (10% of 10% of $100). This would be a hiring incentive for companies with popular products and leverage that delivers real ROI. The key = engineers must believe in the product they are developing.
  2. Peer-to-Peer File Versioning
    Why aren't software products that manage file versioning more integrated with peer-to-peer (file sharing) technologies? When I save a development file on my local machine, why do I have to manually send the file somewhere? I understand the human element involved in explaining edits/changes to the versioning software. But, all I want to do is open a file, make my edits, and then tell the software how to deal with it. I don't want to "Check Out" and "Check In" and "tag" "branches", etc. Just open, edit, save, and explain, with a subscription and notification process for communicating changes with other file editors. Oh, and I want a chat program plug-in for authors/editors/reviewers to communicate.
  3. Refreshing Approaches to Outsourcing
    Finally... and this is the BIG one... What were/are all of these companies thinking when they hire internal software development teams to create both internal and external products/services? The problems far outweigh the benefits of a more logical approach: hire a software development company that knows software and everything that goes with it to give you one or more in-house developers (probably consultants too) to securely expose (create an interface to) your company's business using standard development practices (and possibly ready-to-implement frameworks) and then hire the same company or any other company you choose to actually transform those interfaces into tangible products and services. The result of the first few stages in development gives your company a fundamental architecture for almost total implementation independence! Once your data is securely available (internally and possibly externally), any competent individual/team can now turn it into products/services that fulfills your business needs. The real-world example would be "I want to give my customers account management on our website." So, hire an ultra-slim software development team internally to expose your business (data/models/processes/etc) securely in a standard format (a physical file, a result from a database, a web service's output, etc). Then, hire whomever you want to transform the output into an account management website. You benefit from all of the advantages of outsourcing the entire development process and continuing doing what your company does best. (Note: you also don't have senior developers wasting their time on novice tasks.) I know... I'm shooting myself in the foot.

Share |
<= Previous Post | Next Post =>

Comments

Submit New Comment

*Your e-mail is not shared with others. If provided, I simply use it as a method of contacting you about your comment(s) on this website. If you have a direct question, simply contact me.

*Cannot contain HTML and NO SPAM!