| I was recently tasked to architect and develop a solution, with limited time and human resources. I was only given 3 months although I speculate the project will need minimum 6 months. I never believe a good quality software can be deployed in such short period of time. I argued to no avail. I have 3 fairly experienced developers at my disposal. Despite this, I proceeded designing the architecture. We need to develop an app server, a mobile client and a desktop client. I alone handled the architecture design, research, development, and deployment. We survived, unpleasantly. I believe I have then suffer with some level of depression. As retrospective, I: * failed at properly documenting the architecture * failed at properly setting up the dev env so that the other developers can run their instances of the solution locally * dwelled too much time to achieve the above point * dwelled too much time to automate things, especially at trying to automate dev, staging, production setup * failed to look at minor details (I need help with this, I'm a big picture guy, never the details) * should have sticked to SDK provided by third party, instead I chose to go with something totally new to me just because the SDK is only available with COM Interop and I do not have any Windows machine with me. I believe I have the knowledge, and not afraid of looking for the knowledge and the "proper" ways of things should be done. And maybe trying too hard. Back to the topic, what makes a good solution architect, how can I improve myself? |
Things in my experience that increase the success of a project.
Deliver small bits very frequently and demo and ask the stakeholders for feedback. If i was unsure about delivering all the features in 3 months, I would tell them that. However I would try get the real priorities of their needs and focus on them first. At the end 3 months you should be able to deliver something that provides something valuable but not everything.
Make sure you build quality in as your building.
They should judge progress of the project by what your giving and showing them, not a timeline and a status report.
Upfront documentation isn't necessarily the best way of getting knowledge accross(Although it should be used). The best is collabarating, pair programming with your team etc
I don't know what your situation was, but these days setting up ci/cd pipeline to a staging/prod slot for a small project is fairly quick...