Software Development Costs

Money fuels the overall structure of software development. To make things happen, funds need to be distributed in all the areas involved in producing a project. Investors of modern businesses are the ones who are usually exposed to complex costing considerations for a product to be realized.

While business people are willing to lay money on the table and hire a programmer, some of the stakeholders have no idea how the cost is exactly broken down. Nor are they aware of the factors that influence the total funds needed for a project. Being on top of costing allows investors to avoid unnecessary expenses, helps automate tedious tasks, and enhances complex processes.

Software development project costs can be estimated successfully when the next steps are sorted out earlier and the scope of possible solutions is considered. The overall completion time, for example, could be a good start to magnify the relevant details.

One private information technology company revealed that in 9 out of 10 situations, business owners fail to explain the business drivers behind a project during costing sessions and many times they don’t know what a software company actually does. This matter speaks volumes, especially to entrepreneurs who are familiar with software development projects. If the team lays down the variables at play in estimating the cost, it will be easier for the heads of a company and prevent unwarranted risks related to development. The specifics that influence the cost of a software development project include:

1.   Functionality

One of the software development drivers that covers the largest portion of costing is functionality. Functionality specifics will prepare the team by giving them an idea of the tasks, workload, and necessary costs.

Aside from affecting production cost, functionality considerations also raise the expenses for other areas, such as software architecture design. If the product has more features, then naturally, the cost will become higher.

2.   Project complexity

Project complexity is the all-inclusive environment where the production of software development products takes place. Here are the main factors that define project costs and complexity:

  1. Novelty – Software development needs to apply cutting-edge technologies. These include technological devices, achievements, or techniques that can bring the latest high-level developments into a software product’s system.
  2. Security matters – As security is essential in any application, the software requires special arrangements and further development efforts to create the most critical features with security at the top of the head.
  3. Uncertainty – The possibility of software development changes is part of an agile development plan. There is a tendency that a customer’s needs do not remain the same throughout the whole project period. Apps and similar software products must adapt to the complexities of its systems to provide long-term services.

3.   UI/UX design complexity

The price for UI/UX design varies depending on the volume and complexity of its functionalities, which are depicted in custom illustrations, buttons, screen transitions, and animations. Complex technologies such as 3D motion design and modeling also add weight to the cost.

4.   Data migration

Storing two different data and reshaping them from one system to fit the other come hassle-free through data migration. Data migration is a systematized approach in preparing custom scripts, making adjustments, figuring translation rules, and performing tests.

The tailored process aims to enhance the whole software development production’s efficiency, maintain an organized way of applying the necessary actions, and staying on track, even while other items might pop up.

5.   Human resources

Software development production is broad and includes a lot of tasks that need to be delegated to other staff. Developers and engineers also need the assistance of more team members to accomplish the workload.

With different skill sets, completing a successful project is possible. BA’s, architects, developers, designers, testers, and other roles that can support the whole software development production should be employed and considered in estimating the project’s cost. The hourly rates of staff members depend on the level of their experience.

6.   Software integrations

Examples of common integrations are third-party services, two or more business applications, and cutting-edge technologies such as AR./VR, AI, IoT, and blockchain. For example, Paypal is under third-party services that require very complex planning, analysis, and verification of results.

Integrations in the software require additional development efforts to pull off the necessary services. Others could be challenging to employ, but a development team has to go through all the hardships to finish the product successfully.

Make an Realistic Budget

The cost indicates how far the team and business owners can go to fulfill a software development project by a reputable software company. Considering the factors that could affect a product’s cost in financial planning will help prevent problems along the way. As money is not the only resource at stake, the staff’s effort and skill could be put to waste as well if proper actions and preparatory procedures are not applied. 

Agile Software Development Culture

The Agile culture of development arose during the IT boom at the turn of the century. Since then, companies have been applying this approach to apply a framework within their business systems. Though agile culture applies to all businesses, it is most effective in the realm of any custom business software development.

Agile software methodologies have been evolving throughout the years. Each advancement allows customers and users to enhance and modify their products in the best state possible. Moreover, the agile method is smart to be on top of modern technology systems.

Knowing the customers’ ever-changing needs is a challenge that all development teams are facing each time they try to produce a software application. With agile culture as the center point of the production environment, figuring out the current customers’ demands is a step-by-step approach that is easier and more systematized. Transforming every business team has always been the raw intention behind the birth of the agile culture.

To formalize the agile culture in a working system, it must be composed of specific sets of values and principles. Agile culture can only be applied if the team is open to change and determined to accomplish their tasks. A team could get lots of advantages from the approach when the needed cultural elements are present, whether they’re in-house or outsourced.

1.   Embracing changes

Agile culture provides a framework that has an allowance for change requests. The possibility of software development production changes is already included in the project documents from the planning stage. Embracing changes should not be implemented at the expense of functionality.

The two best solutions would be the following:

  1. Build a flexible architecture – Software engineers are advised to invest time and effort in designing an architectural structure that is easy to maneuver or transform when there are changes that need to be applied.
  2. Move-in small steps – Developers can set up an automated-testing verified CI/CD pipeline to accommodate minimal code changes. The process is a lot more risk-free compared to rush solutions to deploy multiple changes for integration.

2.   Understanding the business side

End users or customers must be thoroughly understood at all levels and must know what a software company does. The staff must be on the same page with one another to fully integrate their responsibilities with each other. Most developers solely focus on the coding scope without weighing or checking if such a task correlates with the business’s needs.

To meet halfway, the team must exercise:

  1. Updating the team – Project managers play a significant role in keeping the team on tabs through updates and active communication. They are the bridge that connects the clients, customers, on-site visits, and the team. That way, changes that need prompt action will be addressed, and objectives will be met.  
  2. Share a business perspective –  The whole point of planning sessions is to give the staff a chance to peek at the designed features from an end-user point of view. While the importance of timeframe will always be considered, the staff will be able to understand the complexity behind a project.

3.   Communicating often

The heart of an agile culture is communication. It is where a cross-collaboration of internal and external staff takes place. Ineffective communication could result in a stressful obstacle while the team is on its way to achieving development goals.

Follow these guidelines for effective touchpoint communications:

  1. Implement project management and communication tools – Helpful tools are available to supplement the working system among the staff. It helps employees avoid communication gaps and see the entire project overview.
  2. Business people and developers must work together daily throughout the project.
  3. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  4. Simplicity — the art of maximizing the amount of work not done — is essential.
  5. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

4.   Taking responsibility

Software development teams must generate trust within the production environment. After all, agile culture is all about accountability and conviction. You don’t want to discourage your team so use the following guidelines:

  1. Blameless practices – The team should create a safe environment where anomalies and issues are easily detected and the staff is not hesitating to report problems. Blaming one another instead of taking real action will not solve anything.
  2. Common responsibility – It is healthy to have shared ownership within respective tasks to avoid finger-pointing. Hence, agile culture serves its purpose and there is a sense of openness among the working staff.

5.   Focusing on speed without affecting the quality

Reducing deployment time is one of the greatest advantages of applying agile culture in the workplace. Keeping up the deployment pace includes:

  1. Automating testing – No matter how time-consuming automated testing is, it is still fundamental in safeguarding software quality and saving a lot of project time.
  2. Measuring code quality early on – Using code scanning tools and peer reviews, code quality can be measured early on to prevent the rise of technical growth debts. 

Develop an Agile Team

Agile culture provides a systemized way of making things more streamlined and collaborative within a software development production environment. It not only enhances the core processes, it also ignites strong synergy between the staff.

3 Principal Goals of a Software Development Team

