Do You Have Your Custom Web Development Risks Under Control?

Managing custom web development is managing a software project. More and more, average people in average businesses are managing software projects in the form of customized blogs, websites, and e-commerce shopping carts. Even more so, if they are trying to deploy a custom intranet application, for internal use by their company’s employees, or an extranet application, for use by their customers and corporate partners, they may find themselves faced with developing a fully custom software system.

For example, one project I recently worked on is a custom extranet application that a certain company’s clients use to submit jobs to the company. As each job request goes through the system, a number of people in the company need to add information and sign off on it. This automated system was thick with business rules for this particular company and as a result was almost completely custom, because no off-the-shelf software got even close to doing the job the way they needed it done. It was expensive for them to develop, but it allowed them to automate a process that previously had been manually intensive. (Before this, they would email Excel spreadsheets around. Now, the computer handles all the grunt work, and frequently, all a human has to do is click “Approve.”)

This is an extreme example, but more moderate examples also exist. For example, a Gilmore Girls fansite I put together years ago had custom database features in order to store memorable quotations from the show with fan commentary, linked to episode and topical guides. That’s something that has not to my knowledge been done before or since. It required custom programming and configuration to process user submissions, store the data, and display the data in the right format.

Unfortunately, if you’re facing this type of project, many of the consultants and service providers you talk to will not be aware of the software development issues involved and how to manage the software-development risk. They may try to shoehorn your problem into something off-the-shelf software can accomplish. Or they may just “hack together” custom programming, without managing the complexity of the underlying software design. Or they may want an up-front specification of everything your project needs to do and may want to spend months working out these details, under the guise of good planning. But how can you plan a project you have zero experience with? You can’t. And neither can they.

Now, this is not a problem if all you need is a stock installation of off-the-shelf software. For example, if all you need is a WordPress blog with off-the-shelf plugins and an off-the-shelf theme, the traditional approach is the right one. Figure out what you need, install it, make sure it works, and release it to the world. Even if all you need is a custom theme for a stock website, the traditional graphic design approach–3 mock-ups, choose one, then implement it in code–may be the best approach. Even if you have a semi-custom installation of a more complex web application, like a content management system or an e-commerce shopping cart, the traditional approach may be acceptable.

But the more customization your project requires, the more software engineering concerns will impact it, and the more ignoring these concerns will put your project at risk. This is especially important in a financial squeeze, where you need to maximize what you get for your software-development dollar and minimize the risk that the project will go off track or bust.

If you find yourself faced with this prospect, here are 13 “lucky” software development tips to planning and executing your next web development project, briefly:

  1. Resolve to take tiny steps. Don’t develop and deploy the system in one big leap. Rather, do it in small chunks so that you can monitor its progress and adjust its direction each step of the way.
  2. Find an expert you can trust, then trust him. Don’t just look for someone to bang out code for you, but for someone to advise you on technology and on the software development process.
  3. Don’t commit to which features you want until you need to develop them. Wait until the last responsible moment before committing. That gives you more time to gain the experience at each step to choose the most important features to add next.
  4. Make sure the contract allows for changes, and make changes before committing, but not after. Work with a development team who will allow you to make changes to the plan, up to the point at which they begin actually implementing your requests.
  5. Provide software requirements in the form of objective test procedures. Go step by step through a typical usage scenario so that the developers can understand what you envision, and so that your in-house testers can know that they implemented what you asked for.
  6. Set objective acceptance criteria for each feature. Be as flexible as you can without giving up your core requirements. Think through ahead of time what you really need and what you can get away with. Then talk to the developers about what they can do to give you the former.
  7. Ask the developers how long each feature will take to implement, and whatever they tell you, trust but verify. Many developers are over-optimistic in their estimates. So depend on their expertise in estimating time-to-completion, but verify it with your own measurements.
  8. Make an “expert user” available to advise the developers. Good developers will ask you questions about the system that you probably never thought of. Assign an “expert user” to answer these questions, someone in your company who can represent the users of the system to the developers.
  9. Get regular status updates. Have someone in-house look at each release. Meet with the development team leader every week to address issues. Stay in constant communication.
  10. Expect the possible, but not the impossible. If your developer says such-and-such a task will take a month, don’t argue him down to a week. Rather, talk about what parts of it you can leave out to reduce the time it will take.
  11. Be prepared to choose which features are more important, and which are not. If the developer asks you to choose which of two features is more important, don’t insist that both are critical and must be done next week. Make the hard choices. Pick one to do this week, and leave the other until next.
  12. Expect to fail in the short term, even if you’re optimistic in the long term. Microsoft didn’t get Windows right until version 3. You also may need to wait until the third monthly release before you see anything usable in your application.
  13. Don’t be afraid to pull the plug. At some point, you’ll find that all the most important features are already working and that the ones that are left aren’t actually worth what you’re paying for them. At that point, stop buying new features, and move onto the next project.

Not every development shop will be able to work within these bounds. These tips do come from many years of experience, failed projects, and successful ones. But there’s also a certain amount of faith involved, because despite the years of experience, we still have scanty scientific data to prove which software-development practices are most effective. That’s why some developers may not be used to working with the kind of process I’ve outlined here and may even refuse to. So you may need to shop around a little to find a developer who can. But at least now you know what questions to ask.

Web Development and the Site Review

Every online business owner wants to ensure that his or her web development objectives are on target. Web development includes Search engine optimization and appropriate use of keywords.

One of the ways many individuals are helping develop their website is by utilizing reputable site review sites. Interestingly there is even a site review that reviews other site review sites.

