Monthly Archives: January 2008

I have only been using Twitter for a short time now, maybe the last couple months, but I have gotten used to it and it has become valuable, as I have mentioned previously.

I use it to communicate with friends and people I have met in the industry, talk about work and help each other out. It has really become semi-private chat group and really quite effective.

Recently, I seem to get this a bit too often:

I am not the only one complaining. Sure, the service is free so what do I have to complain about? I certainly would pay a monthly fee if there would be a guarantee.

Dave Winer over on Scripting.com had a nice post about a Decentralized Twitter, which may in fact be a good idea. Some people said decentralized Twitter is just IRC. I think there is more to Twitter than what IRC offers and it therefore would have more to offer if it was decentralized. Moving much of the responsibility to the client in a nice user interface like my new found favorite Twitter client Twhirl, would be a nice way to avoid relying on the Twitter service being up all the time. I think it might be something like peer-to-peer file sharing but peer-to-peer messaging instead.

The more and more users rely on Twitter and it’s not there, it will force users to go elsewhere. Pownce is an alternative and one with a nice UI and allows users to do a bit more. Pownce will also connect to services like Twitter and import your friends. Pownce has recently come out of private beta.

Twitter did recently get some funding and maybe we can expect some updates to increase the reliability with some of that money. The folks who run Twitter do not do a great job of letting users know their plans.

Rob Conery’s recent post, Ramble: ASP.NET MVC Is A Geek Chisel started me thinking again about the Microsoft ASP.NET MVC Framework. I develop software targeting the .NET framework as well as Ruby web applications using Ruby on Rails. The .NET applications I manage have clients ranging from small shops to enterprise-wide complex pieces of software. When I have a choice, I choose Ruby on Rails. Why? Because it is so much simpler to turn out software fast.

I have not given much thought to the MVC Framework lately after watching Scott Hanselman’s screencast on its usage. No offense to Scott but the video left a really bad taste in my mouth. I saw too much of the overly cumbersome things ASP.NET developers have to go through to make things line up. Sure, you can drop a few controls on a page, hook up a database and wire-up your data bound controls, but that is not a realistic approach.

As most developers know, Microsoft has released an early CTP of the Microsoft ASP.NET MVC Framework which implements the Model-View-Controller pattern, the same pattern implemented by Ruby on Rails.

Rob’s post can be summed up here:

Chiseling a Digital DavidWhile I was in Redmond last week I discussed this very thing (”the story” behind MVC and why it’s appealing) close to 12 times. I kept struggling with analogies and I think I found one that works for me. It might not work for you – but I’m sincerely interested to hear what you have to say in this arena. Believe me – it’s important!

As a developer you build things- just like any contractor building a house, or artist creating a work of art. Often times artists will choose not to use tools that save them time, preferring to build something that they can (literally) work with their hands so they can “feel the art inside the medium”.

In the same way that Big Z showed Cody how to shape a board (”looong, easy strokes”) – many people just want the machinery to get out of their way when building a web site so they can create their HTML how THEY want to, and use JavaScript and form tags as they see fit.

Some people see this as tedious, repetitive work – others see the process as creationary and artistic. I think they’re both right and I love how ASP, now, supports both.

I was in the conversation Scott referenced in his post about implementing a Repeater in MVC:

We need to come up with a Repeater control for folks using MVC…

We have a Repeater – it’s called a For Loop

I want to share who said that line but I’ll keep it close to my chest since it was said behind a closed door ;).

What Do You Think?Part of my gig with Microsoft is soliciting as much community feedback as I can. I tend to believe that ASP.NET MVC allows for much more “hands-on” type of development with extreme control over your UI (HTML/JavaScript) that allows you to create some really cool work.

Do you agree with this? If not – what’s the appeal for you? Does it frustrate you to have so many choices and if so – how can we help to provide some guidance?

I would like the ASP.NET MVC Framework to provide the ease of application creation just like Ruby on Rails. I use Ruby on Rails often and the framework makes the life of the developer so much easier. The key requirements for me are:

One of the most important aspects of Ruby on Rails to me is it’s ability to create web applications fast. Prototyping is necessary to help aid clients or even other developers understand the interpretation of the business requirements. It is much better to find out up-front the ideas are wrong before spending too much time coding. Today this is difficult using ASP.NET WebForms.

SubSonic is great tool, integrate it in the framework but make the integration and usage dead easy. Rails usage of ActiveRecord is very simple and is not something developers have to pay much attention to. Creating Migrations, running them and then having the frame “just know” about them is great.

Give developers drop-dead-simple to powerful features like Scaffolding which makes creating back-end data management applications almost instantaneous and take the pain of this necessary evil.

Give me a default configuration so I just start pumping out new models, controllers, scaffolding or what ever I might need. Command line or a right-click in Visual Studio’s Solution Explorer.

Make all view engines first-class citizens, easy integration and usage.

Make all back-end ORM toolkits first-class citizens; if SubSonic, NHibernate or some other ORM, make it just work with extensive configuration.

Powerful frameworks without a simple and default implementation lead to slow adoption. It has taken most developers many years of dedicated development to pick up ASP.NET Web Forms and consider themselves experts on using it. These developers won’t jump ship and just start using the MVC Framework if this framework has the complexities of web forms. Ruby on Rails gives developers a default implementation, makes decisions for them so they can use the framework immediately out-of-the-box but provides great depth so it can be overridden and harness the great power of the underlying framework. The key here is the canned or out-of-the-box implementation used as a catalyst to allow developers to create prototypes very quickly.

So, if Microsoft is looking for a story for the MVC Framework, make it drop-dead easy to create web applications. Don’t make me work any harder than I do to create a Ruby on Rails applications and give me all the same tools the Rails team gives its developers. I don’t really think I need to be pointing this out, it should be as obvious to other developers as it is to me. I guess maybe not if you never used Rails before.

Merb development is coming along at a really fast pace and the team has really thought out the architecture implemented in Merb 1.0. I am personally excited to see these updates coming. The new Merb-core gem is small and fast, allowing developers to create small applications without a large overhead, much like Camping, but with a richer, more complete framework.

As you read through the interview, understand an important point by Ezra:

Merb is a web application framework with many similarities to Rails. The main difference is a focus on understandable, non-magic, fast code.

I think this is important for Merb as well as future Ruby frameworks, Ruby on Rails is the current killer application for Ruby. Rails is the pioneer in Ruby web frameworks but it is not without faults. Any pioneer knows there will be followers who imitate and duplicate their efforts to leverage their strengths and improve on their weaknesses. In my opinion, Merb is a perfect example. The Merb team decided what they did not like in Rails and created their own framework and avoided those problems, a perfect example of evolution in action.

I think we will see many Ruby frameworks looking to improve on Rails, improve on Merb and create better and better technology. This is certainly exciting times in Ruby web development.

I talk to a lot of companies who have software developers on staff, many who tend to have a higher turnover rate than they would like. Why does this happen and how can employers avoid this?

Employers often think the main motivation for employees is money. This may be the draw initially, but it is not what keeps people with your company. Employers should think from the employees perspective, not what little they can give an employee and keep them around.

The obvious draws are:

Good salary, fair and in line with the industry

Benefits – adequate vacation, sick and personal time

Health Insurance

401K, to a lesser degree

The real motivators are:

Interesting work

Great work environment, especially working from home. Working from home is probably the number one draw for many, I for one think this is a great way for an employer to show how much they trust employees. Today’s technology is so good that phone calls, chat and video conferencing with applications like Skype make the employee seem just like they are in the office.

Flexible hours – don’t dictate 9-5, allow to work they hours they want as long as the work is done and they employee is available for conference calls.

Interesting Work

Understand what your employees are interested in, what they are passionate about and let them do that type of work. A person who is passionate about something will excel. Don’t give your hot-shot developer a fancy title and then expect them to fix co-worker’s email, just because I can.

