System and Software Design Doesn't Need To Be Difficult
For decades, I have worked with many Architects whom are not "Developers". Many say they started as a Developer, yet this doesn't seem to be reflected in their Solution or Application Architecture presented in projects. When I ask why, the answers vary from, "I am out of date with current technologies", to " I'll leave that to the Application Architect or Developers". My response is, "That is too late!".
Often at the start of the effort (e.g., Project), necessary resources are not available. This could be that resources are tide up in other delivery, to the budget doesn't allow for IT. My response to this reasoning is, "You can pay now, or pay considerably more later!".
In the beginning of any effort, and at a minimum, there should be a primary facilitator (e.g., Project Manager), the primary client stakeholder (e.g., Sponsor funding the effort), a primary product or company knowledge source (where knowledge is methods, procedures, basic rules, etc.), and a "Solution" Architect.
- Facilitator - owns the schedule and the budget
- Client Stakeholder - owns the purse-strings and liaison to leadership
- Knowledge Source - Understands the Methods & Procedures (M&P), including Business Rules and Regulations (high-level)
- Architect - starting with focus on the Solution
Notice I said "Architect" and not "Engineer"! To understand the difference, read my post "Architect vs Engineer". An architect begins by meeting with the client, understanding their needs, goals, and ideas. Ideally, architects provide the following:
- High level Design and overall System Architecture
- High level of abstraction
- Strategic Decisions about System architecture
- While thinking of Code, focus on design, architecture, and ensuring software aligns with business goals and requirements
- Responsibility of the entire system architecture
- Collaboration with various stakeholders to ensure alignment and convey vision
- Long Term Goals and evolution of software over time
- Established coding standards and best practices for development teams
The "Requirements" are the "What" or "Problem" to be solved, and the Solution Architect addresses "Who" will solve the "What" or "Problem". The "Design" is "How" the what/problem "Will" be solved. Thus, it is best to provide a high-level design (at the least) when solving problems. Otherwise, how are we validating that the client's needs will be met or achieved?
In our channel, UML Operator, we provide visual content to accomplish the objectives of Model-Driven Anything.
Comments
Post a Comment