Gen Y, Social Media, and the Enterprise

Posted by Timothy Fisher Tue, 03 Jun 2008 14:20:00 GMT

Generation Y includes those in the age range 13 to 31. This is the largest generation ever, even surpassing the population of the Baby Boomers. In total their are about 80 million “GenYers”. This is a generation that has been brought up on technology. They have always had computers, cell phones, email, and instant messaging. They are now very familiar with Web 2.0 and social networking. This is also the next generation of employees that companies will be hiring over the next decade. This generation will come into your company with the expectation of Web 2.0 technologies, just as the previous generations expected email. Using social networks is as natural to GenYers as email is to GenXers.

GenYers have seen how Web 2.0 technology can be used extremely effectively in their social life and will expect nothing less in their professional life. They will wonder why a large company is not using a social network to enable and connect employees. They will wonder why their company is not using blogs to spread their message and respond to thier customers in a very transparent manner. Blogs and social networks allow GenYers to build networks of friends and associates. The good news is that these are all questions that should be asked because they have the power to transform your business, and if you are not asking those questions internally now, your company will soon be left behind in this new I.T. revolution. This new revolution is one that brings Web 2.0 technology and culture into the enterprise and it is often referred to as Enterprise 2.0.

Even as Enterprise 2.0 takes hold in many large corporations, there are still many other corporations that remain ignorant of this revolution. Some mistakenly think that Web 2.0 and Enterprise 2.0 is just about technology. They are the companies that are adverse to taking risks on new technology, so they quietly ignore the Web/Enterpise 2.0 revolution. The truth is that Web 2.0 and Enterprise 2.0 are not about technology. They are more about culture, social interaction, new ways of uniting your employee base, and new ways of effectively marketing your brand.
Enterprise 2.0 brings with it a massive change in culture that many companies are not ready or able to deal with. Companies that rely on strict top-down hierarchical organizations have the most to fear from the GenYers and the Enterprise 2.0 revolution. Enterprise 2.0 expands the power of the masses in your company at the expense of the power of the senior management and executives. When individuals act together socially, whether it is for personal projects or business related projects, their power becomes much greater than what they could have achieved working as an individual. GenYers expect their thoughts and ideas to be listened to and acted upon if they are good ones. They are not willing to sit back passively and follow the direction of someone simply because they are higher up on the “corporate ladder.” Enterprise 2.0 technologies allow a company to harvest ideas and innovations throughout the company rather than from a select few that sit on the top floors of their headquarters. Authors Charlene Li and Josh Bernoff refer to this inversion of power and influence as the Groundswell in a new book titled Groundswell: Winning in a World Transformed by Social Technologies, published by Forrester Research.

Enterprise 2.0 technologies allow a company to open up a bidirectional communication path between itself and its customers. Any single company is limited in terms of their internal resources and the amount of innovation and creativity that can be sourced from them. However, a company that can effectively use a much larger global community of social networkers can expand its abilty to innovate on a massive scale. If your company is not taking advantage of this ability to collaborate globally, your competitors are, and they will quickly surpass you with their ability to innovate.

Social networking sites like Facebook, Myspace, and LinkedIn allow individuals to meet more people, expand their social networks, and get more and better information faster and easier. Used inside of a company, social networking communities can energize an employee base and build a massively linked platform for knowledge sharing and collaboration. This platform will be a vehicle to capture tacit knowledge in ways never before possible. IBM has an internal social network called Beehive that has over 30,000 employees on it. A social network like this used internally will not only help your company share knowledge but you will find developers collaborating on innovative uses of technology, sales people mining new leads and exploring new sales opportunities, and management with a tool to monitor the pulse of the company.

