How to Estimate a Software Development Project

Through the years several customers have asked us the following question:

“How did you estimate our software development project?”

Following an explanation on how we estimate custom software development projects at Wovenware.

At Wovenware we take a team approach when estimating a software development project. This means that several resources with different experiences and backgrounds are involved in our project evaluation process. These resources are usually:

  • Someone from the Executive Team
  • One or more Senior Software Developers and/or Senior Software Architects
  • A Project Manager

The first step on any project estimate process is to understand the software requirements needs of the specific software development project. The Project Estimate Team members are selected based on the specifics of the software requirements. Depending on the complexity of the project, the Project Estimate Team may meet in person with the customer to discuss the project requirements or a member of the team that has met with the customer explains to the team the specific project requirements.

Once all members of the Project Estimate Team understand the requirements, the team breaks into an individual estimate exercise. During the individual estimate exercise each team member will perform a separate project estimate using his or her favorite appraisal methodology. We always encourage the Project Estimate Team members to perform the estimates using several of the appraisal methodologies.

Some of the appraisal methodologies we use are:

  1. Duplicate Methodology – If a similar project has been developed at Wovenware we use the similar project actual project plan as a base for the new project estimate. We then modify the base plan with the specific tasks involved in the software development we are appraising.
  2. Grouping Methodology – We group all functionality in sets of similar functions. That is, if we identify 10 screens in the application we may group the functionality as: documentation, meetings, 4 easy screens, 4 normal screens, 2 difficult screens, testing, deployment, and project management. Once we have the groups we assign a number of development hours to the group. That is, easy screens will take 2 days, testing will take 4 days, etc. Then we multiply the number of members in the group by the number of estimated development hours. For example, 4 easy screens will take 8 days (4 *2 = 8). Finally, we add all the development hours to arrive at our project estimate.
  3. Detail Methodology – This is the methodology that usually takes the most time to complete, as a detail project plan is developed to estimate the project. Each project task is identified, individually estimated, and a detail project plan is prepared.

After all team members complete their individual estimate exercises a group meeting is held. Every team member presents his or her estimate and an estimate table is created. The estimate table contains the estimates of all team members. Usually the variance between the individual estimates is trivial and an estimate range can be presented to the customer. That is, let the customer know that the software development project will take between A and B.

If the variance between the individual estimates is significant then the Project Estimate Team performs a group estimate using a Detail Methodology. The resulting estimate is then presented to the customer.

It is not easy to estimate a software development project. Experience is the most important skill when performing a custom software development estimate. That is why only people with significant experience in software development projects can accurately estimate a software development project.

If you are a customer of a software development project always ask how your project was estimated and the experience of the people that estimated your project. The success of your project may depend on this.

Have additional software development appraisal methodologies? Let us know in the comments section.

Is there “unsexy” software?

In the past I have been ask why Wovenware develops “unsexy” software. What do you mean by “unsexy” software, I ask. Well, enterprise software, they reply. Up to that point I had never thought of enterprise software development as “unsexy” or for that matter, “sexy”.

A quick Google search confirmed that apparently enterprise software development is unsexy. So then, if enterprise software development is unsexy, what is sexy software? Could it be mobile consumer applications, games, or social media software? In my opinion all software is sexy, be it a consumer mobile application, a game or an enterprise electronic transaction management system. All software developments present their own challenges and design opportunities. There is room to invent and innovate in all software developments.

If we assume all software developments are sexy, then what is unsexy software. For me unsexy software is the software that gets developed and then is never used. For a software developer there is no bigger pride than seeing the software one has designed and developed being used. Likewise, there is no worst disappointment than seeing the software one has developed wasted and never used.

I spent part of the beginning of my career working for what will remain a nameless startup that was building a kiosk and an electronic payment gateway backend to bring electronic payments to emerging markets. (This was more or less at the same time PayPal was founded.) I spent two years involved in the development of the payment gateway backend and an ad delivery and management application. It was challenging and innovative work, but my work was never fully used as the company ran out of funding before we were able to effectively commercialize the solution. Those two years were spent developing unsexy software. Software that never met its purpose. Time, ideas, designs … wasted.

In part this is why we do not develop unsexy software at Wovenware. We develop software that will be used. That will bring value to its users. There is no greater feeling as a software developer than knowing that your software touches the lives of you parents, friends, neighbors … strangers. For us sexy software is what makes our company what it is, there is no space for unsexy software because our goal is always to bring value to our customer through our software solutions.

