The Technical Architect's Manifesto
This manifesto is about designing excellence, it's not about just working on a project for the sake of it, but actually taking pride in your work and doing something meaningful. Being the person responsible for the design of a website is no small task. The hiring company is looking at you, as an industry expert, to help their company survive and prosper in a volatile market.
I've worked with a lot of developers over the years and I think this simple principle really differentiates the good people from the average. As an architect, your job is not to simply turn up and sit in front of a screen 9-5 everyday; it is to talk to stake holders, understand why the website's being made and how it makes the company money.
If a company is not making money, then no matter how brilliant your solution might be, it might never even reach the market. Understandng the requirements and delivering a system that makes it easier to purchase things, easier to add content in the backend, something more scalable is all part of it, but to be a good architect isn't just about delivering a technically well designed and scalable solution, its desigining a system that meets the business requirements and helps them generate revenue
I'm as guilty as everyone else when it comes to understanding this. You design this amazing flexible solution that will create a really flexible and scalable part of a system. Then someone asks you, do we need this? What is the business benefit of implementing this and will we get a good return of investment for those extra days of development?
None of us can predict the future but the system you design today will grow and change. None of us have a magic ball, you think you may need feature x and y in the future as it could save time later down the line. If feature x or y is never used then you're wasting development days just to satisfy your ego. Sometimes it's all too easy to get into a pattern where you come up with a design you're quite proud of because it's clever, but that cleverness only satisfies your ego rather than benefits the business.
I can easily hold my hands-up and say I've done this. I remember one project for a global company that had a product search powered by a csv file. When someone updated the file the website broke, so I ended up designing this fully flexible scalable system that generated its own database tables and when I proudly presented it back to the client, they hated it. Even though my solution was technically much better and more reliable than the current solution, the change in process would have effected 8 or 9 different departments and would have added too much time to the businesses. The issue of the search breaking for 5-10 minutes once in a while wasn't something they cared about.
If you have been asked to architect a website, this is your challenge, you need to find the balance between amazing technical feats and coming up with something that works for the business
No one can predict the future, requirements change, plans change, things change. No one can design something that caters for every potential future possibility. It's much better to solve your immediate problems rather than potential future issues.
Having said that, you still need to be mindful of change. If you're reading this and your definition of architecture is to simply go with the easy quick win, you won't make much of a career and definitely no impact.
Sadly life and design isn't easy. Comprise will be required. Be fluid and flexible. I've been working on large scale projects for over 10 years and the one thing I've learnt is compromise. You may know a lot but that doesn't mean it will make the company money. You can do one thing that makes the client or account manager happy but pisses off the development team. You can let a developer go off and create some technically impressive solution for no business returns that eats up your resource and timelines
If you are new to the game this might all seem like a nightmare. There are times when you lose your patience or inner calm. There's been more than one project where I've ended up down the pub, moaning about this isn't right or this could be better, but we do it because we care. If you don't put any passion into your design you're doing the wrong job.. simple.
That's why I love this job, doing something safe and boring is easy and as a person you won't grow; being an architect means you need to take responsibility for the situation. You need to take action, not wait to be told.. You are now an influencer; this thought might be daunting at first but when you get used to the role, you get used to being challenged, to coming up with the ideas no one else wants to. You are the person to make or break a project, it's fun, it makes life exciting so lets get on with it!!!
As an architect you need to be able to take ownership. It's on your shoulders to make the project, it's sink or swim. It's too easy or there's too much pressure for you to agree to do the impossible, to simply say yes to each and every request... don't.
What you need to realise is it's your responsibility to find the win/win scenario. Don't be scared to say no. I do it all the time, I don't always win or people don't always agree with my opinion but that's life, don't be bitter. Being an architect means you need to challenge the norm and not just go with the flow.
To achieve something great you need to make a stand at times. Don't just get into this industry just for a pay check, to get to this level it means you care, this is good. It might get you in trouble, you might have minor spats from time to time but at the end of the day the business benefits and your ability to create world class solutions will continue to grow