A social network can also be used very effectively to create buzz around your brand and to increase your brand visibility. The book Groundwell describes how a company can make use of Web 2.0 technologies to get great benefits in marketing, product development, and customer support. Enterprise 2.0 is also where you will need to turn to find the best and brightest employees amongst the GenYers. More people, especially the younger ones, are moving away from large job boards like Monster and Dice as sources of jobs and instead finding jobs through their online social networks. Are employees at your company blogging? Does your company have any presence in the Web 2.0 world? If the answer is no, your company very well may be left out of the employer pool considered by the best and the brightest employees.

Large I.T. companies including IBM, Dell, Salesforce.com and even retailer Best Buy are already using Web 2.0 technologies both internally and externally to communicate with their customers, enhance their brand message, enable broad collaboration, and leverage the power of the global community to speed up the process of innovation.

I recently finished reading two excellent books that I believe should be required reading for anyone in a leadership position in any company today. These books are Wikinomics: How Mass Collaboration Changes Everything and one the other one I’ve already mentioned, Groundswell: Winning in a World Transformed by Social Technologies. These books show how your company can thrive thorugh Enterprise 2.0 culture and technology.
They are both filled with case studies of how existing companies are embracing Enterprise 2.0 as well.

Read more…
Beyond Blogs, Business Week, May 22, 2008
The “Millennials” Are Coming, CBS News, May 23, 2008
Groundswell
Wikinomics

Tags , , , , , , , , , ,  | no comments

Bringing Web 2.0 into the Enterprise

Posted by Timothy Fisher Fri, 28 Mar 2008 04:59:00 GMT

Today, social networking, and user-generated content web sites are among the most popular sites on the Internet getting millions of hits every day. Sites like MySpace, Facebook, Flickr, and Google Apps allow users to share user-generated content and collaborate with each other like never before. Smart organizations, enterprises, and product vendors are now realizing the potential for Web 2.0 technologies inside the enterprise.

There are some fantastic web applications on the Internet that would provide tremendous value inside of an organization. I’ve spent the last several years working for large professional services organizations. These large service organizations have perhaps the most to gain from harnessing the concepts of Web 2.0 internally. Consider for example an internal Intranet version of an application like LinkedIn, allowing employees to keep current resume and profile information online that can be easily updated by each employee. This would provide a huge value to professional service organizations whom are always looking to staff the next project or fill a clients staffing requirements.

For the developers of a large organization, think how useful an internal Code Snippets site would be. Public snippets sites such as DZone Snippets, allow contributors to share small snippets of code that solve commonly occurring problems. The value of such a repository is even greater inside of an organization where different teams often encounter similar problems. Essentially, a snippets site provides another outlet for code reuse.

In a development group, every project should be maintaining a wiki site. A wiki can be updated by every member of the team to include links to the latest documentation, schedules, and technical data related to the project.

Social bookmarking sites such as del.icio.us also provide examples of a technology that could be very useful internally. If you are in a large development organization, every developer will usually have his or her favorites sites for researching and looking up technical information. A social bookmarking site would allow your organization to harness collectively those favorites and categorize them with a content tagging system. Content tagging has become the preferred way or organizing large amounts of information in the Web 2.0 world.

Even some of the fringe social sharing sites such as Shelfari and LibraryThing implement concepts that would fit well inside an organization. These sites allow users to share information about their personal library of books. Users can contribute book reviews, book ratings, and comments about the books. Software developers are some of the largest purchasers and readers of technical books. Some organizations will even reimburse employees for technical book purchases. A social site allowing employees to share reviews and comments about technical books could be a very useful addition to an Intranet. These types of value-added applications that allow employees to actively contribute content to Intranets will encourage employees to view your Intranet and participate in sharing knowledge and information. This is much better than the centralized content controlled sites that most Intranets are today.

One of IBM’s newest products targeted at the enterprise is Lotus Connections. This is a product that aims to bring Web 2.0 and social networking into the enterprise. The product includes blogging, social bookmarking, wikis, communities, user profiles, and social networking features. IBM is not alone in thinking about the value that these products have. Smaller vendors in this space include HiveLive, SocialText, and Thought Farmer.

