Essay 6 Diversification Over Specialization

In software, we can be the designer, the programmer, and the database administrator. We can be well versed in PHP, Java, .NET, C++, Python, and SQL while knowing our way around HTML, CSS, JavaScript, and Flash. But very few of us cross the line from user interface to backend comfortably.

In traditional architecture, it’s not practical for the electrician to also be the cement pourer or for the bricklayer to also be the pipe fitter. They are specialties in and of themselves. They also occur in physically different places. The situation requires a group of specialized doers honing each craft separately for intellectual and practical reasons.

But transporting that same philosophy to our industry doesn’t hold its weight. The tool sets we work within live on the screen right in front of us. If we’re currently working in SQL, we don’t have to go somewhere else to write HTML or to create an image in Photoshop. We simply switch programs on our computers. There is no physical barrier between any of our programming disciplines.

In addition, many software concepts transcend languages and, oftentimes, disciplines. Model-View-Controller (MVC) is an application architecture adopted in many UI platform applications, such as Adobe Flex’s Cairngorm platform, along with many server-side development frameworks, such as .NET. Programming languages today have an extraordinary amount of overlap. Design patterns and refactoring are ideas that live everywhere in the programming landscape.

At my company, most of our development team knows multiple programming languages and splits time between the frontend and backend. It helps us even out everyone’s workload because we’re all adept at working on all layers of an application.

A .NET developer, an HTML standards whiz kid, and a data modeling expert can all live within the same person. We may have an expertise and interest in one or the other, but there’s no reason we can’t be great at many disciplines.

images/andertoons_6254.jpg

Why can’t great programmers also be great user interface designers? All too often I hear a programmer instantly denounce even the possibility that she could also be a great visual designer. Conceptually, designing user interfaces is not that far off the map from designing a sound software architecture. Great, functional UIs are about clear affordances, organization, scalability, and intention. They have many of the same qualities we cherish in software design.

The reverse is also true. Too few talented user interface designers consider themselves capable of becoming great programmers. Perhaps programmers look at user interface design as making things “pretty” and designers look at programming as writing a lot of “technical stuff.” Meanwhile, they have so much more in common than that.

In the end, the goals of software design from both the interface level and the engine are the same. There is no reason why we can’t be great at multiple disciplines.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset