Modern software engineering 'theory' is all about iterative. Each new development seems to be more iterative than the last (contrast agile with the waterfall process, for example). It is widely acknowledged that iterative development is better than 'big bang' development.
Open source development (by which I mean the open source development 'process', as opposed to just developing software under an open source licence) is intrinsically iterative - we have a huge lump of code which we add to (or subtract from) one small (hopefully) patch at a time.
I believe that making our development of each piece (bug, issue, patch, project, whatever) iterative rather than 'big bang' is important, but difficult. One attribute of the engineers I admire at Mozilla is that they achieve this. I try, but often fail, to do so. I think it is important to be iterative because it makes it easier to catch bad design decisions earlier, makes estimation and progress assessment easier (and thus it is easier to keep interested parties happy), and, I think (and somewhat counter-intuitively), it actually results in better design in the long run. That last one is (in my fuzzy beginnings of a theory) because the developer needs a better understanding of the problem upfront to be able to identify the iterative steps required. And, as you take these steps, that understanding (and thus the solution, including earlier stages) improves.
I don't really know how to be more iterative (I'd love to hear ideas in the comments). But, I do know you have to be pretty aggressive (intellectually) in sticking to the iterative path - saving things up and landing in a big bang is often the path of least resistance.
Open source development (by which I mean the open source development 'process', as opposed to just developing software under an open source licence) is intrinsically iterative - we have a huge lump of code which we add to (or subtract from) one small (hopefully) patch at a time.
I believe that making our development of each piece (bug, issue, patch, project, whatever) iterative rather than 'big bang' is important, but difficult. One attribute of the engineers I admire at Mozilla is that they achieve this. I try, but often fail, to do so. I think it is important to be iterative because it makes it easier to catch bad design decisions earlier, makes estimation and progress assessment easier (and thus it is easier to keep interested parties happy), and, I think (and somewhat counter-intuitively), it actually results in better design in the long run. That last one is (in my fuzzy beginnings of a theory) because the developer needs a better understanding of the problem upfront to be able to identify the iterative steps required. And, as you take these steps, that understanding (and thus the solution, including earlier stages) improves.
I don't really know how to be more iterative (I'd love to hear ideas in the comments). But, I do know you have to be pretty aggressive (intellectually) in sticking to the iterative path - saving things up and landing in a big bang is often the path of least resistance.
9 comments:
Iterative approaches are easier by accepting ambiguity and uncertainty. Or being certain that you will evolve the right solution at the end when you are uncertain what that end result will specifically be. I have found over 35 years you do need some overall 'in order of dimension' end goal/idea in mind, but getting there does require very incremental steps followed by user testing to validate - thats how creativity works, good invention works and in fact is how evolution has worked. There will always be many ways a solution might work and look to solve a problem - the diversity in animal life proves this. Iterative development has very strong foundational scientific theory in many areas that has proven to work. Keep the habit and the dynamics of the discipline and anticipation of what you will discover becomes fun and rewarding.
I think it helps a lot to accept that not every step along the way will be perfect or even correct, but just making the step is an important and worthwhile thing. It's a lot easier to improve something that exists than to work from scratch. I'm pleased when I see code I've written completely replaced (usually), it's confirmation that I've helped engineer a better solution.
Iterative design is fractal, applicable from UI feature design to bug fixes in a patch queue. To better understand iterative development, our industry should study both successful and unsuccessful examples of iterative design. :)
In the context of Power BI development, the principles of iterative development are highly relevant and beneficial. Power BI is a powerful business intelligence tool that allows users to create interactive reports and dashboards from various data sources. Embracing an iterative approach in Power BI development can lead to more effective and efficient outcomes.
By adopting an iterative mindset, Power BI developers can build and refine their reports and dashboards gradually, continuously improving upon their initial designs.
"Text blast" is a dynamic and efficient communication tool that enables you to send a large number of text messages to multiple recipients simultaneously.
Discover captivating motion graphics videos that breathe life into your content.
Infinisys makes digital reality possible for your business concepts. From Apple for Android device mobile app, we offer a wide variety of services. Visit Now!
Step into a world of classic, comfortable, and stylish footwear with The Shoemakers & Company. From factory floor to boardroom, we've got you covered. formal shoes brands in Pakistann
Post a Comment