There are new and different types of Web 2.0 and social networking sites coming online nearly everyday. Every time I come across a new site, I always imagine how much that site could contribute to the collaboration and knowledge sharing environment and ultimately to the productivity of teams inside of a company. I believe that we are on the brink of seeing more and more Web 2.0 technologies entering the Enterprise. These applications can allow an enterprise to capture more of the ad-hoc and tacit knowledge that typically is not well managed in a large organization. If you are in a position of influence, you should start thinking now about how these technologies can make your own organization more productive. If you are interested in learning more about Web 2.0 in the enterprise, an excellent blog to follow is the Enterprise 2.0 blog from Dion Hinchliffe.

Tags , ,  | no comments

Online Rails Development with Heroku

Posted by Timothy Fisher Mon, 17 Mar 2008 01:11:00 GMT

Heroku is a web application that provides a complete environment for writing Ruby on Rails powered web applications. With Heroku you get both a development environment and a hosting platform. Each application that you create with Heroku is also assigned a unique URL that you can use to access it.

Heroku has plenty of gems and Rails plugins pre-installed and available to any Rails application. However, if you want to use a gem or plugin that is not already installed, you can do that also. It is simple to install any gem or plugin into your Heroku Rails application. You can also upload a complete Rails application that you developed locally, into the Heroku environment. The opposite is also possible. You can export an application that you developed inside of Heroku and download its source to your local computer. As you write migrations, they are automatically detected and run without any manual intervention. You also get a built-in console for running any rake tasks that your application has. A built-in Rails console is also provided in a browser window.

Heroku also recently added an API that allows you to develop your Rails application locally on your computer and deploy to Heroku remotely through the Heroku API. The source code version control system that Heroku uses to store your source code is also exposed. The version control system used is GIT. If you have GIT installed locally you can directly access your application’s source code and make commits against it. When you want to deploy back to the Heroku servers, you do that through the Heroku API.

Heroku is probably not the host you’d select for deploying a production Rails application, but it can be a satisfactory development environment, and an excellent platform for learning. In a training environment, students would be able to develop a complete Rails application using only the Heroku web application without having to install any software on their computers. It is also easy to collaborate on an application using Heroku. Once you create an application, it is easy to add other users as collaboratorsruby who also have access to the application’s source code. Overall, I think this is a great tool that can help more people get exposure to the Rails platform.

Tags ,  | no comments

Three Great Books for Learning and Mastering Ruby on Rails

Posted by Timothy Fisher Sun, 09 Mar 2008 03:54:00 GMT

I tend to read a lot of technical books. My current passion is with the Ruby programming language and the Rails web application framework which is built on top of the Ruby language. I’m also a published technical author myself. The book that I am currently writing is the Ruby on Rails Bible which will be published by Wiley this spring. However, since that is a few months away still, I thought I’d share some reviews of some current Rails books that I find to be excellent learning and reference resources. The three books that are reviewed here are:

Two of the books RailsSpaces, and The Rails Way, are in the Professional Ruby series. Obie Fernandez, author of The Rails Way is the lead editor for that series.

Rails Space

This is a book that walks through the complete implementation of a social networking web application developed with the Rails framework. A hosted version of the application developed throughout this book is available online at www.railsspace.com. The authors of this book are Michael Hartl and Aurelius Prochazka.

This book is essentially an extended tutorial that is developed throughout the book. Some of the topics touched on while developing the Rails Space application are user authentication, image uploading, geo data, email integration, Ajax, and Restful development. As the application is written, tests are also written as each component of the application is finished. This provides excellent practical material on writing tests for your own Rails applications. You’ll find many of the techniques that the authors show you for creating tests and testing various pieces of the code to be very useful in your own projects.

Overall, I found this to be probably the best book available of its type, that is a book which serves as a tutorial focusing on the development of a large sample application. I highly recommend this book to any developer getting started with Rails. Even experienced Rails developers will enjoy this book.

The Rails Way

