Thursday, January 22, 2015

Software building concepts

"Building software products is a creative process. Getting computers to do something useful is complicated. Before an engineer writes a line of code, she has many things to consider including: choice of language, libraries to reuse, interfaces to define, interactions with existing subsystems, and overall system performance. She should also consider refactoring existing code if it results in a more elegant solution.
Developing software is more than just cranking out code. Thoughtfulness in technical design pays dividends for the lifespan of the software. Defining an extensible architecture provides a blueprint for future iterations of the code and how it will perform at scale. But there’s a hazard in overthinking design to the point of inaction; the best engineers need to be flexible and creative to avoid “analysis-paralysis” .
Software creation is also multidisciplinary. It involves the work of Product Managers, UI/UX Designers, Software Developers, Quality Engineers, and Project Managers. In this regard, software development is similar to a construction project — think of bridges or buildings — but in the digital realm. Everyone involved needs a shared vision on the final outcome and how to achieve it. Team members should propose different ideas (and investigate multiple approaches) before deciding on a final construction plan.
During the software design process, an engineer might code a proof-of-concept to determine the feasibility of an approach. This is similar to an architect’s drafts prior to a final blueprint, or an artist’s sketches before laying paint to canvas."
source: linkedin article

No comments:

Post a Comment