21 Steps to a
1. Define and Document your Vision/Purpose
"The first step is idealization. It is likewise the most important step, because it is the plan on which you are going to build. It must be solid. The architect, when he plans a 30-storey building, has every line and detail pictured in advance. The engineer, when he spans a chasm, first ascertains the strength requirements of a million separate parts." (Excerpt from).
2. Build a Web Team / Decide which "Roles" your shop requires
A webshop must have a comprehensive web team in order to produce comprehensive solutions. This team should be comprised of the roles defined below.
1. Systems Analyst - Develops detailed functional specifications and project documentation for projects. Identifies and evaluates impact of changes to systems. Acts as a liaison between technical and business groups to resolve issues. Influences and advises business or project team on project scope.
2. Quality Assurance Engineer - The quality assurance engineer performs various product-testing duties to assure specified guidelines are being followed.
3. Web Application Developer - The programmer reviews, analyzes, designs, programs, modifies, develops and implements software-programming applications and software products. The Development team can contain any of the following job titles, Application Architect, Web Developer, Web Designer, Graphic Designer. These job titles are frequently used interchangeably which is incorrect. You'll want to ensure you understand the differences.
Graphic designer is often involved in web design. Combining visual
communication skills with the interactive communication skills of user
interaction and online branding. Graphic designers often work with web
developers to create both the look and feel of a web site and enhance
the online experience of web site visitors.
5. Project Manager - Designs, plans, and coordinates technical projects. Provides technical support to and may lead and manage a group of developers/engineers/analysts toward project goals and completion. Responsibilities may include: managing project plans and timelines, writing specifications, creating documentation and evaluating project results.
6. Website Administrator - Responsible for the sourcing, installation, troubleshooting, maintenance, operation and support for Internet/intranet Web interface applications and systems.
7. Server Engineer - Creates and maintains system documentation. Develops server standards. Performs system administration and operating system support including OS installation and configuration. Manages system upgrades, enhancements, migrations, server downtime, integration and releases of software to QA, production and disaster recovery environments. Resolves and coordinates escalated back-up and recovery support problems. Tracks and analyzes usage and performance and makes recommendations to optimize. Responsible for security and disaster recovery for large/complex systems
8. Release Engineer - Considered an authority and often called upon to provide advice, consultation, and subject matter expertise. Writes code for automation tools and works with other IT staff to ensure automation tools are successful. Builds and compiles code of a high complexity using automated and manual efforts to ensure complete and accurate code compilation for release in distribution, test and production environments.
9. Network Engineer - Monitors, tests, and troubleshoots network hardware and software problems. Recommends and schedules repairs to maintain network integrity. Understands commonly used concepts, practices, and procedures.
10. Database Administrator - Administers, plans, coordinates, implements and maintains databases and develops policies and procedures for ensuring the security and integrity of the database. Designs data models, performs imports, monitors the database for potential problems.
11. Helpdesk Technician - Resolves computer software and hardware problems for all employees. Consults with users to determine source of specific error and recommend solution. Needs solid software experience and working knowledge of hardware and hardware configurations. May set up hardware for employees and maintain network and telecommunications systems.
3. Ensure you have well defined Requirements
In engineering, a requirement is a singular documented need of what a particular product or service should be or do. It's critical that this document be clear and comprehensive as it's the blueprint of the end product. Regardless of the type of SDLC one utilizes, the requirements document must be solid and any change to it properly documented in order to manage scope creep and adhere to milestones in a project plan. Common industry standards for writing specifications are listed below.
1. Unified Modeling Language (UML) is a standardized specification language for object modeling
2. The Rational
Unified Process (RUP) is an iterative software development process
framework created by the Rational Software Corporation
4. Perform Capacity Planning
Capacity planning is the process of determining the production capacity needed by an organization to meet changing demands for its products. In the context of capacity planning, "capacity" is the maximum amount of work that an organization is capable of completing in a given period of time. It's important to understand this number as it will determine how much work a team can perform during a defined timeline. The Capacity of the team will help define and set the project milestones.
5. Establish an Application Framework/Choose Programming Languages
In computer programming, an application framework is a software framework that is used to implement the standard structure of an application for a specific operating system. A programming language will usually depend on the selected type of application framework.
1. Explore programming languages, adopt and adapt new ones as appropriate. More
2. Establish coding Best Practices
3. Consider an error handling infrastructure/methodology
4. Consider code portability to mobile devices and support "mobile web"
6. Choose an Operating System
An operating system (OS) is the software that manages the sharing of the resources of a computer and provides programmers with an interface used to access those resources. There are many flavors of operating systems therefore perform due diligence as necessary. Cost, compatibility, usability and support are some of the considerations you must make.
2. Select an operating system for the team.
7. Build your Infrastructure/Hardware
Computer hardware is the physical part of a computer, including the digital circuitry, as distinguished from the computer software that executes within the hardware. The hardware of a computer is infrequently changed, in comparison with software and data, which are "soft" in the sense that they are readily created, modified or erased on the computer. Whether you host your website internally or externally, it's important to understand the items listed below.
1. Hardware - choosing a vendor (example: Dell, HP, etc...), creating server builds, VMware.
2. Web Server Load Balancer (usually contains both hardware and software components)
4. Create a DR (Disaster Recovery Site)
5. GSLB - Global Load Balancing (will help avoid the need for a DR)
6. Isolate the Dev, Build, QA, Staging and Production Environments
7. Database - there are various models and vendors (MS SQL, Oracle, etc...)
Computing - A computing paradigm in which tasks are assigned to a
combination of connections, software and services accessed over a
network. This network of servers and connections is collectively known
as "the cloud."
8. Choose and Define a SDLC
Systems Development Life Cycle (SDLC) or sometimes just (SLC) is defined by the U.S. Department of Justice (DoJ) as a software development process, although it is also a distinct process independent of software or other information technology considerations (example: Waterfall model, Iterative and incremental development). Select a SDLC and be open to using a different one based upon the needs of the project. More
9. Choose and Configure a Team Collaboration Tool
Collaborative software is software designed to help people involved in a common task achieve their goals. Collaborative software is the basis for computer supported cooperative work (example: MS Sharepoint).
1. To facilitate and document team communication
2. Store/Track software requirements
10. Define and Enforce a Code Management System
Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Software deployment is all of the activities that make a software system available for use. Make copies of data so that these additional copies may be used to restore the original after a data loss event (backup software). Ensure code is versioned and backed up properly. This will help rolling back to a previous version of software or recovering from a disaster possible.
11. Ensure you have a Release Management Process
Overseeing the integration and flow of development, testing, deployment, and support of these systems and migration of code between various environments (Dev, QA, Staging and Production). More
1. Define Release Milestones
2. Define a Release Schedule
3. Define Types of Release content (examples: quick text changes, code changes, CMS changes). Bucketing similar types of items together can simplify the release process.
4. Consider Ranking and Prioritizing of release content which will help with Capacity Planning. If you have a queue of program change requests, you must know in what order to address them.
12. Review Security/SSL Requirements
Secure Sockets Layer (SSL), are cryptographic protocols that provide secure communications on the Internet for such things as web browsing, e-mail, Internet faxing, instant messaging and other data transfers.
1. Consider the transport and storage of Non-public personal information (NPPI)
2. Schedule periodic risk assessment of consumer sensitive and NPPI data. Ensure you understand various data encryption standards.
13. Pay attention to Usability/IA
Web Usability is the way that a user experiences and uses the website. The user should be able to use and follow the website without instructions, getting lost or getting frustrated with it not working the way they think it should.
1. Give serious consideration to complying to ADA Guidelines for the Web. Cover aspects of Web accessibility including the look and feel of your page, the alternate text of your images, and more. Usable Web sites are sites that work for your readers.
14. Have a SEO Strategy
Search engine optimization (SEO) is the process of improving the volume and quality of traffic to a web site from search engines via "natural" ("organic" or "algorithmic") search results for targeted keywords.
15. Consider & Choose a Content Management System
Web content management system (CMS) is a system used to manage the content of a Web site. Examples are Interwoven Teamsite, LiveSite, OpenSource CMS, WordPress for blogging, etc... A CMS empowers business users to make changes to content without having to involve software developers. This can be very cost effective as software developers can focus on new projects rather than spending time making minor textual and graphical changes to static content.
1. Give strong consideration to
workflow Patterns and approval requirements. It's probably not
a good idea to have someone make direct changes to website content
and approval process especially if there may be legal and financial
16. Project expected traffic and perform Load/Performance Testing
Load testing is the process of creating demand on a system or device and measuring its response (example: HP formerly Mercury Testing Suite). In order to ensure website availability you should perform load testing to ensure the website can accommodate the expected web traffic.
17. Incorporate a Web Analytics tool
Web analytics is the study of the behavior of website visitors. In a commercial context, web analytics especially refers to the use of data collected from a web site to determine which aspects of the website work towards the business objectives.
18. Choose & Configure Monitoring Tools
Website monitoring is the process of testing or tracking (monitoring) both hardware and software functionality by performing various system and software health checks. Website monitoring is often used by businesses to ensure that their customers are able to access their online applications and perform actions such as searching, online shopping, checking an account balance, or simply researching.
19. Establish an Application Support Process
Technical support (also tech support) is a range of services providing assistance with computer hardware, software, or other electronic or mechanical goods.
20. Do not forget ongoing Training for your Web Team members
Training of IT personnel is critical not only to keep their knowledge current but to maintain high morale.
21. Perform ongoing Research & Development (R&D)
Do not overlook R&D as it's critical to any webshop that would like to remain relevant, competitive and innovative.
Portable applications in the form of Widgets and Gadgets, Social networks and social software, Web mashups, Ubiquitous computing, Contextual computing/UI and Semantics are all very powerful and relevant technologies, concepts and approaches. In order to adopt and utilize these technologies, research and "proof of concepts" must be executed even if you plan to outsource these project. In order to ensure accurate requirements and competency in directing the vendor towards your vision, you must be educated in these topics.
*Extra - Decision to Outsource or Offshore
The decision to outsource
offshore software development is often made in the interest
of redirecting or conserving energy directed at the competencies of a
particular business, or to make more efficient use of labor, capital,
technology and resources. There comes
a time when every webshop must consider this question. There are
components of an application that may be ripe for some of these options.
It's important to focus on your core competencies and if the opportunity
arises to consider outsourcing or offshoring by methodically weighing
the pros and cons. Partnering with vendors "can" be rewarding and
provide the opportunity to expand your circle of influence and knowledge
**Definition of Webshop - The term "Webshop" refers to a place of business where web development, web hosting and other types of web related activities take place (Web refers to the World Wide Web and "shop" has a colloquial meaning used to describe the place where one's occupation is carried out).