This book provides probably the most complete coverage of the Rails framework of any book currently out. This book is also the first book that I am aware to provide coverage of Rails 2.0. The author of this book is Obie Fernandez whom is one of the most respected Rails developers in the industry. Obie recently started his own Rails consulting firm, Hash Rocket.

The book provides excellent in-depth coverage of a wide range of technologies related to Rails development including Rails core technologies like Controllers, ActiveRecord, ActionView, the Rails routing system, Helpers, REST, Ajax, Session Management, Authentication, ActionMailer, ActiveResource, Rails Plugins and Testing. Technologies that are complementary to Rails are also covered in-depth including: testing with RSpec, Capistrano, background processing, plugins, and production configurations. The chapter on production configurations provides an excellent overview of what is necessary to get a Rails application running in a production environment. It includes example configurations for Mongrel and Nginx for serving your application and Monit for monitoring your application.

Unlike some other Rails books, this book assumes a knowledge of Ruby and does not waste pages with a long Ruby introduction. In my opinion, that is a good thing. If you are interested in learning Ruby, this book is not the best choice for you.

The book’s afterword is titled What is the Rails Way (To You)? Be sure not to skip that if you read the book. This chapter provides a collection of thoughts from a bunch of Ruby and Rails developers, quite a few of whom you will have probably heard of if you keep up with the Rails community. I found it to be a very interesting and insightful chapter.

The Rails Way is also a nominee as Best Technical Book in the Jolt Awards competition. Overall, if I could buy only one book about Rails, this would be the book.

Practical Rails Projects

This book takes the reader through several practical examples of web applications that showcase the features of Rails. The book provides a very practical way of extending your Rails development knowledge once you’ve mastered the basics of Rails development. The author of this book is Eldon Alameda. The applications that you will build over the course of the book are:

  • To-Do list manager
  • Exercise/Fitness tracking application
  • Blog
  • Gaming community site

Like the other books I’ve included in this review, no pages are wasted on a Ruby introduction chapter. Instead this book assumes a knowledge of Ruby and jumps right into building each of the sample projects. Throughout the course of implementing these applications, you’ll use several popular Rails plugins as well as some features from popular JavaScript frameworks, YUI, and ExtJS. These JavaScript frameworks are excellent compliments to the Rails framework. The book is best read from start to finish, as in some cases each of the projects builds on functionality or features developed for an earlier project.

This book does include unit testing as well, though it does not emphasize it as much as the Rails Space book does. Some of the technologies that you’ll see in this book are: developing web services, Restful development, graphing, caching, and file upload. Some of the plugins that you’ll use throughout the course of the book include: acts_as_authenticated, calendar_helper, restful_authentication, css_graphs, ziya graphs, will_paginate, and attachment_fu.

Overall, I found this to be another excellent book that can be read from cover to cover. Both new and experienced developers will learn something from this book.

Tags , ,  | 1 comment

What is RESTful Development?

Posted by Timothy Fisher Wed, 06 Feb 2008 03:10:00 GMT

One of the things that any good developer strives for in the development of a web application, or any application for that matter, is a well organized code-base with consistent use of patterns and naming conventions. This contributes a great deal to the overall maintainability of an application. However, maintaining a well defined organization and consistency to a code-base especially one that is being worked on by multiple developers is not an easy task. In web development, there have never been any widely accepted patterns for how to name models, controllers, and their action methods. Developers are often not sure when looking at a code-base where they should put a new action method and how that method should be named. If this is a problem that you’ve faced, RESTful development is definitely something that you should be interested in.

Recently, there has been a surge in popularity for a development pattern or technique known as RESTful development. Popular frameworks such as Ruby on Rails are fueling popularity of RESTful development. The creator of the Rails framework, David Heinemeier Hansson, is a great proponent of RESTful development. David introduced RESTful development to the Rails community in his RailsConf keynote address of 2006, titled A World of Resources. In that keynote, he challenged developers to embrace the constraints of RESTful development. With the release of version 2 of the Rails framework, RESTful development has become the standard way of creating a Rails application. So what is RESTful development and why are developers excited about it?