We are currently working on an application that will have a global deployment … software development does not get more sexy than this…

How to Manage Project Personalities

To be an excellent project manager you need to have a blend of what the, methodology suggests, experience and character. Through the year I’ve worked with different types of personalities in a single project. Every person on a project has a role, a unique talent, not everyone has the same knowledge or leadership.

But how can a Project Manager (PM) engage people in the project (stakeholder, developer, analyst, tester)… using the “World Peace” phrase?  Sending emails containing a long list of tasks to be performed? Complaining about the output? Pointing people about whose fault it is? Lecturing people working on the project?  These are options that some project managers might use or may consider good options; for me they are all wrong. That does not mean that sometimes they are the only option, but in most cases there is always a right way to do things and one that can benefit every side.

Instead of discussing more about these options and their repercussions, I’m going to address my focus on Personality. Engage people through their personality, learn what they like and dislike, their character and how they see themselves in the project. If we are aware of the kind of person we are working with, then we can prepare, and plan ahead. These are some of my rules in the workplace:

  • How to Manage Software Project PersonalitiesCOMMUNICATEDon’t wait hours to report an issue, if something does not look right talk to the project manager or a co-worker… For me if I don’t have a solution or an idea of what to do in 30 minutes, I know that I have to talk to someone.
  •  Get to KNOW your team, mean it and do it! As long as you know who you are working with everything will run smoothly, this helps emphasizes team work.
  • SEEK the good in people, it could be risky but most time, it is worth it.
  •  Everyone can BE A LEADER in their job, allow them. We are working in a very dynamic environment we need more good leaders.
  •  Make them LAUGH, We work with so much stress that we forget to calm down, a joke or two are not going to kill anyone.

 

Tips on How to Manage Project Personalities

  • RESPECT different opinions…LISTEN. Everyone works differently and sees things in different ways, it is very important for every project manager to remember this.
  •  Less talk more RESULTS. Do more. Don’t promise things you can’t accomplish, keep it low key so at the end, your work speaks for you.
  •  Always speak the TRUTH. Honesty is a great quality to have, don’t waste it.
  •  Anybody in a project can TEACH something new, LEARN IT!

 

Projects are challenging, don’t let personalities became one of them. If you work with a person who is difficult to deal with, the application of these rules can help solve the problem. But if this persists, the best option is to try to understand what might be bothering this person. Working with people that differ in personalities can be hard but you should visualize this as a challenge. Project success is the sum of all the effort of the people involved in the project and that includes the project manager’s effort in working with different personalities between coworkers.

Have additional project management tips? Share it with us in the comments section.

Want to be part of a unique experience? Join us and help us make the difference!

Wovenware is now hiring! If you have experience in business intelligence, and software development let us know. Don’t just sit there and wait for an opportunity to come. Go out and get it, this is your chance. Contact us and let us know why you want to work with us, we are growing quickly and we need people who are passionate, fun and most important, committed to satisfying the needs of our clients. We work in a different way, we treat our clients like partners and help them every step of the way so they can accomplish their goals. Accept the challenge and dare to be different!

Wovenware is now hiring people for our Puerto Rico office in the areas of:

  • Software Development
  • Software Architect
  • Business Intelligence Development
  • Software Engineering

CONTACT US

Electronic Transaction Governance: Implementing Risk Management

This is the fifth and final blog posts of the series of how to implement Electronic Transaction Governance in your custom software interfaces. We will also discuss how Wovenware implements Electronic Transaction Governance in the Wovenware Integrator. The Wovenware Integrator is an adaptable software platform that provides visibility, accountability, and governance to all electronic transaction processes. Please refer to the What is Electronic Transaction Governance blog post for a detailed explanation of the term.

electronic transaction governance risk management

In this blog post we will discuss the area of Risk Management. For the purpose of our discussion risk is anything that can affect the processing outcome of any electronic transaction message. The Risk Management area of Electronic Transaction Governance is the process of identifying and mitigating any risk that might affect our electronic transaction handling processes. Proper Risk Management helps in the identification of unforeseen vulnerabilities and allows for the mitigation of these threats.

An electronic message, regardless of its format ASC X12 EDI, NIEM, HL7, etc., follows a process flow that usually depends on external systems. The availability and accuracy of these external systems is never certain. Thus, we need to carefully identify these possible failure points and mitigate them accordingly.