Let me seek to demystify what I am talking about. When you have worked to put all the finishing touches on the first draft of your website you may want to submit your site information to a site review service. This is typically a fee-based service where either peers or techies review the site using a laundry list of criteria. What they are looking for are problem areas that can be fixed before your site goes live. They let you know how your site could improve navigational concerns and what text errors could be fixed.

There is another type of review site that you should know about. These sites review products and or websites for the public to view. This may or may not help you. What you are looking for are services that can assist you in the final stages of web development not those that give you a grade and then pass that along to the public.

Once your site is as on target as you want it to be THEN you can begin sending your URL to the site review locations that provide public opinion on your site if you decide you want to. This can be a good or bad thing simply because you never know how a single person will review a site.

I think it makes better sense to gain independent feedback prior to site launch and then work steadily on improving Search Engine Optimization (SEO) strategies. Unless there is significant positive buzz about your site you might avoid submitting to a public site review scenario. Yes, negative publicity is still publicity, but the roll of SEO will have a greater impact than by hoping for the best now with a public site review.

The reason publishers use editors is because no matter how talented an author may be there are likely to be mistakes that will be missed. The editor works to eliminate mistakes. This is the role of the private site reviewer in web development.

Web development takes into account the branding of the business and/or product and it seeks to ensure there is ample room for growth. This process is a positive in the context of ensuring your site is as error free as possible before you launch. You can have a friend or family member look over your website and give their opinions. This can be a positive experience, but by using a private site reviewer you have the potential of a more objective opinion of the work.

The reason publishers use editors is because no matter how talented an author may be there are likely to be mistakes that will be missed. The editor works to eliminate them. This is the job of the private site reviewer in web development. Put your site together and then get some help smoothing out the wrinkles because if you don’t your potential customers will be the ones to notice and they won’t find it amusing.

Programming, Coding and Web Development Laptop Specifications

If you need to get a new laptop for programming or coding purposes and are uncertain where to start, this short guide will help you find the perfect setup for your needs.

For web developers, there are really two main paths they need to go through. If you’re doing front-end web development, then you’ll need a basic machine that can run a text editor and a browser to check your progress. For back-end developers things get a bit more complicated. You will need a laptop that can handle multiple tasks simultaneously like running a browser, a local server and the code editor. These might not seem like a lot, but they do require a lot of system resources so make sure you pick a laptop that’s up to the task.

For game, 3D or mobile app development you’ll need a high performance laptop that can render everything in real-time. Think about getting a gaming laptop if you’ll be doing this type of work. Mobile app developers will often need to run a simulation of their app running in the mobile operating system, which can take a lot of system resources.

Let’s have a look at some of the specs recommended for each of these types of development work.

Processor

The processor is the heart of your computer and by the number of cores and threads it boasts, it determines how many processes you can run well in parallel.

For front-end development work, you should be able to get away with a laptop that uses either a Core i3 or Core i5 dual-core processor. Back-end and mobile app developers should aim at least for a Core i5 quad-core processor, Core i7 being the best choice.

RAM

RAM or system memory helps the CPU process everything smoothly. The more your laptop carries, the better. Front-end work implies about 4-8GB of system memory installed, since you’ll probably use a code-editor like Sublime Text and one or more browsers to check up on your work.

Mobile, game and back-end developers should opt for something with a bit more kick. The minimum amount of RAM should be in the 12-16GB range. This is to make sure that all your applications run smoothly together.

Hard Drive or SSD?

Every laptop needs to store and retrieve information. This is done by the storage device installed. Here you have two choices: either get a laptop with a regular HDD, that will typically cost a lot less, or get a laptop that comes with an SSD. An SSD is the newer type of storage option that doesn’t rely on spinning disks to store information and can be about 10-12 times faster than a regular hard disk drive.

For front-end development work, a regular HDD should be enough, but you can always look for hybrid drives which incorporate a bit of SSD technology into a regular HDD. These are a bit faster than regular hard drives and don’t cost quite as much when compared to SSDs.

For any type of programming that’s above front-end development, it’s recommended that you get a laptop that carries an SSD. This will speed up boot times and everything you run on your computer.

Operating system

This is yet another thing you will have to think about. While Windows is perhaps the most popular operating system today, it’s not quite the best choice when all development fields are concerned.

For web development you should try coding in a Linux-based OS, like Ubuntu. Mac OS also works with Windows being the last on this list. This is because you need to install different third-party software like XAMPP on Windows if you’re going to do back-end work. You will have to install some of these as well on Ubuntu, but the process is much more streamlined.

Screen

The laptop screen is another factor that’s important to take into account. With so many resolutions available today, it’s hard to pick a laptop that’s just right for programming.

Front-end developers will need a laptop that carries a screen with a higher than average resolution, since they’ll need to test if their websites are responsive on a lot of resolutions. For back-end developers, this is less important. But what’s true for both of these categories is the need for a secondary monitor. This can speed up development time quite a lot, since you don’t constantly need to switch between applications when coding and checking the output.

Battery Life

While most developers sit at their desk when coding with the computer plugged-in, should you feel the need to code on the go, then make sure you get a laptop that’s got a great battery life.

Macs are typically great at battery life, with their Air series going up to even 12 hours of battery life on a single charge.

The thing is, the more powerful hardware a laptop carries, the more battery life will be sacrificed. This is because powerful hardware eats up a lot of electricity. Most computers nowadays have devised ways of counter-acting this by dimming the display, throttling down the processor when the computer isn’t used and so forth.

If you’re sure you need a laptop with a great battery life, that’s also powerful but don’t want to pay through the nose for a MacBook, then you should invest in a secondary battery that you can take with you when you’re on the move.

In conclusion, if you’ve run through all these aspects, you should have a pretty clear picture in your head of what your next laptop should be like.