Sadek Drobi’s Blog

June 11, 2008

Agile Architecture Is Not Fragile Architecture

Filed under: Uncategorized, Agile Programming, Conferences, Methodologies — Sadache @ 10:07 pm

http://www.infoq.com/presentations/Agile-Architecture-Is-Not-Fragile-Architecture-James-Coplien-Kevlin-Henney

Making the tough decisions early make the other decisions easier
To do agile you should be standing on a firm foundation
Stability != Static

YAGNI?  not extremely!
Fainting Ignorance :Don’t Play dumb! If you know some stuff celebrate that you know it and put a peg in the ground.
It is ok to know stuff, it is alright.

May 26, 2008

Obsev :: Time Machine: Any investors? Predicting the future!

Filed under: Uncategorized — Sadache @ 10:31 pm

 DSC_0338

One of my childhood dreams was to have a time machine. A machine that can show me what will happen in the future. Thinking about it, this can be a huge opportunity of making money and fame. Bringing all the future inventions and innovations to the actuality will no doubt make you a hero.

Actually I won’t need a lot of years ahead, just enough that allows me to introduce a new concept or a new idea to a world that didn’t get to it yet. Of course there is credits and merits, but that idea did anyway have its value in its time (in the future), all what I will be doing is giving it yes more value and that is well rewarding for the idea itself.

No, I am not about science fiction here. We can almost predict the future without the need of a time machine. If we have a look at technology adoption, we can clearly see that, at least in IT, Europe is slightly behind the US. However there are countries (like my own) with a longer delay of adoption.In my opinion this is a huge opportunity of investment especially when we see with a simple observation how the technology adoption follows almost exactly the same steps, maybe with a faster rhythm, but with an considerable delay despite the wide spread of Internet and cheap communication. I guess the reason to that is that adoption should pass by the same stages of try and failure until it moves to the next level, rediscovering the wheel.

A company in the style of Y-Combinator that helps startups do shortcuts in these countries can be a good investment. Especially knowing that, in order to be integrated in the word’s economy, information should flow satisfying existing standard from the… future!

So, any investors?

May 23, 2008

Debate and more Insights on Dynamic vs. Static Languages

Filed under: Uncategorized — Sadache @ 11:57 pm

The transcript of Steve Yegge’s presentation on dynamic languages in Stanford University, which he posted on his blog, triggered many reactions in the blog sphere. Cedric Beust, Ted Neward, Ola Beni and Greg Young provided their viewpoints and arguments on different tradeoffs involved in dynamic vs. static debate.

(more…)

April 2, 2008

Are Custom Chips An Answer to the Multicore Crisis?

Filed under: Uncategorized — Sadache @ 11:00 pm

Adapting to multicore paradigm is one of the emerging challenges in the software industry. What if the solution lays at the hardware level?  Bob Warfield suggests that creation of chips optimized for running specific virtual machines could reduce the gap between the potential performance of processors and the actual capacity of software to take advantage from it.

(more…)

March 10, 2008

My schedule for QCon London 2008

Filed under: Uncategorized — Sadache @ 10:51 pm

Here goes my schedule for Qcon London 2008 
See you there :) (more…)

January 25, 2008

Prefer Broad Design Skills over Platform Knowledge

Filed under: Uncategorized — Sadache @ 12:41 am

In his latest article Martin Fowler suggests that what matters most while building a team is not experience or thorough knowledge of the specific platform and business domain, but rather some broader skills that allow building quality software and delivering value.

(more…)

January 17, 2008

REFX :: You are not gonna need it: isn’t that, the simplest thing that work?

Filed under: Uncategorized — Sadache @ 9:57 pm

http://juliendelhomme.com/?p=53

Can’t agree more!

January 9, 2008

I have to tell I LOVE QCon and I have to tell see you there!

Filed under: Uncategorized — Sadache @ 9:46 pm

Oh yeah!