Successful software development is possible through internal and external collaboration, a skilled and talented team, and most importantly, careful planning. Mapping out the ways to achieve the desired goals requires a solid structure that only competent and efficient associates can deliver. The key members of a team should work hand in hand for software development projects to move forward.

Engineers and developers are the two main professionals in a software development team. With their programming and engineering languages expertise, they will be the pillars in building a software product. Above all, the team needs experienced developers to ensure that the product is user-friendly and cost-effective.

To reach software development goals, a team needs staff like product designers, project managers, and business analysts. Product designers guarantee the product’s success; the project manager ensures that the team is motivated, highly performing, and follows standards; and the business analyst helps the team avoid product failures.

If the team and structure are already settled, it’s about time to start figuring out a software development project’s goals. A team could envision a long list of targets, but there are 3 principal goals you should focus on to achieve the software development company’s priorities.

1.   Maintain outstanding quality

Every project follows a timeframe to see results in a limited period, but this should not cause the team to accelerate to a point where they start sacrificing quality for speed.. If the worst-case scenario happens, the team will have to deal with technical debts rather than focusing on the development course. The best way to fight thiss is to set a firm quality standard before moving on to the actual process.

Software products must be safeguarded with the following fundamentals:

  1. Code Reviews – Complex codes are customary in developing software. The developers run automated code reviews to calculate code quality. It is a significant routine that aims to block problems and software maintenance issues that the team may encounter later on.
  2. Continuous testing – The team should initiate continuous testing to be able to spot any potential risks and make adjustments while it is early. 
  3. Agile principles fostered in the team – The market is fast-paced and continuously changing. Consequently, development teams must produce high-quality software to meet demands. Agile principles will keep the team on track and enable the staff to deliver results aligned with the standards.

2.   Meet the project requirements

Requirements are met if a team indicates a detailed product specification while staying open to flexibilities and changes of requests. The team must do the following:

  1. Prepare a full-fledged change management process – Since changes of requests are inevitable, especially if the team encounters a client who is not into one-time decision making, the business proposal must be tailored to the project roadmap. This will ensure that handling the changes will not affect the existing functionalities. Necessary aspects like the amount of work, goals, effects on the project, and time estimation should be included in the business proposal.
  2. A shared understanding among the parties is a must. In the early stages of production, the business analyst should organize on-site workshops with the team and customers’ stakeholders to tackle the finalization of the software’s concepts, architectural designs, and requirements. Through the orientation, the two parties will be ensured that they are on the same page.

3.   Deliver on time 

Whether it’s a short or long-term project, the team should respect deadlines. To meet the expected turnover time, there are certain aspects to consider:

  1. Consistent progress tracking – Recording tasks and monitoring their accomplishments helps track a project’s progress. The team can put up a velocity chart and burndown charts. In the team velocity chart, the staff will be able to scheme reasonable workloads and determine the amount of work needed to finish the task. On the other hand, burndown charts are visual presentations of how close a staff is to completing a particular task.
  2. Routine Automation – The whole team will lead the delivery channel from a DevOps perspective. Doing so will smoothen the integration of the current functionalities equipped with solutions that might be helpful in the long run.

Use the Right System

Setting the 3 Principle Goals is an effective way to maintain structure, procedure, and working system within a software development team. The course of careful planning and mindful decisions before the production starts dictates a software product’s results.

What Does a Software Development Company Do?

Let’s face it – the process of building software is a complicated job that requires in-depth knowledge of development, design, and testing. For this and other reasons, many people turn to professional custom software development companies.

But what does a software development company do, exactly?

While some companies focus on specific aspects of software development and production, others take more general approaches and are responsible for creating custom projects and providing consulting services.

Keep reading to discover more about how a software company works and what type of services you can expect from one.

What’s the Difference Between an IT and a Software Company?

Many people think IT and a software company are one and the same, but this is not true. We can understand why – every software company offers IT services, but not every IT company offers software development or coding services.

IT stands for Information Technology, and IT specialists are responsible for computers’ operation, including storing, sending, and retrieving information. Besides making sure the computers are properly working, they make sure that people know how to use devices and systems to keep a company’s tasks running smoothly and efficiently. They help departments and workers access information, automate tasks, and communicate via technology.

On the other hand, software companies create software products that help make possible communication and task automation that use computers. Software engineers are responsible for designing, developing, and programming the coded products that businesses use daily to complete their tasks and projects.

Without a software product, the IT sector would not be able to exist. Every computer, tablet, or smartphone operates on software, and without a solution in place, the company wouldn’t be able to complete the tasks.

While many different roles exist, a software company usually consists of a software designer and developer, a user-experience designer, a project manager, a graphic designer, a technical writer, a maintenance engineer, and more.

Different Types of Software Companies

Now that you know what a software company does, it’s helpful to become familiar with the different types of software companies and how they help businesses operate.

Service-Based Software Companies

Service-based software services work directly for businesses and corporations to develop custom-made software solutions, provide project teams or dedicated individuals, or deliver tech knowledge and expertise.

The benefit of working with service-based software companies is that you don’t have to worry about hiring in-house teams, paying salaries, buying software equipment, or setting up workstations. The software company takes the burden off your shoulders by setting up the consulting team and providing your business with the products and solutions you need.

When partnering with a software development company, you can access their technical experts, internal proficiency, and talents. Such companies have broad experience designing custom solutions and can assist businesses in different aspects – from software architecture to product development.

Product-Based Software Companies

Product-based software companies work on developing custom products and solutions and delivering them to individual customers or businesses. These companies invest money and time into developing custom solutions that clients then implement into their daily activities (whether for personal or business uses).

Microsoft and Google are two examples of product-based software companies. They offer unique solutions that can be customized to match a company’s specific needs.

What Is The Purpose of a Software Company?

The best way to understand the purpose of a software company and why such companies are crucial for your business’s success is to learn what they do daily.

Building software products (solutions), developing corporate systems, and delivering savvy tools are some of the most common software companies’ activities. Some also include IT consultancy as part of their services.

The primary focus of every software company is building custom-made software products and solutions. Usually, each company specializes in a different area—for example, mobile development, web development, programming, and more. Others combine all of these services, offering all-in-one solutions for businesses or specializing in unique technologies such as blockchain.

Software companies can accommodate different types of company needs, from startups and small businesses to enterprises. No matter the kind of company you are running or the business niche you are in, you can undoubtedly benefit from a software product/solution.

Why Choose I/O Technologies for Your Software Development?

Suppose you are looking for a software development company that can assist you in different areas and help make the most of IT science for business progress. In that case, there is no better than I/O Technologies.

Software development is our specialty, one of the most popular areas for customizing software products and solutions for different businesses. Our qualified team is passionate about delivering first-rate solutions that will help your company complete tasks quickly and more efficiently, eliminating errors or unwanted failures.

We are the best custom software development company on the market that can solve business problems and help brands overcome their challenges through modern technology.

Contact us today at I/O Technologies for more information about our software development services, and we’ll prove why we are the best option for your startup, small business, or corporation.

How to Hire a Programmer for a Startup

We all know how hard it can be to hire that exact person you need who can add just the right skills and energy to your team. All companies and business brands want to have a qualified team of professionals who deliver unmatched value and impeccable service. But you also want someone whose personality will click with the other team members and who can contribute to that synergy you’re seeking.

Having an outstanding team is crucial for your company’s success in the software engineering niche. The task of spotting and hiring the right programmers for the job is vital to any business’s prosperity—especially for a startup.