Google is rated as the best company to work, again. Why? Well, things like taking 20% of your time to work on what you want to work on. This is one way Google gets great new products, it’s a win-win. Why can’t others companies get this? Learn from the success of good companies and mimic them, it will cost less in the long run.

Working from Home

This one is the #1 reason to work for yourself and choose where you work, but not everyone can do this and employers need to understand how employees benefit. The other option for an employee is find a job at a company who understands the importance and benefits of this. Read/Write Web had a great article called The “Work From Home” Generation that outlines the benefits to both the employee and the employer.

1. No commute

If you live in the suburbs and work in the city, it is likely that it takes you 30 minutes or more each day to get to and from work. In the particularly busy metropolitan areas like New York, Washington, DC, and Atlanta, you are lucky if your commute is under an hour each way. Commuting takes time and energy (spending time in traffic is particularly draining). It is routine and boring and rarely productive or relaxing. Having no commute simply means more time to do things that you could not do otherwise.

For most people the ability to spend more time with their spouses and children is invaluable. Even a simple thing like having lunch and dinner together is big and game changing. In addition to spending time with your family, working from home makes it easier to exercise. It is a no-brainer to trade off the hour that you spend squeezed on the bus for an hour lifting weights or running on the treadmill.

2. Flexibility

Working from home likely implies flexible hours. Unless you have specific meetings scheduled you can take off a few times during the day as long as you get things done. Taking kids to an activity, getting shopping or errands out of the way, and enjoying a run outside or in the gym are the things that can be incorporated into the work-from-home schedule. For a lot of people, combining exercise and work is a challenge because their bodies do not respond well to a morning exercise regimen and they get home too late to go to the gym in the evening. Having flexible hours is a huge benefit for these people because they can exercise during the time of the day which suits them best.

3. Saving money and the environment

In addition to being able to spend more time with the family, having no commute has another big benefit – financial savings. With the cost of gasoline going through the roof, not having to drive is important for everyone. And we are talking big savings. If a tank of gas costs you $50 and lasts a week, cutting that in half gets you a cool $100 a month. The work-from-home folks also save money on food. Even in the cheapest corporate cafeterias lunch is generally going to cost around $7. At home, if you are stingy, you can spend $2 on a tasty lunch. This is easily another $100 per month is savings.

Working from home also has a global environmental benefit. By commuting less we save energy and reduce pollution. This is one of those rare moments when humans are in harmony with the planet – what is good for us, is good for the environment as well.

4. Increased productivity

Perhaps one of the most surprising benefits of working from home is that it can actually increase productivity. Assuming that your home office environment is conducive to work and you are able to focus, more work is going to get done. If you can’t focus on work with home distractions (kids, lure of TV, etc.), you may want to rethink working at home in the first place.

A typical office environment is noisy, people are talking, phones are ringing, co-workers are coming by to chat, and there are always crowds near the coffee and soda machines. At home, these distractions are not going to be present. In addition, when working from home you will be focused more on your work instead of office politics. Playing politics and kissing up to the boss is not easily done over the phone, so people will get more work done instead.

I personally despise commuting, the traffic is getting worse daily and making it hard to show up for a day of work already stressed. The return trip home isn’t less stressful, making home life sometimes difficult. I am also a veteran of 20+ years of software development and getting shoved in a cubicle is demeaning. Sorry employers, cubicles degrades morale.

Flexible Hours

Employers shouldn’t dictate starting everyday by 9:00 on the dot. Developers know what their doing and will get the work done, meeting times are exceptions.

Successful companies are going the way of the web worker, you will too unless you enjoy the turn over and having to rehire all the time. Companies like 37Signals operates this way and it works for them, the proof is how successful they are. Their blog documents many of these key principles of hiring and keeping people.

These simple suggestions are not rocket science, they are commonsense way to treat people, in this case developers, right. Companies need to adjust the way the interact with employees and contractors, they need to be treated like they are wanted, trusted and a long-term investment. If not, enjoy the turnover.

UPDATE: A regular reader pointed out a very good complimentary post about the productivity of developers being home versus a cube.