I was sitting in math class staring at the kid in front of me trying to finish his final with the remaining time.
I want to explore the issues I faced then and how our approach was influenced by how I thought about complexity. When we think about enhancing a software system, we can consider the curve that measures aggregate functionality against the aggregate cost required to achieve it.
My impression from reading journalists and analysts writing about software is that they believe you have a linear curve that generally looks like this: This reflects a curve where the incremental cost of new functionality is relatively consistent over time as the product grows more capable.
Could some breakthrough new technology or development strategy lift that curve up or improve its slope? Alternatively, the curve might look concave also possibly changed in slope or translated up by some new technical strategy.
This reflects a curve where new functionality gets easier to add over time, perhaps because you develop more and more infrastructure, expertise, process and tooling that makes adding new features more and more efficient.
People who have worked in software for a long time tend to believe the curve actually looks convex, more like this: This reflects a model where new functionality gets harder to add as a system gets more functional.
So which terry brooks writing advice columns reflects reality and how does it impact strategy? As you might expect, it depends, but that final dismal curve probably captures the reality for large systems best.
The FrontPage editor had key well-factored components like the lexical analyzer, HTML parser as well as core infrastructure built into the model and view that made it relatively straight-forward to extend the editor to support new HTML tags as the HTML standard evolved. The lexer and parser were driven from tables that described how classes of tags were handled so new tags simply required another entry in the table.
Typically there was a small amount of custom rendering work and then whatever custom editing support was needed — typically just a relatively simple dialog to edit any special tag properties.
The editor model automatically handled multi-level undo, redisplay, load and save. As we added support for certain features like parsing of server-side scripting languages like ASP, that support could be easily extended to also support other languages like PHP. It was clear that the powerful infrastructure we had built made adding certain types of new features much easier — resulting in something that looked like that concave curve above for many features.
The FrontPage editor also offered a good counter-example to this rosy picture. The editor supported three different views for an HTML page that was loaded in the editor: Preview view was especially useful for verifying layout and testing dynamic behavior in the browser.
Unfortunately, Preview view ended up being a gift that kept on giving. The complexity it introduced had nothing to do with any failure in the initial programming of the feature.
The challenges were that as we added new functionality, Preview required special consideration — additional specification — about how it should behave and interact with these new features. Frameset support an early HTML feature that has fallen into disuse was especially complex.
As we added new support for server-side scripting and especially more and more support for editing SharePoint-based webs, we continually ran into questions about how Preview should work and then additional programming effort to implement that behavior.
Eventually especially as SharePoint and dynamic site support became more of a product focus the team just removed the feature entirely. This was clearly a feature that turned that curve convex, making everything new harder to implement. Again, the problem was not because of poor design, the problem was that it interacted with many of the other features we were working on and required additional specification and additional code to implement that specification.
Word offered another interesting example. When I moved to lead the Word development team for the Office product cycle, we were working with PowerPoint on enhancing visual support for tables. PowerPoint had done early prototyping of features that leveraged improving graphics support, including gradients, transparency, shadows and reflection.
This early prototyping work led them to have a good grasp on how expensive these features would be to implement. They were pushing to get these features adopted consistently across the Office suite. Feature consistency helps users transfer learning between applications and improves visual and semantic consistency as content is copied and pasted between the applications.
Some of this cost was because the PowerPoint code architecture was better structured to add these types of visual features. How would the feature interact with spanning rows and spanning columns? How about running table headers? How should it show up in style sheets? How do you encode it for earlier versions of Word?
What about all the different clipboard and output formats that Word supports — how should these features appear there?
This view that costs scale with feature depth because of growth in essential complexity leads to a great emphasis in continuously improving and refactoring the code base.
If essential complexity growth is inevitable, you want to do everything you can to reduce ongoing accidental or unnecessary complexity.
Of course, the difference between accidental and essential complexity is not always so clear when you are embedded in the middle of the project and to some extent is determined by the future evolution of the product.
When we started the OneNote project first shipped in Officewe seriously considered whether to build it on top of the very rich Word editing surface.Jump to: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
Click here for a list of Inactive Reviewers. A. Melissa Joy Adams received a BFA in Related Arts from. A mobster in therapy, having problems with his mother," was how The Sopranos initially sparked, according to creator David Chase, though he was thinking about the premise for a .
🔥Citing and more! Add citations directly into your paper, Check for unintentional plagiarism and check for writing mistakes. From Winnaretta Singer to Nats Getty, you'll learn so much in this post and even meet another Mountbatten!
Jane Hyatt Yolen was born on February 11, at Beth Israel Medical Center in regardbouddhiste.com is the first child of Isabell Berlin Yolen, a psychiatric social worker who became a full-time mother and homemaker upon Yolen's birth, and Will Hyatt Yolen, a journalist who wrote columns at the time for New York newspapers.
News and Breaking News - Headlines Online including Latest News from Australia and the World. Read more News Headlines and Breaking News Stories at Herald Sun.