Register
  Thursday, August 28, 2008  
   
Thanks for Visiting!
Minimize

Thanks for visiting the AMS Carrier Community Dashboard.  At the Dashboard, you'll get an overview of the various product portals that are part of the AMS Carrier Community.  Currently, there are portals for Phoenix and PremiumBill with more to follow soon.

As a visitor, you can see this entire site, but in order to post to forums or download files, you need to log in to your account.  If you don't already have an account, click here to create one.  It's fast and free!

Latest Community News
Minimize
Training for Developers on Phoenix Web Services and XSLT Data Mapping - Monday, July 14, 2008

Come to PUG early and take advantage of Developer focused courses being taught in our Portland, ME office.

read more ...

AMS PremiumBill Release 2.1.3 Is Now Available - Thursday, July 03, 2008

This release contains fixes to Payments and Recievables.

read more ...

AMS PremiumBill Release 2.1.2 Is Now Available - Monday, June 02, 2008
This release contains a new Smarter Scripting Wizard and many fixes.
read more ...

AMS Portland Webinar Video - Tuesday, May 20, 2008

Video of the AMS Portland Webinar from 4/24/08 reviewing Automated Out of Sequence and Web Services from the Phoenix 8.0 release.

read more ...

AMS Phoenix 9.0 Planning is Under Way - Monday, March 24, 2008

We need your input to prioritize items for this release.  Please complete the survey to help us meet your business needs.

read more ...

AMS Phoenix 8.0 Is Now Available - Wednesday, March 19, 2008

Milestone Release Adds Automated Out-of-Sequence Endorsements & XML Web Services Built on .NET Technology

read more ...

AMS PremiumBill 2.1 release - Tuesday March 4th - Tuesday, March 04, 2008

PremiumBill 2.1 has new features for payment import and support for EFT.

read more ...

AMS Phoenix 7.02.08 Is Now Available - Thursday, February 14, 2008

Version 7.02.08 has fixes for Billing and Month End.

read more ...

AMS Phoenix 7.03.04 Is Now Available - Tuesday, February 05, 2008

Version 7.03.04 has fixes for DocPrint, Archive & Retrieval, CQH/Home Value, Policy Manager, Policy Entry and Month End.

read more ...
Syndicate  
Related Links
Minimize
Latest Blog Postings
Minimize
Jun 22

Written by: David Moran
6/22/2008 5:07 PM

 

Keeping with the theme of my prior blogs, we're now to the actual brass tacks of development: coding. When I said that I would cover coding at the close of my last blog, I must confess that it was a poor choice of words on my part. I'm keeping at a higher level for now, painting a picture of software development over a series of blogs, so the real questions are:

What does a software developer do? And more to the point, just what is a software developer, anyway?

In his book Professional Software Development, Steve McConnell quotes someone he interviewed for a development position who answered the question “What is a software developer?” as follows: “During software design, I’m an architect. When I’m designing the user interface, I’m an artist. During construction, I’m a craftsman. And during unit testing, I’m one mean son of a bitch!” Truer words could not be spoken!

What does it take to be a developer in today’s world? Is this person that Steve McConnell quoted correct?

I think so. So let's take a look at a developer as architect, artist, craftsman, and one mean SOB!

Architect and Artist

In the software world, there is a job title referred to as “software architect.” What is a software architect, and what does a software architect do?

A software architect focuses on developing a sound technical framework that other developers can work from. They focus on the components required and the connection points (interfaces) needed in order for a system to function; they don’t get into the nitty-gritty details of each and every component, but instead focus on the larger picture.

A good software architect is typically someone who can function as both a technologist and consultant. This dual role is necessary because a software architect will be involved in a variety of people: customers, management, developers, and project managers, to name a few. This means that a software architect must have solid technical and communication skills.

While the software architect tends to design in the large, what design work do developers perform? They focus on the design of component internals and algorithms, data structures, and the like. Good software design organizes the internals of the components and data structures so that they will all work in harmony in accordance with the high-level architecture, without duplication of code to perform similar functions.

The other essential aspect of design is the user interface, which is more artist-like than architect. Why? Crafting a good user interface takes time and considerable thought and effort. Many software companies do in fact employ “artsy-types” to help create an attractive user interface.

For those that don’t, there is usually someone geared towards keeping abreast of research dedicated to the "user experience,” focusing on crafting a consistent, intuitive user interface that supports the business goals that the users want to achieve with the software.