October 19, 2007

High abstraction level of DSLs to reduce the testing burden?

Filed under: Uncategorized — Sadache @ 5:10 pm

This post has been originally posted on http://www.infoq.com/news/2007/10/dsls-abstraction-vs-unit-testing

Inconsistencies between the user interface and user’s expectations can be an important source of bugs. According to Leonardo Vernazza, this is due the fact that the user and the UI do not talk the same language. Using a DSL, characterized by a high abstraction level, would be instrumental for avoiding the risk of translation errors and would therefore reduce the testing burden.

(more…)

September 29, 2007

Design Driven Testing: Using tests as specifications of system’s invariants and contracts design

Filed under: Uncategorized, Agile Programming, Domain Driven Design, Conferences, JAOO — Sadache @ 4:44 pm

I just got back from JAOO2007. One session of the conference was James Coplien’s “Scrum Architecture”. After this session, a discussion took place about Coplien’s statement that “TDD harms your architecture”! This discussion continued afterwards as an Open Spaces debate. I had the chance then, with the help of Floyd Marinescu, to organize a filmed debate at InfoQ’s studio between Bob Martin and James Coplien on the same topic. I really enjoyed this debate which really showed a high quality spirit of discussion from both sides. Both had their arguments. I will not tell my opinion but rather let you judge yourself once the video is out on www.InfoQ.com .

Recently, I posted about the fact that I always write tests before code, but I don’t do Test Driven Development where I discussed the way I view testing. Yet I don’t guess I’ve been clear enough, so I decided to write few lines trying to better reflect the way I view a testing approach.

When I have a domain problem at hand, first what I think about is partitioning and abstraction, which means dividing the domain into sub-domains. This partitioning procedure is not driven by any tests, but rather by domain knowledge acquired from domain experts. This is extremely important; the architecture/design should reflect the domain/sub-domain problem it is trying to solve. This helps the software be flexible adopting business changes, as it was designed from a business perspective. A book that explains very well this approach is Eric Evans’s Domain Driven Design.

This Up-Front analysis is not defining the full up-front architecture, far from it, rather defining good bases for an architecture that maps to business. It shouldn’t take much time, just enough to help going forward with an iterative approach. This should define, either in code or in a tinny UML sketch, an object structure that forms the basic sub-domain’s components.

After defining the main structure of the sub-domain’s solution, I follow an iterative process as follows:

1: Driven by the business knowledge crunching, I define a component’s contract with its invariants and conditions

2: I write a test that forms the specification of this contract and its invariants

3: I start the implementation to satisfy the specifications I defined in the test

A very important note here is that the contract specifications should be readable, very clear and explicit. This explicitness helps to have a better vision of the whole system while reading the contracts-invariants of its defined components. This also helps spot bugs without the painful debugging: this approach of Design by Contract reflects developers understanding of the business domain in a more explicit way, so it makes it easier to spot misjudgments developers might have done in their implementation. This intention revealing method of development highlights important business rules, rather than letting them hidden behind an abstraction. Abstractions should not hide any important business concern as an implementation details. Explicit contracts and invariants allow business experts to have a look on what is going on inside the software. For an example of bugs that result from developer’s misjudgment see Reganwald’s recent post .

Of course unit tests are not the best tools for this approach. They work fine if we emphasize on methods and class naming for readability and visibility of invariants and rules. Still I prefer tools like BDD or Eiffel/Spec# Design by Contract. Hope we will have some more support for such tools in the industry soon.

A metaphor James Coplien used to illustrate the problem in Test Driven Development approach, which made sense to me, is a test driven course in a school. It’s about a teacher that finds that most of his students fail in the final test. So to make things work better, he decided to ask the students to write themselves their tests by the beginning of the semester, and then to let them pass these tests by the end of that semester! Hence, they might get better grades, but that doesn’t mean they got better knowledge at all.

 

Next Page »

Powered by WordPress