8Rays Tech Blog


How to estimate a project

Estimating software projects seem to be something of a black art. A lot of has been asked and written about it. However, there is little bit of a method to it as we figured out over past few years over lot of projects.

Since no two software projects are alike, it is not possible to know, accurately, how long something is going to take in advance. So, the only way to really know is to actually start doing the project. And that’s what we do. Well, sort of.

continue reading...

Signs of a good developer

If you are a business guy, finding and working with a developer can be a daunting task. Having a developer who understands your vision and works diligently to make that a reality is unfortunately rare. Here are a few characteristics of a good developer:

  • Actively listens to your requirements and then remembers them by making notes. Keeping track of details is one of most important things in engineering and good developers will do that instinctively without you having to ask.
  • Advices you not just on technical things but also typical business requirements. Developers typically have a wide range of experience working with various applications and they develop an acute sense of what works.
  • Prepares a project plan before getting into coding and implementation. Any decently sized software project quickly becomes huge list of things which are under various states of progress: urgent things, planned items, things to do in future and things you are considering but are not sure etc. A good plan is crucial, almost like a compass, in keeping the project on the track.
  • Is available 24×7 for any production related issues. Of course, even developers need to sleep. But, responsible developers will wake up in middle of the night and fix that bug if required.
  • Answers emails and messages promptly. A good developer will even go a step further and ask you for a regular conference to provide you status updates proactively.
  • Honest about mistakes and avoids surprises. Software projects by nature are complex and there are mistakes. Fortunately, they are mostly recoverable. However, you should definitely know about it so that you can assess the state of the project and predict the future progress realistically.
  • Lets you know about holidays and other days-off well in advance so that you are aware of the pace of the project.
  • Sends you an invoice regularly. Good developers are proud of their work and so not shy to charge fairly for it. They are also organized to a fault so they maintain a routine of sending you regular invoices. Its good for you as well since you know about your costs accurately rather than being surprised at the end.

Of course, a lot of other people have also written on this topic. Here are some notable ones:

continue reading...

How we do project management

Over time, working over various projects, we have evolved our own approach to project management that has proved quite robust. Almost none of this is original. We learned, practiced and adapted as we grew.

Here is a brief description of what we follow through the beginning to the end of development as well as with post-development maintenance and support.

continue reading...

Book Review: Don't Make me Think by Steve Krug

We recently started an internal series of short technical talks. The topics are mainly based what people are working on at the moment, which catches their fancy and they think it is worth sharing. We will put the summaries of the talks here. See them all under the category Tech Talks.

Here’s a review of the excellent book on Web Usuability, Don’t Make Me think by Steve Krug. You can buy it on Amazon or FlipKart.

continue reading...

How to tackle boilerplate coding in Rails

Boilerplate is any text that is or can be reused in new contexts or applications without being changed much from the original. – Wikipedia.

Even if one of Rails’ mantra is DRY (Don’t Repeat Yourself), we often find ourselves repeating stuff, if not in the same project, at least across multiple projects. How many times have you found yourself configuring the ExceptionNotifier plugin, or SMTP server settings, or capistrano scripts in exactly the same or at least very similar ways? Its time to go meta and stop repeating even across projects. Here are some tips:

continue reading...

Dead Simple CMS

We all need to create the static pages with an application — pages like FAQ, About-us, Terms and conditions etc. Of course, it would be extra nice if the site admin can edit those pages without having to deal with the source control system and the like: you know, checking files out of git or svn, making changes, checking it back in and figuring out how to deploy it all on the server. Ah, just try explaining that to your site admin before her eyes rollover, she falls backward with her chair and breaks a rib or two.

Enter CMS (Content Management System). There are a lot of them available in the Rails world. For a nice list see here. Perhaps you just want to pick a plugin from there and run. However, what if you want something really simple, something that just supports the 6 static pages you need and does not add much unneeded clutter to your code base. Turns out you can roll your own really easily. Follow along.

continue reading...

Web development is hard

On the Bangalore OCC mailing list which has a fantastic mix of entrepreneurs, consultants, VCs and like, somebody while advising to be careful while hiring web developers commented: “Web development is not… one time development…”. That got me thinking: Web development is still tricky. Yes, we do have our productive frameworks and tried agile methodologies, but there is still something which makes developing a web application inherently hard.

Never, never, never believe any war will be smooth and easy, or that anyone who embarks on the strange voyage can measure the tides and hurricanes he will encounter. — Winston Churchill

continue reading...

Webservices to make application development easy

Last week there was an article on six revisions about Website Features That You Can Easily Offload listing how you can take advantage of web services to lesser the burden on a site.

That prompted me to make a list of web services that an application developer, especially a Rails developer can use to similarly, offload functionality and get away with less code, less maintenance and develop quickly. Here’s what I could think of:

continue reading...

Before you write that code...

So you have decided that you are going to implement your big idea and may be you have also hired your favorite developer. There is nothing that a programmer loves more than writing code – they would just want to get hacking. But in my experience, there are some essential things you should
do before you get to writing code.

  • Prepare a page flow diagram: You should have a clear enough idea of all the important pages and how they link together. You should be able to walk through the steps a typical user would go through while using your application.

There’s a whole field devoted to dividing the user flows into pages and laying out information on those pages. But, you don’t have to get fancy. As the 37Signals guys recommend in their fantastic book Getting Real, just a rough sketch on paper is enough.

continue reading...

Featured posts

Subscribe to this blog

Blog topics