In my previous blog I mentioned something called “paper prototyping.” The process of laying out screens, determining what controls are on the screen, how the user will “flow” through each individual screen (as well as a series of screens) is not a paint-by-numbers exercise. It is like being an artist where you are striving to create an aesthetically pleasing, efficient and effective, ultimately delightful experience. It takes time, effort, and thought. Any many times, you ball up your paper and try again!

In my opinion, during design a software developer is an architect and an artist.

Craftsman

Now that we are at the actual phase where coding takes place, is a developer a craftsman?

Developers must take all the inputs – business and technical requirements, the design work – and write code to pull all of this together in a meaningful way. In doing so, they must satisfy multiple audiences: other developers and the business users. The code that they write must be reliable and maintainable; meaning that they or someone else should be able to look at the code at some point in the future, understand it, and update it. And of course, the business users must be satisfied that they can run their business on the software.

Is there a prescribed method for writing software that can guarantee success? Writing reliable, usable, maintainable code requires that a developer to draw upon prior experience, guidance from others, tools and libraries, ultimately combining these into a concise, logical expression. In reality, there are no guarantees, but there are ways to reduce and manage risk.

Developers write software in specific programming languages. It is relatively simple to determine that a developer who focuses on one language versus many languages will have more depth and expertise in that language. As developers become proficient in the constructs and idiosyncrasies of a particular language, their code becomes clearer and more organized, leveraging the capabilities and recognizing any limitations of the language.

Not all that long ago, a developer had to know much more about the underlying operating system (Windows®), and had to write a lot more “framework” code in the construction of a Windows® application. Today, a lot of this “plumbing” code is handled through libraries; and while there is an investment in time required to understand what is available to leverage in these libraries, the benefit is that a developer is leveraged already written and tested code – increasing the reliability of the application.

These days, languages include extensive libraries that are part of the product. At AMS Services in Portland, Maine, we use Microsoft .NET, which has a rich set of class libraries to leverage. The .NET framework itself is a platform, with multiple languages supported. We make use of both VB.NET and C# in the Portland office.

Another mechanism used to reduce risk is through the use of something known as “patterns.” As those in the software industry encounters the same type of problem over and over again, the prescribed means for handling that problem is captured in a general way, providing guidance in terms of accepted rules and approaches for handling that problem. Patterns are a generic, “best practices” recommendation, but not implemented in specific code. It is up to the developer to take that best practice and turn it into working code. Of course, this means that developers must be continually updating their knowledge about available patterns.

Over the years, I’ve personally seen significant differences in how developers approach and implement logic to solve business problems. Despite the guidance and libraries available, at the end of the day, it is up to the developer to weave everything together into a concise (hopefully!) expression of logic that reliably supports the business need and is maintainable over time.

This is where developers are truly like craftsman. I’ve had ample opportunity to step through code that other developers have written and I’ve come away either very impressed at times, while at other times I’ve been left scratching my head.

Some developers clearly “throw code” at the problem until things work – and make a mess as a result, while others simply are unable to express their logic are clearly as others. It’s like writing; some people can put words down on paper in ways that are more readable and understandable than others. And on occasion – not often enough – you come across solid code that is expressed so clearly and elegantly it is like looking at a masterpiece.

For my money, during software construction, developers are in fact craftsman.

Next time, as part two of this blog, I’ll discuss testing as it relates to a developer. (And being a mean SOB!)

Copyright © 2008 by David Moran

Tags:
Latest Articles
Minimize
ISO LOB Templates – See how easily you can build a line of business! by MaryJo McDonough

Planning to expand into a new line of business?

We can help! The Professional Services department has built ISO LOB templates that will help you quickly and easily expand your lines of business.
 

One Small Project… One Large Reduction in Time and Effort by David Moran

A Success Story article featuring the Rate Modeling Tool developed for FCCI, leveraging Phoenix Web Services.


Message in a Bottle by Holly Priest

A tall dark stranger has news for you...


Agile, Customers, and Getting Things Right… by Mike Levine

How ‘bout a story? It’s about bears…


Automated Out-of-Sequence Processing by

Learn more about the new Automated Out-of-Sequence Processing that was added to Phoenix 8.0.


PremiumBill Architecture by David Moran

A brief article describing PremiumBill architecture and the key factors that influenced its design.


Phoenix

PremiumBill

      © 2008 Vertafore, Inc., DBA AMS Services  Terms Of Use  Privacy Statement