We start by creating a Risk Register. A Risk Register is a document that includes all the possible risks we can identify in our electronic transaction handling processes. The Risk Register should include:

  1. External System – This is the external system where we have identified vulnerability. (i.e. Relational Database System, FTP Server, etc.)
  2. Vulnerability – This is the risk we have identified. (i.e. Loss of connection to the Relational Database System, etc.)
  3. Risk Classification – All risks must be classified High, Medium, or Low depending on the impact it may cause.
  4. Mitigation Control – How are we going to mitigate the identified risk? (i.e. We will verify the Relational Database System availability before trying to insert a new record. If the system is unavailable we will wait 30 seconds and retry. We will retry 3 times. If after 3 times we are unable to connect we will send an email to the Administrator, log an exception to the System Log, and exit current processing.)

Once we have created the Risk Register, then we need to implement the mitigation controls. Risk identification and handling must be a continuous procedure. It is recommended that the Risk Register be updated at set time intervals or when new risks are identified. Whenever new risks are identified, mitigating controls should be promptly developed.

The Wovenware Integrator mitigates risks through the configuration of its Application Services. Application Services are customizable software processes, based on a Software Pattern developed by Wovenware Engineers, which can execute following a custom defined business workflow. Wovenware has developed a Standard Risk Register that is reexamined and updated with each new electronic transaction message we implement. Some of the items included in our Standard Risk Register are:

  • Connection Loss to External System
  • Unavailable Relational Database System
  • Read File Errors

All the risks identified in the Standard Risk Register are mitigated by default on the Application Services implementation. By developing the mitigation controls on the Application Services implementation we assure that every electronic transaction message handling process in the Wovenware Integrator controls the risk properly.

Implemented Electronic Transaction Governance in your custom software interfaces? Let us know how it went.

Make sure to subscribe to our mailing list (just on the right) to get notified when our blog posts go out.

Why creating a Buyer’s Persona is so important for your business?

In previous posts we have talk about the importance of creating exceptional content for your blog so your potential customers and the existing ones can learn about your company and what you do. But we might say that there’s no content without purpose, you should aim to write useful information for every type of customer; that’s why we need to create Buyer’s Persona.

What?

You might be asking yourself what exactly is a buyer persona, well according to the Buyer Persona Institute “buyer personas are examples of real buyers who influence or make decisions about the products, services or solutions you market. They are a toll that builds confidence in strategies to persuade buyers to choose you rather than your competitor or the status quo.” Meaning what? This personas are examples of each one of us, is just that they are models that represent the wants and needs of every consumer and help companies understand better what people want.

Why?

Is important we have a clear image of what these personas are because if not we can create a non-existent person with misinterpreted needs and wants. Buyer personas are created as tools to help the company build a strategy in order to convince clients by gaining their confidence with relatable examples in a daily basis. You might think building this persona is an easy task but is not, you can’t create the same persona for all your segments. A buyer persona can have specifications about what motivates them, their desires, wants, needs, their behavior and reaction to certain things; buyer’s persona are meant to give an insight to your clients

How?

Creating a buyer persona takes research and a lot of analysis; this would give your company a better idea of who is your target market and audience. You need to collect as much data as possible so you can have all the information that might be relevant for your segment, this will help people associate better. They don’t limit to profiling, buyer personas go way deeper and is better if you create more than one persona. This method will help you understand well your target market and your clients will have more than one person to relate with. Also you can create keywords and content subjects specifically for each of them. Companies that aim to be successful should do more than observe and study their segments; they should conduct interviews and polls to know what are the topics people are interested, any patterns between people so in this way you can start segmenting in a proper way.

When?

There’s no exact time in which you should create a buyer persona, in fact you must have this personas created way before you start your marketing plan so you can incorporate them strategically to the plan. You must define your personas and your segments so your company can be ready for anything.  You never know when you could find new clients or where. It’s important that you include these personas in every marketing strategy you have, so yes you must create them immediately.

 

In conclusion we can say that creating buyer personas is essential for your company because it helps you understand what is that your customer wants. When you create these examples you are giving people insights on your product but from their perspective. Create a specific buyer persona for each one of those segments, try to make more than one persona and remember that at the end of the day you are still competing and your buyer personas are just another strategy to win over your competition. Remember that in order to be successful you must learn all about your clients so you can offer them what they need. Buyer personas are useful tools to understand your customers and establish a long lasting relationship with them.