There is a quintessential view of the software engineer. Characterized by being task-oriented and role focused, the engineer of the past was likely to operate in isolation - a vital but discreet cog in the development of a product.
But as the world of technology evolves, the role of the software engineer has fundamentally changed, too. Technology is no longer used to perform a specific job - it underpins every part of our lives - in work and play. And with this new connected world come elevated consumer demands. We all expect more from our technology than ever before.
This is a world that software engineers had a pivotal role in creating. And their part in shaping its future is vital. As such, the engineer of today has a much bigger job to do and an increasing set of pressures.
Instead of operating in a silo, engineers need to be laser focused on delivering real value to prospects and customers. The new-world engineer is acutely aware that software development has become collaborative profession, with the customer firmly at its heart. Engineers are now adept at outward communications and business strategy - not just focused on their individual role in the product development machine. Gone are the days of siloed working.
Write ugly code
Engineers used to be excited about writing beautiful code. Trend-setters, like Jeff Atwood or Eric Evans offer convincing arguments to explain why pattern A is better than pattern B; seeing code as design in itself - and promoting a draconian approach to protocol. But it's more important to write ugly code that delights customers than beautiful code that only engineers will appreciate.
Coding principles based on design patterns simply fail to put the process of coding into a broader perspective. The developers who apply the principles of others to the letter, or who believe that there's only way of doing things properly, won't survive in this fast paced world - where the customer is king and user needs paramount.
Understanding business value
For engineers, it's time to take a step back - and think 'what do I actually do'? The answer isn't 'write programs', but instead, to 'use code to reach a much greater goal: create products which could change lives'.
Whether it's a product used internally by their organization, a commercial software-as-a-service product, or even a life-changing communications like tool Skype, it must fulfil a service for a user - and its functionality based on their need.
Engineers must understand the bigger picture: the value of that product and the unique needs of its users or potential users. To understand that is to understand their own business value - their role in its creation.
Customer-centric without being customer-facing
Being a customer-centric engineer is tough. And they face the added challenge of not working directly with the customers they serve. Many technology organizations work with Product Managers who own product roadmaps, and who are responsible for capturing the wants and needs of their customers. One step removed from this process, it's then up to the engineer to realize this vision - to keep the customers at the heart of what they do, without being directly involved in this capture process.
So, is beautiful code pointless?
Engineers can be the most creative and innovative people in the world. They create and they invent. They make a living by creating things that people use - and their role in the design and development of useful products is paramount.
And, while there is still clearly a kudos in writing beautiful code, it's the engineers with a laser focus on functionality who will win the day. And, even more broadly, it's those with commercial acumen - understanding how a product or service is developed, sold, marketed and even advertised - who makes for the most valuable employee to a business.