Hiring programmers can feel overwhelming due to the large pool of applicants to sort, given the job’s complexity, the technical experience required, the talent needed, and the prospective candidate’s ambition. However, once you find the right people, you know you will create a team of unstoppable machines to take your company to the top.

We’ve put together a few tips, tricks, and best practices to consider when hiring a programmer or even a full custom software development company for your startup business.

Five Steps to Finding the Right Programmer for Your Startup

If you follow the steps below, you’ll soon be on your way to hiring the best programmers in the field.

Step 1: Look for Talented and Skillful People

When interviewing potential candidates, give advantage to those who bring expertise, talent, and knowledge to the table. During the interview, ask them why they decided to become programmers and not settle for something else.

While it’s good to have educated and intelligent people on your team, you still need someone skillful enough to handle any problem they might confront. It would be best if you had a fast learner, a trained professional who could quickly adapt to (and help shape) your corporate culture.

Step 2: Be Real About the Challenges They Will Face in Your Startup

To find the right match for your startup, you need to reveal all your cards. That means you should be upfront with the candidates, informing them about the challenges they will face in your field.

The ideal candidate should be up to any challenge, regardless of how difficult it may sound.

Step 3: Be Flexible to New Approaches, Technologies, and Principles

In some cases, a fresh, innovative approach might improve the way you’ve been solving coding problems or completing programming tasks.

Experienced programmers can often bring cutting-edge technologies, principles, and trends in software engineering to your business, so don’t be surprised if candidates propose a new technique. In fact, you should award a bonus point to a candidate who suggests new ways of solving problems. That means they can bring creativity and innovation to your company.

Step 4: Focus on Communication Skills

Some of the best programmers in the field sometimes have trouble communicating with other team members—or with people in general. While this may not be a big problem, especially if the candidate otherwise does the job perfectly, having someone who can clearly convey information and work well with others in team projects is a must. Don’t put yourself in a position where you’ll have to turn down a project just because your software engineers can’t communicate well enough to work with the clients.

Step 5: Ensure That Their Programming Language Skills Are Flawless

Don’t hesitate to test the skills of your potential candidates. Most programmers should enjoy being tested, considering it’s a chance to show how good they are at coding and programming. Testing their skills is essential for you to gain a sense of their experience, creativity, and knowledge level so that you can determine which position on your team might be best for them.

Why Is it Crucial to Find Good Programmers for Your Startup?

Startups rely on the success of their first weeks or months of operation. Without the right team, you can’t expect to deliver results or amaze clients with your professional abilities. With the combined energies of the right people on your team, on the other hand, the sky is your limit! You should find no challenges or problems you can’t face or projects you can’t complete. A clever programmer—or three!—can be the difference between your startup’s success and failure.

Given the expansion of startups needing software engineers, developers, and programmers, the best talents are in high demand. It’s a competitive market, so you should have many candidates from which to choose. Rather than hiring individual job-seekers, you might also look at the alternatives and hire a consulting team.

Why Choose IO Technologies for Your Software Development?

At IO Technologies, we pride ourselves on our developers, software engineering professionals, and quality teams. You can end your search for the best programmer for your startup company here because we have the right candidates for your project at IO Technologies.

Our dedicated team of professional programmers and experienced workers will soak up every aspect of your startup’s identity, routines, and principles. With our team at IO Technologies, there will be no software development project you can’t tackle.

Allow us to support you on your journey – please call us today to discuss your needs, and we’ll provide you with more information regarding how your company can rely on our programmers and coding experts.

In House Software Development vs. Outsourcing

Outsourcing software development continues to expand as a global trend. As the demand for technology talent increases, companies are finding themselves needing expert talent that may not always be available in-house. Regardless of their industry, many companies face the same problem: Should we outsource software development or hire in-house?

The short answer is it depends. Both outsourcing and hiring in-house have their own benefits and downsides. The nature of the project will determine the best path to take, so it’s crucial to weigh your options.

Here are some of the most critical benefits and drawbacks of each approach so you can choose an option that will support your business goals best.

In-House Software Development Pros and Cons

Benefits of In-House Software Development

Engagement and cultural fit: Software developers who are permanent members of a team are more aware of the company’s business needs. They’re more dedicated to achieve better results and deliver better value.

Increased agility: An in-house team is familiar with the product, allowing them to make changes and add project features faster. They can also deal with errors and bugs more quickly.

Efficient communication: A streamlined communication process where workers work from the same office and within the same hours helps save time and avoid misunderstandings, eventually accelerating the development process.

Drawbacks of In-House Software Development

High costs: In house development can be quite costly. The final price of end products typically includes everything from office rent and overhead costs to benefits, training, and more.

Difficulty in finding skilled personnel: The high demand for tech experts makes it difficult to find and hire the right professionals in some regions of the world. Finding the right experts and assessing their skills before hiring them generates additional costs.

High staff turnover: Software developers tend to change their jobs quite often due to the ever-increasing demand for their skills. Finding a new developer for your project can slow down projects significantly.

Outsourcing Software Development Pros and Cons

Benefits of Outsourcing Software Development

Cost reduction: Outsourcing skilled developers allows you to avoid incurring all the costs of hiring and maintaining an in-house software team.

Easy scalability: Working with an outsourced team allows you to scale teams to quickly match the product’s changing needs.

Achieving the same level of flexibility with an in-house team can be a challenge. Hiring new team members can be time-consuming, and firing them could ruin your reputation and team morale.

Fast time-to-market: Outsourcing software development means you can start building your product almost right away; building an internal team, onboarding them, and setting up processes takes much more time.

Proven processes and workflows: Outsourced teams have worked with numerous clients and built plenty of applications for various sectors. They’re efficient at collaboration and use proven workflows and processes to deliver quality end products.

Top talent: Software development companies can hire top IT specialists, giving you access to unique skills and expertise.

Potential Risks of Outsourcing Software Development

Business failure: If the software company you’ve outsourced goes out of business or is forced to scale down dramatically, this could pose a risk to your project.

Low-quality code and documentation: If an outsourced team develops low-quality code and documentation, transferring the project to another group can be time-consuming and expensive, especially if the entire project has to be redone from scratch.

Communication issues: While outsourced teams are experienced at delivering optimal services regardless of their location, partnering with a software company located in a different time zone comes with the potential risk of communication problems.

Limited control over the development team: Outsourcing software development projects that carry a high business value may be risky because of the limited control over the development team.

Little motivation: Monitoring the engagement of an outsourced team can be challenging.

Summary

When deciding whether to outsource or hire in-house, it’s essential to consider the project’s budget, scope, and deadline. Having an in-house team that’s highly trained and experienced to handle any project that arises is tough. But outsourcing allows you to get the skills you need fast.

When selecting a software developer to outsource a project, ask how they handle the challenges mentioned above. A software developer should be a flexible, critical thinker. It’s also important to ask about their background, work experience, and technical expertise.

At Iotechno, we provide top-notch custom software development services for businesses. Partner with us to leverage our skills and experience to build custom software for your company. We have a diverse portfolio of successful projects and take pride in exceeding client expectations.

Three Short Case Studies

“You mean you can do that? I didn’t know you guys could handle this kind of technology.”

It’s not unusual to hear comments like this from customers and prospects of our custom software company. So today I thought I’d share three examples of how to leverage custom software to take control of your business and drive sales to the next level.

Control devices from your phone system (or PC, or web page).

door strike

Soon, our company will be moving into a new building. Since our offices will be on the 2nd floor, we installed a video doorbell next to the first-floor foyer door, so we can communicate with our visitors in the foyer. The door already has an electric door strike like the one to the right. But what would be the easiest (and least expensive) way to open the door remotely?