The term REST was coined by Roy Fielding in his Ph.D. dissertation. Roy Fielding was also one of the creators of the HTTP protocol. REST stands for Representational State Transfer. REST describes a method of architecting software built around the concept of resources. REST happens to be a very good fit for web application development. Although REST itself is not explicitly tied to the web or web application development, it is within the context of the web and web applications that we will discuss it. Within the REST architecture, requests from the browser use standard HTTP methods to manipulate the application’s resources. Most web developers are familiar with just two of the available HTTP methods, the GET and POST methods. However, the HTTP protocol defines eight methods, GET, POST, PUT, DELETE, HEAD, TRACE, OPTIONS, and CONNECT. REST is concerned with the first four of these methods, GET, POST, PUT, and DELETE. These are the methods that a RESTful web application will use to manipulate resources. REST happens to be a very good fit for database-backed web applications. In a database-backed web application, resources map well to models, which in turn map well to database tables.

In a traditional web application developed in a framework such as Rails, a request would specify an action and a resource to perform the action on. For example, the following is a common URL found in a Rails application:

http://www.myapp.com/book/show/5

This URL tells the Rails backend to use the show method of the book controller to display the book resource that has an id of 5. An application developed using REST would not specify the action in the URL. Instead the URL would specify only the resource. The action is determined by the HTTP method with which the request is submitted. For example, a RESTful equivalent of the above URL would be:

http://www.myapp.com/book/5

This request would be submitted using the HTTP GET method and routed to the correct method, show, based on having come from a GET request. Let’s expand on the example of manipulating a book resource and look at how you would perform other actions on a book resource using RESTful development. The table below shows how various actions performed on a resource are mapped to URLs and HTTP methods.

Action URL HTTP Method
show http://www.myapp.com/book/5 GET
destroy http://www.myapp.com/book/5 DELETE
update http://www.myapp.com/book/5 PUT
create http://www.myapp.com/book POST



Notice that the URL for performing show, destroy, and update on a resource is identical. These requests are routed to the correct controller action based on the HTTP method that is used to submit them.

So the idea is that you would apply this pattern throughout your web application’s architecture. Every controller would consist of the same standard set of methods show, destroy, update, and create. The application framework will route to the correct method based on looking at both the URL and the HTTP method used for incoming requests. Suddenly, you have great consistency in your web applications. All of your controllers are implemented in the same style and contain the same set of methods. You may be thinking about now that it is not very likely that you can actually implement an entire web application using just resources with matched controllers and that small set of controller actions. You may find that you need a few additional controller methods, but you will be surprised at how far you can get by consistenly following this pattern. You will find that this architecture will also clean up your controller and model designs. It will become clearer based on what you need the web application to manipulate what the correct models/resources are for your application. Keep in mind as you develop that not every resource will necessarily be backed by a database table. You may have resources that are not persisted in the database, yet you still follow this same resource/model matched with a controller implementation pattern.

Some advantages of RESTful architecture

So what are some of the advantages that you get from using this RESTful development approach?

Well Defined Application Design - RESTful architectured defineds a standard way of implementing controllers and access to models in a web application. Applications that consistently follow this architecture will end up with a very clean, very maintainable, and easy to read and understand code base. Traditionally when you have a web development project that is worked on by several people maybe not all concurrently, each may bring his own style of how they use controllers, what names they give to controller methods, what they determine are models, etc. The RESTful approach will make it much easier for every developer that comes onto a project to maintain a very consistent implementation style and thus preserve a solid architecture across the application.

CRUD-based Controllers - controllers map 1-to-1 to each of your models. Each controller contains the code necessary to manipulate a specific model through standard CRUD methods, create, show, update, and destroy.

Clean URLs - Because URLs used in a RESTful appplication represent resources and not actions they are less verbose and always follow a consistent format of a controller followed by the id of a resource to manipulate.

