The Software Handyman
Programmers are often in the early stages of their careers. A programmer will be able to take an individual task and convert it into code. They may be self-taught, and they may not be especially concerned with planning or best-practices. As a result, the code that a programmer writes may be buggy or difficult to integrate with a large project. With mentoring, study, and experience, programmers can become invaluable members of their teams; but good programmers rarely stay at this level forever.
The Software Engineer
Weeks of coding can save you hours of planning
A Software Engineer is a programmer who has enough experience and expertise to understand the benefits of planning. Instead of jumping right into a project and pumping out code, they take time to understand your requirements, consider the correctness of their solution, and produce high-quality results. They will take a little longer to get started than a Programmer, but the quality difference is worth the wait.
The Software Architect
If you are failing to plan, then you are planning to fail
Having a Software Architect on staff means that you have someone who cares about the long-term success of your project. A Software Architect is able to examine your project's requirements and create a plan to turn your vision into a reality. An Architect may do this with written documents, diagrams, and charts; and is responsible for making sure that the development team is set-up for success. A good Software Architect helps prevent mismatches between Software Engineers, resulting in a more coherent and maintainable project. Their code will work because the project was designed to work.