Showing posts with label Software Design. Show all posts
Showing posts with label Software Design. Show all posts

Code Refactoring

"A software application is not complete when there is nothing more to add, but rather, when there is nothing left to take away." (apologies to Voltaire)...

Re-writing and re-organizing your code, known as refactoring, should be the heart and soul of your development process. Your goal is to make the code at each level, have a single purpose, use the most common and simplest toolset, be as straightforward and easy to follow as is possible. You should be able to explain any level of your code to another junior programmer in under 5 minutes.

Your code should exhibit high cohesion. In other words, at any given level, your code should do one thing and one thing only, do it simply, efficiently and effectively. Communications and use of services to accomplish tasks should be easy to follow, obvious and simple.

Variables, classes/objects and methods should be named well. Feel free to agonize over names, it IS important and you will need to live with them for a long time. Good, solid names that are in sync with the business process they support can make a huge difference in the readability of your code and when discussing feature sets and processes with non-IT folks.

Lastly, but still very important, apply the concept of refactoring to your design meetings as well as your coding. Just because someone has a "solution" or can come up with a way to "solve" a problem does NOT make it the correct one.

Re-design your ideas and assumptions as well. Do not be afraid to throw an 8' dry-erase board full of plans out the window and try something new. Walk through your ideas, pick them apart and shoot as many holes in them as you can. Once you adopt them, they become much more difficult to change.


Good Luck and Enjoy your Coding!

Read more...

User Designs

Let's face it, users of software are just that ... users !

They have no human software interaction design skills, they are certainly not familiar with software design tools nor the limitations of any particular language and despite your best efforts, they never will be.

Most user's ideas of design patterns are what you buy at the fabric store to knit sweaters and the gang of four refers to the people responsible for the grafitti on downtown buildings and sidewalks. I don't mean to denegrate users, but lets face it, they are not software developers or designers.

Let's stop wasting valuable company time and resources engaging people who are clearly not qualified to make the decisions that we are asking of them.

Find a subject matter expert, sit at their feet and learn the business and the process. Take what you have learned and find a way to make the process better, then use what you know to create efficient user screens with minimal wasted effort that mimics the improved process and leave the poor users alone until you have something useful.

Remember - fix the process, then fix the software. -


Read more...