One of the advantages listed above, Well Defined Application Design, brings to mind an excellent quote made by Jonas Nicklas on the Rails mailing list and repeated in The Rails Way which is this: ”Before REST came I (and pretty much everyone else) never really knew where to put stuff.” With a RESTful architecture, you know where to put your code. Every application that implements a RESTful architecture will have a consistent design and developers will know exactly where to put code.

REST as a Web Service architecture

While REST is an excellent fit for database-backed web applications, some would say it is even a stronger fit for web services. The REST architecture provides an excellent platform for providing services. Afterall, web services are essentially APIs that let you manipulate some form of resource. Rather than create another layer on top of HTTP, such as the SOAP web service protocol does, REST based web services rely on the existing functionality of HTTP to provide web services. Because REST uses what is already built-in to HTTP rather than layering another semantic layer on top of it as SOAP does, REST is a much simpler architecture for implementing web services. The most popular consumer facing web services such as those provided by Amazon, Google, Yahoo, and others all offer a REST based interface. REST is more popular than SOAP today for implementing commercial web services. For example, considering the book example again, you could easily imagine a web service API that used URLs identical to that which a browser uses to get HTML content. This gets into the next topic of interest related to REST, that of Representation.

REST and Representations

When you request a page using a RESTful architecture, the page that is returned can be considered a representation of the resource that you are requesting. However, think of an HTML page as just one possible representation of any given resource. Other representations might include an XML document, a text document, or a block of JSON encoded JavaScript. Using the RESTful architecture, you would request a different representation of a resource using the same method, but by passing a different piece of metadata to the server indicating the representation that you would like to have returned. For example the following two requests would both be routed to the same controller and action method:

http://www.myapp.com/book/5

http://www.myapp.com/book/5.xml

The first request would return an HTML representation of the book resource. The second request would return an XML representation of the book resource. This is another advantage of a RESTful architecture. The same controllers and actions can be used to deliver a variety of response representations, think HTML, RSS, XML, etc. This makes implementing web services in a RESTful architecture extremely easy, and again maintains a consistent design style.

So, that about wraps up my overview of RESTful development. Hopefully you’ve been able to learn from it.

Tags , , , , ,  | 3 comments

The Java Phrasebook as a Teaching Tool

Posted by Timothy Fisher Sat, 02 Feb 2008 23:30:00 GMT

It has been suggested to me by several reviewers including this one at the Java Lobby that the Java Phrasebook which I wrote last year would make an excellent text book or companion to a text book for a course on Java programming. After thinking about this, I think that coupled with some lecture notes or presentation slides, I agree that the Java Phrasebook could serve as an excellent companion book for students in a Java programming course. A strength of the book in that usage scenario is that it offers wide breadth in terms of what it covers. It does not go into great depth on alot of java features and technologies, but it has over 200 phrases which illustrate how to perform some of the most common programming tasks. The book is broken down into the following chapters with each chapter including phrases illustrating how to perform common programming tasks related to the chapter’s subject:

  • The Basics
  • Interacting with the Environment
  • Manipulating Strings
  • Working with Data Structures
  • Dates and Times
  • Pattern Matching with Regular Expressions
  • Numbers
  • Input and Output
  • Working with Directories and Files
  • Network Clients
  • Network Servers
  • Sending and Receiving Email
  • Database Access
  • Using XML
  • Using Threads
  • Dynamic Programming Through Reflection
  • Packaging and Documenting Classes

I could definitely see a programming course follow this same structure with lecture covering the details of each topic and the Phrasebook supplementing the lecture with practical examples and review material. The book could make an excellent study guide as well for students in a Java programming course.

If you have used the Java Phrasebook in an educational course, I would love to hear from you. Education is another passion of mine, and it would be cool to hear that someone was using my book as an educational tool.

 

Tags , , ,  | no comments

Older posts: 1 2