Software Engineer

A Good Software Engineer Will Identify These Two Problems

In today’s world of rapid development of new technologies, an idea is often all it takes to completely reinvent the way we produce, consume, and live! The life cycle of new ideas follows a predictable pattern: birth, testing, development, testing, implementation, and testing again. Every step of the way, new ideas should be discarded if unfeasible, but the further down this life cycle they get, the more valuable the new project becomes to its “parent.” Similarly, a new idea may not be entirely thought out (often because of a lack of expertise or adequate advice). This can bring a lot of problems in the future and may cause the collapse of a project altogether.

Software engineers call these two problems babies & horses and they cannot be overstated when it comes to software development. A good software engineer will provide adequate advice regarding a new project, paying particular attention to these two issues in the software development life cycle. Here is a quick guide to help you identify the two problems as soon as they arise.

We All Love Babies (and are very afraid to drop them)

We often have the tendency to treat our new idea (or product) as our baby. We nurture it, we help it make its first steps, we protect it vigilantly. We get to a point where we are so completely in love with our idea that any suggestion becomes an attack, and any assistance is seen as a threat to its life. Of course by this point, our ability to view the new idea critically is close to zero. We are blinded with love and are unable to see the drawbacks involved this idea of ours. We cannot objectively calculate the real benefits it will bring either. The responsible software engineer should be able to tell you when a new or existing product should be reconsidered or eliminated altogether. A good product is one that was not spared every possible revision, and all the testing and debugging it could get.

Horses Need Grooming (and the right stable! — says the software engineer)

The “horse” project is equally critical to be identified early. Consider for a moment that you own a horse and one day decide to bring your horse into your second-floor apartment. Sure, it may be possible to do, but it will not be the most feasible plan. The helpful software engineer will tell you that your project is a horse; and the horse is a very specific type of animal. It requires constant grooming, a special type of diet, and the adequate lodging to keep it happy. You will need to plan for its upkeep ahead of time, and you will need the infrastructure to be appropriate — especially if you plan on acquiring new horses in the future!

So there you have it, two problems with new projects that can have serious consequences if not identified in a timely manner. Is your project a baby or a horse? Seek advice from a good software engineer today.

Communication in IT

Communication Is Key to a Trustworthy Relationship

Finding the right partner (business or otherwise) involves establishing a relationship based on trust. Effective, regular, and honest communication is the key element in building trust in any relationship. This is particularly the case in long-distance relationships between outsourcing software development companies and their clients.

We’ve conducted a short survey among potential clients asking what would make them hesitate when choosing a software development partner. One of the biggest reasons quoted was bad communication. This was either out of a general perception that outsourcing companies lack clear communication skills, or it came from previous (mediocre) experience.

Honest Communication Makes Perfect

Here are three tips to ensure that the communication with the company you choose to develop your next software is productive:

  • Set clear expectations for outcomes. This may sound obvious, but setting clear expectations is critical for the success of your project. Meet with your team and write down the problem that needs to be solved. This must be comprehensive and as clear as possible. Note any possible solutions you see, but ask for feedback from the software development guys. They should advise regarding alternative solutions to help cut costs and plan ahead. Software development is no different from construction – if you plan on adding additional floors, you should have a solid foundation. Also, the floors themselves should allow for more floors to be added later (or the design and function of each to be modified). Make sure you know what the purpose of the solution is in the long-term. This will allow for advance planning and minimize surprises down the road.
  • Expect and ask for regular updates and progress reports. Once the project has begun, make sure you keep in touch with the developers. Progress reports, regular meetings and updates are a must when the process has started. This ensures that the project runs smoothly and problems are identified early. Clarifying questions, issues that were not initially planned will always come up. Regular feedback helps keep the project on-track.
  • Expect honesty. As the deadline approaches, having all the information will help you plan accordingly and act fast. If something goes wrong, you should know about it as soon as possible. Overly-optimistic deadlines, capacities, or price estimates can surely turn your project into a disaster. Setting incremental deadlines, milestones, and Skype calls will ensure that the project is moving forward. However, honest feedback cannot be underestimated.

Until that trust is built between you and the developers, you can only plan ahead, ask for regular progress reports and make sure that the incremental deadlines are being met. Honest software development companies will make sure that you have all the information. If you feel something is off, it may be time to make some changes.

Quality. What Does It Mean for IT Outsourcing?

Often touted as a given by outsourcing and nearshoring companies from Eastern Europe and beyond, quality should define the relationship between developer and partner/client.

Each client wants to be sure that the company they choose as their partner is legitimate and trustworthy. But how does one define quality? More importantly, how does one assess which firm has a better claim at being “the best software development company”? The answer is never straightforward, but there are general guidelines that can help when selecting a high qualitative outsourcing or nearshoring partner. Below, I discuss three sources of quality you should consider when seeking a partner: experience, reputation, and team.

Experience.

First, one should always look at the company’s experience. Qualitative past activities are usually an indicator of future success. Furthermore, the industry in which each outsourcing company specializes is important (e.g., a bank, a leasing company, or an insurance firm will feel most confident when they see financial industry experience on a company’s public profile).

Reputation.

Qualitative deliverables usually correlate with a high level of reputation, especially in the software development field. Good references, happy clients, and happy employees point to a decisively good reputation for the entire company. These are also an indicator of consistency. A Google search will quickly bring up any red flags regarding the company’s reputation.

Quality Team.

Another critical indicator of the quality provided by the company is the ranking of its team. These days, one can easily use LinkedIn to verify the level of expertise that the partner’s team possesses. You can weigh the potential value generated by the individual team members. Highly experienced and certified developers will always produce high quality software.

Of course there is no magic formula when selecting a new partner, but keeping in mind these general tips will help you separate quality from the general noise. A healthy dose of caution will never hurt when seeking your long-term partner in software development.

This article is part of a series.

Software Developers

Software Development Companies Should Deliver These 3 Things

There comes a time when executives and managers in various industries decide that they need a new software solution for their business. In most cases, this is followed by a decision to outsource this task to a specialized software development company (the reasons vary, but mostly revolve around financial and logistical efficiency). But how can a company with no experience with outsourcing services decide which developers to partner with? And more crucially, what differentiates these software development companies from one another (whether from their own country, Eastern Europe, or elsewhere)? The answer is never easy, but here are three general rules of thumb to keep in mind when seeking a trusted software development partner anywhere in the world.

  1. Expect quality. Make sure that the software development company has experience with the problem you are trying to solve. Check their respective fields of expertise, and always make sure that there are no red flags with their reputation.
  2. Expect good communication. Once the initial quality test has been conducted, make sure that your own team has a clear understanding of the problem that must be solved. Only when this blueprint is ready, reach out to the respective software development company. The communication must always be efficient, quick, and honest. Explain your problem and set clear expectations for the deliverables. If the company you contacted doesn’t get back to you within 24 hours, or promises the world without having the expertise, you would be best advised to seek elsewhere. A good firm will give you honest feedback on the proposed solution, and will advise you as necessary.
  3. Expect accountability. Once the project has begun, ensure that the software development company of your choice stays accountable. This primarily means a couple of things. (1) Progress reports should be regular and hold no surprises. (2) Milestones are always reached within the deadlines. (3) The project stays as close to the initial estimate as possible.

If we were forced to choose just one characteristic of a trustworthy software development company, it would be honesty. This is the secret ingredient in outsourced software development whether you are located in the United States, the EU, Eastern Europe, or elsewhere.

Next, we will be discussing what each of the three expectations means in more detail. Stay tuned!

Photo: http://www.niagaracollege.ca/