The former tenants used several hard-wired push buttons, which were situated in odd places that wouldn’t meet our needs. So we rerouted the wiring to a USB relay in the server room, and wrote custom code to control the relay. Now, by dialing a special extension, we’ll be able to open the door from any phone, anywhere.

Maybe you don’t need to open a door remotely. But the same techniques can be applied to controlling lights, fans, motors, heaters, bells—virtually any device controlled by a switch.

Link your website to local data.

Many companies use local desktop software systems to handle payroll, quote preparation, order entry, and invoicing. When employees can’t come to the office, but still need to access that data from outside, what can you do? Or maybe your customers prefer to check on the status of their orders without calling your office.

Link Website to Local Data

In cases like these, a custom website might be the best solution. We can build a site tailored to your needs, along with functionality to sync local data to the site. In fact, we just finished a project where field service reps enter data on I-Pads, which then synchronize via a website to the local database. With a system like this, employees (and potentially, customers) can view and update data in your office, no matter where they happen to be.

Send event-driven e-mails and text messages

E-mail and SMS notifications

Now and then, unexpected events are bound to crop up at your business. Some might rise to crisis-level. How much time and money does your company spend needlessly putting out fires that could have been prevented, had you known about the issue earlier?

Custom software can monitor your systems and send notifications to key people automatically. Here are just a few examples:

  • The number of hits on your company’s website changes dramatically.

  • Inventory levels dip below a preset threshold.

  • A brand new customer submits her first order or support request.

  • Account balances in your accounting software fluctuate in unexpected ways.

  • Key employees fail to clock in or out.

The Bottom Line

If you can envision it—and describe what you need—we can code it. Which applications could use some updating at your company? Contact us to discuss your project. There’s never a charge for the initial consultation.

How an SSL Certificate Can Boost Your Sales

If your company’s website doesn’t have a working SSL Certificate in place, it might be doing more harm than good. 

SSL certificates help you gain customers, by making visitors feel safe when they visit your website.  They’re more likely to trust you and, consequently, to do business with you. And thanks to Google, SSL certificates also have a huge impact on how high your site ranks in web searches.

SSL Padlock

You can easily tell whether a site has a valid SSL certificate. The address starts with “https” (rather than “http”). That’s what determines whether a padlock appears in the address bar before the address itself. This might not seem all that important. But that little padlock can spell the difference between landing a new customer, and losing them to your competitors. Contact our custom programming company to get your SSL certificate properly installed.

Appearances matter. Safety even more.

Cybersecurity has become an increasingly important topic in recent months, as more of your potential customers work from home due to the recent Coronavirus outbreak. More business has moved online than ever before.

In this environment, what’s the greatest challenge companies face in attracting new customers? Safety.  Ever discover that someone used your credit card number for purchases you didn’t authorize?   Stolen credit card data and identity theft are still top-of-mind concerns.  We’ve all become more suspicious when someone asks for personal data online.  Is it any wonder that over the years the average user’s trust in internet security has decreased rather than increased?

Frankly, if your web site doesn’t have a functioning SSL certificate, it sends the message that a visit to your website just isn’t worth the risk.

Give a green light for surfing your site

Which web browser do you use? Hands down, Google Chrome has quickly become the most popular browser in the world:

StatCounter Global Stats - Browser Market Share
Source: StatCounter Global Stats – Browser Market Share

Why does this matter? Because Chrome actively warns users when they visit any site that’s missing an SSL certificate. Most people—and I’m one of them—click away from a site that’s identified as unsafe. I’ll bet your prospective customers do, too. Appearances matter.

But are SSL certificates really worth the hassle and extra effort? After all, you and I both know that there’s no dangerous content on your site. You’re not trying to cheat or defraud anyone. But visitors don’t know that. Prospective buyers won’t stick around long enough to learn about your great products and services—unless your site has a working SSL cert in place.

How SSL protects visitor data

Remember back in grade school when you tried passing notes to your friend without getting caught by the teacher? Ever get caught, and then embarrassed by what you had written? What if you and your friend had used a secret code, so that even if someone did intercept your message, nobody could understand it? That’s the premise behind SSL (Secure Sockets Layer).

When users press the Submit button on a site, any data they’ve entered passes through several computers before reaching its destination. You want to guarantee that the journey to and from your website is safe, no matter what. An SSL certificate makes this possible.

Encryption Keys

How does it do this? SSL uses a set of encryption keys—one on the web server, the other on your browser (the server sends a key to your browser when the first page loads).

Just as a safety deposit box requires two keys, so also with SSL traffic: both keys are required. Unless an eavesdropper has both encryption keys, they can’t access your valuable information. This makes sure that data encryption will shield the path between your computer and the website. So all messages exchanged with the server are secure. No one else can read them—not even those who are bent on stealing your data.

With a working SSL certificate in place, your web browser encrypts the data so that only the server can read it. This is especially important if your website collects personal data from your visitors, such as:

  • e-mail addresses
  • personal information
  • payment details
  • survey data

Thanks to SSL certificates, users can rest assured when visiting your website, submitting confidential information, answering personal questions and ultimately, buying your products and services.

SSL certificates are good for Search Engine Optimization

Taking care of your visitors’ data security will help your search engine ranking too. Google has taken a clear position about SSL certificates, advocating their wide scale adoption already back in 2017.

Today, Google assigns a higher SEO ranking to websites that have a SSL certificate. All things being equal, between two competing websites, the one with an SSL certificate will rank higher in web searches. Sites without an SSL cert won’t appear anywhere near the top of the search results.

Not all certificates are the same

Different websites need different certificates. For most sites, a standard SSL certificate will be enough. But if you have an enterprise-level site, or if your company operates in a regulated industry (finance, for example), check with someone who knows the difference. Since there are different types of SSL certificates, their cost may vary considerably.

There are different types of SSL certificates because each must meet specific requirements and has different authentication processes. Companies that issue them must go through a lengthy and complicated vetting process by a Certification Authority (CA). This vigilance extends all the way down to your web developer. Before your company can receive an SSL certificate, you (or your programmer) must verify your identity, and be able to prove that you really are who you say you are.

If you want to be sure of the type of certification that best suits your business, contact us. We’ll cover what you need to know and suggest the best solutions for you.

To sum it up

Here are just some of the benefits of installing an SSL certificate on your company website:

  • No loss of visitors: users won’t click away when their browsers display frightening messages about the trustworthiness of your website
  • Data encryption: visitor data is transferred securely
  • Identity verification: no risk of phishing
  • Higher SEO results.
  • Keep up with the times: like the milk in your refrigerator, SSL certs expire. Keeping a certificate current demonstrates that your site hasn’t been neglected.
  • Customer confidence: if visitors know they are safe, they are more likely to do business with you.

Running a successful business is challenging enough already. Don’t make things even more difficult by leaving the impression that your site is “unsafe”. An SSL certificate will go a long way toward instilling confidence that your company is one of the good ones.

Visual FoxPro Migration

Departing Fox

The time has come. Your trusty custom VFP application has served you faithfully for years. But it’s getting harder and harder to find competent VFP programmers. So your company has decided to embark on a Visual FoxPro Migration, moving to a new custom software application. Are you wondering which way to go? Well, here are three different paths that you might want to consider:

1) Upsize your FoxPro application to a Website

Migrating your VFP code to a web-based solution can be challenging. Because websites behave very differently than desktop software. But this might be a great option if your workforce works remotely. When you choose this option, your salespeople and remote workers will be able to access data from anywhere in the world. And several web development platforms are available, including ASP.NET, Node and PHP.

Desktop To Cloud

Here’s another question to consider: which database should you use? Your answer will depend on several factors. First, how much data are we talking about? Will your project require an enterprise-level solution? Or can you start with something smaller? And keep in mind that some companies have written policies about databases. Does yours prefer open-source, or commercially-developed databases? The three most popular databases our customers have chosen recently are:

  • SQL Server – a relational database server from Microsoft
  • PostgreSQL – an open-source relational database management system (RDBMS) which emphasizes extensibility and SQL compliance. It has been growing in popularity over the past several years.
  • mySQL – another very popular open-source RDBMS

(If you’d like a detailed list of relational databases ranked by popularity, check out db-engines.com)

2) Migrate to C#.NET

Microsoft stands behind C#.net, its desktop platform. C#.NET offers all the user-friendly desktop features you love in your custom VFP application. Plus, it adds more cool bells and whistles than ever before. When you migrate from one desktop application to another, the form layouts and reports will look very familiar to end users. So your company won’t have to spend a lot of time retraining users.

If you go this route, we recommend migrating the VFP databases to SQL Server (or SQL Server Express). Why? Because C#.net is tightly integrated with SQL Server. Opting for a different database is possible, but might take more time to program.

3) Stagger Your VFP Migration

Migrating Visual FoxPro apps can take a lot of time and resources. And if the source code spans hundreds of thousands of lines, it might take even more time. That’s why several of our customers prefer to divide and conquer. That is, they break their project out into phases.

Phase 1 usually involves redoing the user interface so that it talks to SQL Server rather than VFP tables.   This phase includes several smaller steps, including:

  • Remapping every database transaction
  • Normalizing database tables
  • Adding primary/foreign keys
  • Adding CursorAdapters, special data classes which help make the transition to phase 2 much easier

Phase 2 often comes months–or years–later. This phase involves migrating the user interface to another platform. Often this will be C#.NET, or ASP.NET. But Node or PHP are other possibilities.

Staggering the migration over a longer time frame gives you the added advantage of staggering the cost as well.

The Upshot

The prospect of a Visual FoxPro migration can be overwhelming. Since this can be a complicated process, it often makes sense to create a Systems Design Specification which fleshes out your project in much greater detail.

If you’d like to get objective, unbiased input about your VFP migration, feel free to contact us. We’ll be happy to discuss your unique situation, your goals, and your timeline. And the first hour is always free.

Expand Your Business Phone System

If your office uses Asterisk PBX to handle incoming and outgoing phone calls, or if you’re planning to install Asterisk in the future, you’ve made an excellent choice!  (Asterisk is open source telephony software that offers all the functionality you’d expect from expensive business phone systems, at a very low cost). Now, maybe you’ve been perfectly happy with your PBX for years. But with Asterisk, you can expand your business phone system any time. And it can grow and change right along with the company as your needs change.

Leverage Open Architecture

For me, one of the most appealing features of Asterisk is its open architecture.  Because it’s incredibly flexible and open source, so you can expand your phone system and tailor it to how your company does business.  Here are just a few examples of how you might opt to expand the capabilities of your phone system:

  • Add an intranet web server. And then, migrate your company’s phone directory and frequently-called external numbers into an online phone directory.  This phonebook-on-steroids lets users simply type a few letters of the contact name or company into a search box.  So, once they click on the phone number, the system will dial the contact and make the connection automatically. For screenshots and more information, check out this earlier post.
  • Integrate inbound calls into your order entry software.  Any time the system recognizes the caller ID, it can bring up that customer’s record on screen before you even answer the call.
  • Blacklist known telemarketing numbers and robocalls. Now, your phone system will automatically hang up or send them to company voicemail.
  • Search call history by date, by extension, or by external number.
  • Forward calls to another extension or external number from a web interface.  So whether you’re in the office or working remotely, calls will follow you wherever you are.
  • View or listen to voicemails online.

Even more ways to expand your phone system

And that’s just the tip of the iceberg! Do you need to route inbound calls to different offices across the country or around the world? No problem. Or do you need your remote workforce to make and receive calls from their home office? Let’s do it.

Want to learn more about how to put your company’s phone system to work? Contact us. There’s never a charge for the initial consultation.

Why Not Migrate to MS Access?

For years, our software company has offered programming and support for Visual FoxPro. And we still do today. Some of our customers are running large VFP programs, that span millions of lines of code. But Microsoft no longer supports VFP. So people often come to us and ask to help them migrate their applications to a different platform.

This image has an empty alt attribute; its file name is db_250x145.png

Sometimes customers ask whether we recommend Microsoft Access. In a word, “No”.
There are several reasons why…

Access comes in handy when you need to capture, manage and generate professional-looking reports. It’s relatively easy to install. If you’re into merging data, you can integrate it with Word or Excel. And if your Access application is well-written, it can handle multiple users before heavy usage and larger file sizes start bogging down its performance.

While Access is still fairly popular, it has several limitations. First, Access has been around for a long time. But it hasn’t kept up with recent features that you’ll find in other database apps. Second, there have been issues with opportunistic locking on Windows file servers, which can lead to data corruption.

Thus, Access often isn’t the best solution, even for small businesses. Here are even more reasons why we recommend other database solutions:

  • Size Limit. Any company that has more than 2GB of data will soon bump up against the upper file size limits with MS Access. If you run a large company or department, Access will almost certainly be too small to meet your needs.
  • Internet Access is Problematic. While we’ve seen a few clever attempts at making Access data available over the web, today there are better alternatives for web development.
  • User Limitations. Access works best for smaller businesses with only a few concurrent users. Any more than that, and you’ll start serious noticing performance problems as soon as multiple users try to access the database at once.
  • Design issues. While it’s true that Access databases can be created by almost anyone, that isn’t necessarily a good thing. Oftentimes we encounter Access tables that could have made use of relational data structures. Instead, they’re laid out as flat files, with duplicate data fields across multiple tables. When data is updated in one table, the designer didn’t know how to handle updating related fields. Then, users scratch their heads, wondering which field is correct?
  • Can you say “Data Corruption”? It’s not unusual for us to receive frantic calls from folks who can’t get into their database any more. We can often repair the damage—but if given the choice between Access and other more reliable database applications, why entrust your mission-critical data to Access?

So, what are our options?

Fortunately, there are several great alternatives available. Here are just a few:

  1. Migrate your data to SQL Server or SQL Express, and the user interface to C#.
  2. If you want to make your data available over the web, and you’re more inclined to use open source solutions, you might consider PostgreSQL for the database and Node.js/Express for the user interface.
  3. When you need to incorporate mobile devices into the mix, there are several additional factors to consider.

This article might raise more questions for you than answers. But not to worry! We’d be happy to walk through your specific situation and recommend a solution that would work best for your company.

Five Advantages of an Online Payment Interface

Automated payment processing

How does your office handle credit card payments? Does your assistant connect up to a virtual terminal and manually key the customer’s credit card data? Did you know that most merchant service providers allow you to automate this process, so that customers can make payments online?

Here are just a few of the benefits your company can enjoy by setting up an automated payment interface with our custom programming services:

Save valuable time. No more time required to take card numbers and billing information down over the phone. This can add up to significant chunk of hours over the course of a year.

Reduce the possibility for data breaches and fraud. Years ago, before we set up an integrated payment system, my wife’s policy was to immediately walk over to the paper shredder and shred the payment data. But what if you’re not married to the person you’ve hired to handle accounts receivable? With an automated payment system, there’s no need to worry about what to do with sensitive credit card information after a payment has been made over the phone. Employees won’t be tempted to misuse credit card data, because they will never see it.

