Skip to main content

Abstraction to a Point

Architecting and implementing software is a constant balancing act.  First the design has to work in the end but the underlying implementation can vary greatly, event during development.

Re-use existing classes that almost fit, or create a new or derived hierarchy for just what is needed.  Abstract out the needs in base and helper / utility classes, but not too complex to not allow modification for the ever changing requirements.  Is the abstraction clear to others that will be maintaing the code, months or years later?  Should the abstraction only existing for the main feature / operational aspects of the application or should they extend to the smaller aspects of the operations as well.

It's a constant battle of decisions during implementation.

The abstraction point is not isolated to development as the cost associated with these decisions can increase the code and timeline of the implementation and even place a project at risk.

During sprints for adding new features there is a temptation to refactor classes to make better use of abstraction, re-use of code and testing,  But this comes with a cost.  Too much refactoring can lead to instability of code (yeah I know the tests should catch errors, theory -vs- practice), lengthening deadlines and slowing of finishing the project as the more features are completed.  There is a balancing act to the refactor / abstraction dance.

Over the years, I've found my balance point of when to abstract and when not to.  My goal is to have a fare amount of abstraction but not to where the different logic hits the metal (like UI behavior) to occur.  Basically it's not to do abstraction when it feels forced or where complexity starts to build because of the abstraction.  The larger the abstraction granularity (base classes, MVC, command patter, etc) the lower the complexity.  The finer the abstraction the risk of increasing the complexity and the risk of harder to maintain, refactor, etc.  You can sometimes see this when there are abstractions upon abstractions, that's a red flag of complexity.

It's a tough balancing act to follow.  

Comments

Popular posts from this blog

There is no "Right" way.

It's not that your way is not the right way, it's that everyone has their own right way.  So which is the right way?  Is there a right way? Software development is full of discussions that revolve about the "right" way of doing something. The terms used in discussing software design, tools and implementation are so undefined as to make them meaningless.  Code is not designed and written in a vacuum, it's designed by real people in real companies, each with their own constraints and issues.  Code that may look like a hack could have been the result of an employee dragged out of bed at 2am by a company shirt that only cared that they they did not lose their personal client the next morning.  Everything must be looked at in context.  A project written to "Best Practices" may never be finished before development funding dries up.   Goals, vision, constraints and thoughts should be somewhat aligned for project to be successful (or at least enjoyable ...

3rd Try is a Charm

I've been trying to draw / paint these barns for a couple of years but never felt or got them right.  This time I think they turned out right. So What went wrong before and what's right now with this drawing?  This time, the light was right.  It's coming from the upper right and the shadows just looked right.  The other thing is the corn field on the left had to "be in season", otherwise it's just a plowed field.  I had taken other photos from different angles but they never felt right.  This angle has the road, power lines, corn field, etc. all leading to the right.  The shadows on the lower right helps fill in that corner (don't forget about the corners!).  The last part is trying to draw (ink paint maybe) the trees in the background.  Not so easy when they are kind of a blob is green shades. So yeah, it's composition that is king.  Many times I just don't see it until the drawing / painting is finished and when it's right it feels goo...

So THIS is My Style?

 If I play around long enough my style will appear.  I'm guessing that this is kind of it.  I'll keep working on other techniques in watercolor but for now this appears to be my style. I do like it and others appear (to my face) to also like this.  Not every one of my paintings is a success.  About 1/3 so far, but when they do I am rather pleased that anything good comes out of it at all. I do love color.  Color is happy and outdoors is full of color, be it the west or back east with the greens.  Color color color. Also doing some painting on hot press paper and see how that goes. Later......