Reduce PCI compliance requirements. If your company processes credit card payments, then you’re probably familiar with the term ‘PCI DSS’ (the Payment Card Industry Data Security Standard).  With most automated solutions, a connection is established directly between your customer’s web browser and your payment gateway. Payment data never enters your web server. This can often lower the burden and cost of PCI compliance.

Customer convenience. When you embed a link to your payment page in your invoice and statement emails, customers know they can pay by credit card. Many will take advantage of the convenience factor. And as a result …

Get paid faster. With integrated payment processing, many customers will pay new invoices or statement balances immediately when they receive your e-mail.

If you have questions about how to set up an automated payment interface, contact us.

Asterisk Speed Dial

Wouldn’t it be great if all your contacts were readily available in a simple web page? And wouldn’t it be even better if you could simply click on their phone number, and let your phone server call your extension, then dial the contact automatically?

At our office, we have a page written in PHP that displays a list of names/ phone numbers matching whatever search string the user enters.  The phone numbers are displayed as a list of hyperlinks.  Those hyperlinks call a PHP page I’ll reference as dial4me.php (names have been changed to protect the innocent), passing the desired phone number in the query string.

Inside dial4me.php, the desired outbound phone number gets massaged (making sure the correct country code and area code are included), populating a variable called $num2dial.

The $sip_account variable is used to establish connectivity with the local extension somewhere inside our building.  It gets populated by looking up the appropriate value in a mysql table.  For example …

I also set up a special context inside extensions.conf to handle these types of calls.  There’s nothing magical about the 72x12231Nk32 extension—it’s just a random string of characters and digits that wouldn’t likely appear naturally.  (Also makes it easier to search for the relevant section in my excessively lengthy extensions.conf)

With that for an introduction, here’s the relevant snippet of code from dial4me.php:

// Asterisk eagerly searches for .call files.  We need to avoid file locking contention issues.
// So, fully populate the entire contents of the outbound .call file to a string before
// writing everything to the outbound .call file in one fell swoop.
// ——————————————————————————————–

define(‘CALL_FILE_TARGET_FOLDER’,’/var/spool/asterisk/outgoing/’);  // folder where call files
// should get dumped.  Asterisk will delete each file after processing.

define(‘CALL_FILE_TEMP_FOLDER’,’/var/www/html/tmp/’) ; // where to store call files temporarily,
// to avoid complaints from asterisk about inability to set utime or some such nonsense

        $lcOut = ‘Channel: ‘ . $sip_account . “\n”;
        $lcOut .= ‘WaitTime: 30’ . “\n”;
        $lcOut .= ‘Setvar: PHONENUMBER=’ . $num2dial . “\n”;
        $lcOut .= ‘Context: patch_me_thru’ . “\n”;
        $lcOut .= ‘Extension: 82x231Nk32 ‘ . “\n”;

       $cOutFile = ‘callnow_’ . time() . ‘.call’;
$cTmpOut = CALL_FILE_TEMP_FOLDER . $cOutFile ;
        $cFinal = CALL_FILE_TARGET_FOLDER . $cOutFile ;
        $nHand = fopen($cTmpOut,”w”) ;  // write output to tmp folder hanging off www/html

        fwrite($nHand,$lcOut);
        fclose($nHand); // write the file out to the calls folder
        chmod($cTmpOut, 0777); // change from 644 to 0777 so that asterisk doesn’t freak
// out about not being able to update the file timestamp

       chown($cTmpOut,’asterisk’); // change file owner to asterisk so we don’t see
// a meaningless message about utime
        rename($cTmpOut,$cFinal) ;
        chmod($cFinal, 0777); // change from 644 to 0777 so that asterisk doesn’t freak
// out about not being able to update the file timestamp

And here’s the relevant context from Extensions.conf:

[patch_me_thru]
; This context uses .call files generated by rd.iotechno.com.  See dial4me.php
include=>LocalExtensions
exten => 72x12231Nk32 ,1,Set(CDR(userfield)=${PHONENUMBER})
same => n,Set(CALLERID(num)=12624373239)
same => n,Dial(SIP/${PHONENUMBER}@trunk-VIout,120,mxX)
same => n,Hangup(); Clean up the local channel when we’re done with it.

Introducing a New Doc Management Module

Thanks to everyone who responded to my last e-mail, asking for your input about document management.

We’ve taken your feedback to heart, and developed a new document scanning module. It’s designed to be incorporated into existing applications with very few modifications.

For a quick demo of the features and benefits, check out this 2-minute video:

ScanDoc Overview

(By the way, if you want to take advantage of the scanner feature, you’d need to buy and set up at least one desktop scanner. Here’s one we really like: Brother ADS-2000e).

If you’d like to discuss incorporating this module into your software, please let me know.

Scope Creep–And How To Avoid It.

SCOPE CREEP

“How much longer ’til we get there?”  It’s not just a question our kids ask on the way to grandma’s house.  It’s one we might also ask when the  software project we’re waiting for doesn’t show up as soon as we expected.

Sometimes there’s no excuse for project delays.  We’ve heard of cases where developers (working for our competitors, of course!) didn’t even start working on a project until the deadline passed.   But more often, another culprit lurks in the shadows.  It’s called scope creep.

What is Scope Creep?

 You’ll know you’re looking at scope creep when your software development project extends beyond the time or money you planned for.

 “How did we get here?” a frustrated client might ask.  “After all, we’re intelligent people who know exactly what we wanted and where we wanted to go–right?”  Maybe so.  But there’s a reason for the word creep in scope creep.  Often, a number of incremental changes and improvements take over.  These little changes add up–pushing the delivery date much farther out than anyone planned.

Why does this happen?  The most typical cause has to do with the project plan. 

Project Specification Makes All the Difference

I guarantee it:  there will be scope creep 100% of the time when nobody documents what the final product should look like.   Sometimes there’s a vast difference between what a client truly wants, versus what the developer thinks the client wants.   The problem arises when nobody spells out the project requirements in black and white.  Here are a few ways this will become apparent:

  1. Vague statements of work.   Consider this requirement:  “Develop a screen to track all vendor communication.”   What’s wrong with it?  Nothing, as long as it’s the first sentence of a lengthy paragraph describing how the screen should behave.  But what if this is the entire screen definition?  Do you see how much room for misunderstanding it brings?   A good statement of work will go much farther.  It will describe every field the form will contain.  It will explain how users can access the screen.  And it will spell out how every control on the screen will function.  Vague statements in the project definition often result in disappointment when the project is delivered.
  2. Failure to document the criteria for completion.  When it comes to software development, “We’ll know we’re done when everybody’s happy” just won’t cut it.  Without a set of completion guidelines, programmers and users will often find themselves in an endless cycle of adding “just one more feature” or making “just one more change”.
  3. Forgotten project components.  We also affectionately refer to this as the “Where’s the feature we never told you about?” conundrum.  A good systems analyst should be able to map out the scope of software project up front.  But sometimes clients fail to mention that they want to include the functionality of an entirely separate application.   Only after we reach the beta testing phase do end users complain that something’s missing.
  4. Changing requirements mid-stream, without updating the project definition.  For example, “What we said we wanted two months ago no longer applies, because we’ve started a new product line.  And we don’t need the widget feature because we stopped making widgets.”  Changing requirements can have a significant impact on the project scope.

Additions, changes, and enhancements can increase the cost of any project.  As the size of a project grows, managers may expect software developers to do more than what they expected.  When the cost or  time frame increases, it can also lead to increased stress on both sides.

What can we do to prevent scope creep?

When it comes to software development, prevention is the best medicine.  Authors have written numerous books on how to manage software development.  Here are three of the best methods we’ve found to prevent scope creep from delaying a successful rollout:

  1. Start small–especially when you’re working with a new software developer.  This will help to protect your investment of time and money.  If the first project goes well, then later enhancements will cause less concern.
  2. Document expectations thoroughly.  What exactly should the finished product look like?  How should it work?  The more documentation you can put together in the initial stages, the less likelihood of surprises and unmet expectations.  Some folks think they’re too busy to take the time to do this.  If that’s your situation, consider hiring a systems analyst to do the documentation for you.  Failure to do so will likely result in undocumented failure.
  3. Expect change orders.  Even the most detailed statement of work can’t predict changes in a company’s environment, such as a new service offering, mergers or changes in management.  And once users start working with the new software, it’s not unusual for light bulb moments.  For example, a sales manager exclaims, “Hey!  If the software can automate invoicing, why can’t it help us create proposals too?”   But it’s important that customers and developers agree that the enhancement is just that–an enhancement.  In that case, change orders can help improve the development process.  A well-written change order will also set the priority of the additional functionality.  Should a new feature be included in the project before the live date, or should it be included in a future release?

Scope creep is nobody’s friend–not the clients, and not the developer.  Clients will likely become frustrated by delays and cost overruns.  The developer will be disappointed when his or her creation doesn’t fully meet the client’s expectations.  So before you embark on your next project, consider taking the time to document your needs.  Talk with your software developer about how to make sure everyone is on the same page.  Agree on detailed software development plan before a single line of code is written.  You’ll be pleasantly surprised with the results.

Why You Need an E-mail Strategy.

Now more than ever, it’s critical to leverage this medium to your advantage.

Develop an E-mail strategy that circles the globeRemember the day you received your first e-mail?

I can’t.   It almost seems that e-mail has always been there—even though it showed up only recently.   Only two decades ago, most folks considered something like e-mail to be cutting-edge technology.

Today, we couldn’t function efficiently without it.   E-mail has changed business communication more than any other technology.  E-mail allows us to communicate with whole groups of people simultaneously.  And, it automatically builds an audit trail when working on important projects.

E-mail is here to stay.  But do we regard it more as a blessing, or a burden?  The same tool that can speed communication can also reduce productivity.  So we need to develop an e-mail strategy that leverages e-mail’s power, without bogging us down.

An E-mail Strategy will Help Control Costs

Here are three  techniques you can adopt to minimize the cost of corporate e-mail:

1Control your e-mail software—don’t let it control you!
 Have you ever noticed that you get more work done when your e-mail application isn’t running?  When Outlook is running on my PC, each new email can be a serious distraction.  Leaving your email running can turn your day into a series of constant interruptions.

So, rather than leaving e-mail running all day, set definite times to manage your e-mail.  Before firing up Outlook or Eudora in the morning, jot down the tasks you want to focus on first.  Why?  Because we have a tendency to let e-mail manage our time, instead of the other way around.  On my most productive days, I’ve found it useful to open up Outlook only once during mid-morning, and then again toward the end of the day.  I’m still able to communicate with people, and if someone wants an immediate response, there’s always the telephone.

A different approach might work better for you.   But it’s important that you have a plan and a strategy so that you’re in control of your schedule.

2Declare war on SPAM.
 Unsolicited Bulk E-Mail, AKA SPAMSPAM is unsolicited bulk e-mail—commercial messages sent in bulk from people you don’t know.  Call it what you will, spam is a colossal waste of company time.  Think of it:  if each of your employees and coworkers spends only five minutes per day reviewing and deleting junk e-mail messages, how many hours will your business lose over the course of a year?  A business with only four employees would lose a minimum of 21 hours worth of productivity!  So killing spam should be a key part of your overall e-mail strategy.

PC-based spam blockers built into email apps are helpful.  But a better approach is to install spam blocking software on your e-mail server.  This prevents most spam from ever arriving in your inbox.  What’s more, it reduces traffic on your network.  So everybody wins—except the spammers.  These server-based spam blockers come in several flavors:

    1. Context-based blockers.  SpamAssassin, for example, reads every e-mail word-for-word, searching for word patterns that identify them as garbage.  You can tweak its sensitivity by monitoring messages it flags as spam.  Once you’re comfortable with its accuracy, you can instruct SpamAssassin to automatically delete the offending e-mails.
    2. Sender-aware blockers.  These focus on where the e-mails came from.  For example, SpamHaus.com offers up-to-date blacklists which your e-mail server can use to identify junk mail:  E-mails arriving from senders on the blacklist, are automatically deleted.  But e-mails from people you’ve flagged as trustworthy (ie., whitelisted) are routed to your inbox.
    3. Identity-restricting blockers.  These spam blockers send “who are you?” e-mails to unknown senders, requiring them to register before any of their e-mails get delivered.  And they give you the ability to decide whether you want to continue receiving e-mails from the sender.

No spam filters are foolproof, but they’re worth the effort and expense.  Consider this:  if you can cut that 5-minute-per-day spam volume in half, you’ll save your company hours of productive time per employee each year.  ($600 per year for an average small business with a staff of four.)  

3Should your e-mail strategy include housing your own e-mail server?
  E-mail is faster than snail-mailAlthough setting up an in-house mail server can be challenging, the investment can pay for itself many times over.  And it doesn’t have to be expensive.  Of course, the big-name vendors would love to sell you their solutions.  But you can install open source solutions on much more modest equipment–for a lot less money.   Depending on your company’s size, bringing your e-mail server in-house can reduce your costs significantly.

Consider some of the advantages of hosting your own e-mail server:

  • You—not the hosting company—control naming conventions for your e-mail accounts.
  • There are no limits on the number of accounts you can set up.  You can create public and private e-mail addresses for each employee.  You’re free to set up separate accounts for each department.  Or, you can set up group mailboxes that can be monitored by multiple recipients.
  • There aren’t any space quotas (unless you decide to set them).
  • Create custom mailing lists to reach different groups of customers, vendors and employees by sending e-mails to a single address.  You’ll save time by not having to collect, copy and paste e-mail addresses into outbound e-mails.
  • Access your e-mail from anywhere—using built-in web enabled software.
  • You can tweak and fine-tune your spam control settings.
  • Greater privacy for mail hosted on your own server versus free-mail servers.  When you own your mail server, you own the e-mail content on that server.
  • Since you own the e-mail server, you won’t be forking out monthly fees for every mailbox, mailing list and account you set up.

Some might hesitate to host their own e-mail server for fear of the maintenance that will be required.  But after installation, e-mail servers sit there quietly, doing their job day in and day out with very little maintenance.  We’ve left ours running for months without ever touching or rebooting it.

Use e-mail to promote your business.

1Carefully consider the address you choose to identify yourself.
 If you’re serious about growing your business, why not leverage your e-mail address as a marketing tool?  It can become a valuable means of telling folks what your company can do for them.   Your choice of an e-mail address is at least as important as your choice of phone numbers or domain names.

Compare the following samples.  What impression does each give you about the recipient and the company s/he works for?

Examples of e-mail addresses

What message does your e-mail address convey about you and your company?

While we’re at it, let’s consider the wisdom of using free-mail as your primary e-mail account.  The term “Free-mail” describes e-mail accounts you don’t have to pay for.  Services such as Hotmail, Gmail, and Yahoo! are just a few of the services which offer them.  Mailbox sizes are generous.  And many have built-in spam reduction.

So why wouldn’t everyone sign up?  Well, consider the cost.  Yes, there are costs associated with using free-mail.  Because no matter how creative you are, a free-mail address doesn’t carry the same marketing weight as one that’s linked to your web domain.  In fact, some spam blockers treat free-mail as spam.  So you run the risk of people never receiving your important messages.  

2Dress up your Signature
 Every e-mail program lets you insert a pre-defined block of text and graphics at the end of your e-mails.  Some folks prefer to simply use their initials or “Sincerely yours.”  They’d be better off using a well-crafted signature.   Why not take advantage of this capability, and promote your business with every e-mail you send?

With a little effort, you can change your e-mail signature frequently to advertise special offers and invite customers to upcoming events.   Often you can include your company’s logo.  You can even insert hyperlinks that drive traffic back to your company’s web page.

3Use e-mail to keep in touch with customers and prospects
 Research proves that the more you stay in contact with your customers and prospects, the greater your sales.   Your e-mail strategy should include a schedule for reaching out to them.   There is a place for newsletters  filled with news your customers and prospects can use.

Word to the wise:  Whenever you launch an e-mail campaign, please be sure to make it easy for folks to unsubscribe.   And whenever you receive such a request, please be sure to honor it promptly!

Considering how widely accepted e-mail has become, it’s easy to take it for granted.  But successful business people will recognize its importance as a communication vehicle.  And they’ll craft an e-mail strategy to make e-mail work for them, and not against them.

What is a Design Specification?

In order for us, or anyone else to provide you with an accurate proposal, your company would benefit greatly by having a detailed design specification drawn up, using this document as your reference point and benchmark.

A design specification is a document which describes what a completed application will look like. It sets forth the required characteristics to be considered for awarding a programming contract-including sufficient detail to show how the application is to be created.

A completed software design specification should do all of the following:

  • It should be able to adequately serve as overview for programmers, giving them enough information and understanding about a project so they can get up to speed quickly, and won’t feel overwhelmed when asked to create or modify source code.
  • It should serve as the blueprint that designers and programmers use to benchmark whether they’re designing the application in keeping with the original intentions of the design team.
  • It needs to be as detailed as possible, but must not impose such a burden on the programmers and implementers that it becomes overly difficult to create or maintain.

Advantages

Using a design specification will ensure that:

  • Your company’s expectations are documented, and agreed to by all decision-makers within the organization
  • All major design issues are unearthed and addressed
  • Your time and effort isn’t wasted by repeatedly explaining project requirements to multiple developers
  • Priorities and timelines for all the desired features and components can be established
  • Objective cost/benefit analysis can be performed
  • Resulting proposal(s) can be compared against a single standard
  • Your company’s expectations will be met by the developer who ultimately develops your new system

Another advantage of using a design specification is that you can use it to compare quotes from multiple vendors against a single standard. It protects you from having to compare quotes on an apples-to-oranges basis.

Seven-Step Method

The procedure we follow when writing a system design specification includes these steps:

  1. Preliminary investigation – thorough review of all documentation and other materials provided by client
  2. Conduct interviews of key personnel as identified by management.
  3. Define project scope and constraints
  4. Create comprehensive system specification document
  5. Present results and recommendations to management
  6. Adjust specification per management feedback
  7. Deliver final specification document to management

The Next Step

After these steps are performed, we then go on to provide a detailed proposal based on the final specification. Of course, your company would be free to use the final specification to solicit proposals from as many developers as desired.

Your Investment

I/O Technologies can offer this service separate from any programming effort for a flat fee. Again, this will not produce any software, but will be useful whether you choose I/O Technologies, Inc. for the development effort or contract with another vendor.

Design Credit

Should you contract with I/O Technologies, Inc. to develop your application within 30 days from receipt of the final design specification, we will issue a design credit equal to 15% of the cost of the initial design specification work toward the cost of actual application development.

Eating the Software Elephant–One Byte at a Time.

You’ve probably heard the question, “How do you eat an elephant?”  And the typical answer:  “one bite at a time.”

What does this have to do with software development?   Actually, it’s a great analogy.   Because over the years, we’ve met many business owners who run their companies on really old code.   (Some might even call the software ancient, by today’s standards.)  In fact, we often find programs written back in the 1980’s, still hard at work today.  But even when better solutions have evolved, some companies still hang on to the legacy system for as long as possible.

Managers have their reasons to sit tight

But why would business owners entrust their core business processes to old software, when so many improvements and innovations have become available?  They do so for several reasons.  And we hear these most often:

  • “Our custom software has been a wonderful asset for many years. It’s tailored to the way our company does business.  And it has run well for a long time.   Why fix something that ain’t broke?”
  • “Our software application is huge.  It has many modules and contains hundreds of thousands of lines of code. So, migrating to newer software would be a colossal challenge.”
  • “Our people are very comfortable with the existing software.  Training them on a new system would take time.   And change always upsets the normal flow in our office.”

Migrating to a newer software platform can present real challenges.  It often involves a review of how the current software meshes with today’s business operations, and how it could be improved.  So it’s not surprising when companies hesitate–even when yesterday’s software no longer meets today’s demands.

But folks, this doesn’t have to be an all-or-nothing proposition.

What’s a good manager to do?

Software Development Life Cycle

Let’s rephrase the first question slightly:  how do you migrate a huge software application?   In my opinion, the best answer is:  one byte at a time.

Yes, you could tackle a migration project all at once.  But migrating smaller, manageable byte-sized chunks often makes more sense.  And there are several reasons you might go this route:

  • Rolling out incremental changes allows you to see results more quickly.  And smaller updates won’t upset your business operations nearly as much as larger ones could.
  • Small updates will introduce change to your employees at a slower pace.  As a result, they’ll have time to get comfortable with the change.  And hopefully, they’ll recognize the benefits as well.
  • When you migrate gradually, you’ll spread the cost over a longer period of time.
  • Taking smaller steps gives you a chance to evaluate a software developer.  It lets you see how well they understand your needs.  Plus, you’ll find out how well they implement your programming specifications right away–rather than months later.

Because we all have lives outside the workplace, it’s understandable why some might postpone adding yet another project to our busy schedule.    But hardware and operating systems continue to evolve.  And the day will come when 30-year-old software won’t support your core business applications any longer.   So it’s wise to start planning now, rather than waiting until you have fewer options.

Not ready for any changes just yet?

What if you’re not ready to begin the process today?  At the very least, you might want to find programmers who can support your application in its current state.  Not only will you have someone to call if anything goes wrong.  They’ll also be more knowledgeable about your business processes when migration time finally arrives.

If you’d like help evaluating how best to migrate your software application, give us a call.

Beware this email hoax

This morning’s e-mail included an “Urgent Server Warning!” message from Notification-email@upgrade.com.

Looks pretty serious, doesn’t it?

But I can tell you with 100% certainty that this is a complete and utter hoax.

How can I be sure?  Well, I’m the administrator for iotechno.com’s mail server.  So I’m the only one who can disable or remove email accounts from our domain.

No, the goal of whoever sent this email was to lure gullible recipients into clicking the hyperlink–which would launch a web browser and drag you onto their site.   The page you land on would probably attempt to sell you something, steal information off your computer, implant a virus, or worse.

(I won’t repeat the full hyperlink here, but the site starts with  ‘cinematic’ and ends with ‘ter.com’)

The moral of the story:  it’s highly unlikely that your email server administrator would ever send an email like this.  After you hover over the hyperlink, if you don’t recognize the site, don’t click the hyperlink!  Just delete the email and carry on.