Sunday, August 2, 2009

Windows Live Writer !

A piece of software rather a blessing for bloggers where they can easily manage their blog posts and publish blogs after previewing them with spell check functionality :)

Wednesday, April 22, 2009

Software Design Charactristics

Now a days I am reading a fantastic book Code Complete 2 written by one of the finest and famous writer of Software Engineering books Steve McConnell. This blog will actually now served me as keeping notes and important points from this book so that I can use these points as reference and also to share it with all of you.

Although this books is mostly about software construction but he also described the characteristics of a well designed software. Bellow I am presenting these Characteristics with their key concepts.

Minimal Complexity:
  •  Keep your design simpe and easy to understand don't make clever designs because they are hard to understand.

Ease of Maintenance:
  • Design the system to be self-explanatory.

Minimal Connectedness:
  • Means designing so that you hold connections among defferent parts of a program to a minimum. Use the principles of strong cohesion, Loose coupling, and information hiding to design classes with as few interconnections as possible.
Exensibility:
  • Extensibility means that you can enhance a system without effecting other parts.
Reusability:

  • Design a system in such a way that you will be able to use the work you've already done in other system where there is a similar functionality needed.
High fan-in:
  • Referes to having a high number of classes that use a given class.
Low-to-Medium fan-out:
  • Means a given class use a low-to-medium number of other classes.
Probability:
  • Probability means designing system in such a way that it can easily be moved to another environment.
Leanness:
  • means designing the system so that it has no extra parts.

Stratification:
  • Stratified design means trying to keep the levels of decomposition stratified so that you can view the system at any single level and get a consistent view.
  • If yor're writing a modern system that has to use a lot of older, poorly designed code, write a layer of new system that's responsible for interfacing with the bad code. Design the layer so that it hides the poor quality of the old code, presenting a consistent set of services to the newer layers.

Standard techniques:
  • Try to use standardized and common approaches or It'll be very much difficult for someone to understand it first time.

Wednesday, April 8, 2009

Lessons Learned

I can say this for sure that the things you learn from a bad project or near to disaster project is far more valuable then from a good project. I'm facing the same situation.

First let me present the history of the project that will give you a chance to analyze from where this all has started that in the end move towards the disaster (which is not actually the case now).

A firm has given us a proposal to develop a complete reporting website that will present about 17 reports based on a Queue Management System's back-end Database and without any feasibility study we accepted the proposal.

Impact: We've just created a mess for us right here
Lesson Learned: Must Do Feasibility Study

We must do feasibility study before accepting any of the project, we must analyze, the project which we are accepting by asking a question, "Are we capable enough to develop this project?"

The developer who was previously working on this project have made about 4 reports and guess what they were completely generated by a custom tool, He haven't write a single line of code by hand and when we look at the nature of the project they actually require highly customized reports. When he shipped these 4 reports you can guess what would happen yeah! all of them were a crap and sent back to the company by the client.

Impact: Effecting Company's Image
Lesson Learned: Adopt strategy after analyzing the nature of the project for development

Another mistake we've made is that we completely relied on the Client's given Requirements which was a big mistake, Requirements Engineering in itself is a big topic to cover here but sometimes or most of the time client don't even know what he/she is talking about, what he needs, so, you should ask him questions why you need this feature? what benefit it will provide you?


Impact: Following wrong Requirements; Developing wrong Things no matter how perfectly you develop them It'll be useless in the end.
Lesson Learned: Always make specs before starting the project


Now previous software developer have left the job and have given me the opportunity to watch the show 'How a Project can be a disaster', I've received the work which he has done on this project which was completely out of synchronization and was not according to the initial requirements, I've tried to change its shape according to the requirements but failed to do so. Everything has to be done from scratch.


Impact: Wasted a lot of time
Lesson Learned: Time is one of the factor that determine Project's success


I've analyzed one more thing, clients actually have a habit of requesting a change and then rejecting it, It doesn't matter at first but when time is a critical factor in determining a project's success then it does matter, how much you have already worked on the change client has requested? and whether new implementation will take more time time then the previous one? If so it will definitely hurt the delivery date and won't allow you to complete the project within time and within budget. In this scenario management should negotiate with the client about the consequences and effects of this change in overall quality of the product etc.


Impact: Trying to make project unsuccessful
Lesson Learned: Negotiate and Stay within budget


cont...

Friday, April 3, 2009

Future of VB.NET

At PDC 2008 Microsoft has unveiled VB.NET's Next version, watch the cool new features VB has to offer in the next version i.e. 10.0 and also where It's heading... Technology is changing at a mind boggling speed!

http://channel9.msdn.com/pdc2008/TL12/

Thursday, April 2, 2009

Things you should Learn

Although this post has nothing to do with Technology or .NET in anyway but It's worth reading http://www.downes.ca/post/38502

Wednesday, April 1, 2009

Why do we Blog?

Blogging means different to different people, Some may use it for portraying their feelings or sharing their knowledge, Some use it to expand and advertise their businesses while other use it to simply create an impression that they have a blog actually :). But blogging for me is quite a different thing as compared to the other fellows, I Blog because it lets me analyze what I've learned where I am standing, It actually provided me with an opportunity to polish my skills because to write a single post it includes a bit of research but how extensive depends on the Topic itself, this actually provide me with an another opportunity to discover and to learn the new things that come in the way while trying to describe the topic in hand.


Some people often argue they haven't came across a single post on various blogs where visitors have left a single comment, it means no one is bothering to read your post so why to waste time? But they have failed to analyze that the writer himself is learning far more better because this extra effort actually giving him the command over the topic he's writing and let him analyze the mistakes and flaws in it because human brain actually thinks one thing at a time, For example in Software designing phase if the design is in your head and you just start coding later in the development stage you will certainly feel some thing is wrong or the design is not coming up the way it should be on the other hand if you draw that design on a piece of paper you'll be in a better position to decide whether or not to use it, how much potential it has and also gives you the choice to come up with alternative designs and research shows teams who document their designs tends to have better products.


So, I am just following the same principle !


Tuesday, March 31, 2009

Keep in Touch !

Most of you already familiar with twitter, a web application that let's you stay in touch with your loved ones, It's just all about a single sentence "What are you doing?", you can update your status on a go, It also provide notification services but in selective countries, as far as updating your status on twitter from Pakistan you can integrate your twitter account with isms.pk - a free SMS service in Pakistan (But account activation takes a day or two), then all you have to do is send an SMS to the specified number in order to update your status on twitter !

Monday, March 30, 2009

Do Knowledge makes us Smart or Over-Smart?

Today I've met the guy who previously was on the same seat as I am right now (Senior Software Developer), The guy seems to be very knowledgeable or at least pretending to be one or not sure whatever the case may be, He was by the way called to solve a problem that he somehow previously has managed to solve but I didn't get how? anyway He entered with a huge bright smile on his face with a big black bag in his hand and wanted to show how much knowledge he has that can overcome any situation, sometimes this sort of behavior counts but I guess not in this situation, He was suppose to help us in solving the problem rather than showing off himself. Anyway he sat in front of the computer with great confidence or rather ordered me to do what ever he say which i did by the way, but nothing seems to work quite well or not at least according to his expectations. In the End he went by saying "Right now I am unable to memorize the solution, how I did it last time but I will try to do it later...!"

The only point I want to make is Knowledge no doubt is what makes you important or worthful and I really respect that guy no offense, no hard feelings but on the other hand if used wrongly will make you feel like a JERK !

Sunday, March 29, 2009

Joel on Software

If you are a Software Developer and you don't know or heared about this blog maintained by Joel Spolsky then certainly you haven't seen anything. Tons of great articles to learn from, great advices and this blog has been converted into more than 30 languages.

Site: http://www.joelonsoftware.com/

Thursday, March 26, 2009

Project Management from Software Development Perspective

Some days back I've attended a 2-Day conference on Project Management for Software Development though I don't have any academic background in computers but I am an enthusiast who likes to learn technology and I was amazed with the amount and potential of the material presented before us, so much to learn and grasp in those 16 hours from WBS (Work Breakdown structure) to Risk Management, from using the right SDLC (Software Development Life Cycle) to Managing Requirements, Why software projects fail etc. I'll be posting my learnings on this topic in various posts but first let me give you a glimpse of what I've learned in those 2 days...

  • Introduction
    • What is Project Management?
    • Why do we need Project Management?
    • Why Project Management in Software?
    • Common Issues faced by the Software Project Managers

  • Defining a Project
    • The business reason of the project
    • Identifying the project objectives
    • Role of Project Sponsor
    • The project kickoff meeting
    • Managing the project to build customer’s confidence

  • Selection of Right Process Model
    • Comparing various Software Development Lifecycles
    • How to identify the right model?
    • Overview of various prevalent models

  • Estimation - The Black Art
    • Why estimate?
    • What to estimate (efforts, cost, time, etc.)?
    • Various estimation techniques
    • Wideband Delphi method
    • Estimation workshop

  • Planning for Resources
    • Planning for human resources
    • Planning for skills required for project
    • Planning for equipment and other resources

  • Work Breakdown Structure (WBS)
    • How to build WBS
    • Identifying tasks and phases using a WBS
    • Sequencing tasks into a network diagram
    • Constructing Gantt charts to assess resource needs

  • Managing Risks
    • Assessing and analyzing project risk
    • Developing risk management plan
    • Risk handling techniques
    • Planning for contingency

  • Managing Quality
    • What is quality
    • How to identify quality parameters for your project
    • Optimizing quality

  • Managing stakeholders
    • Identifying stakeholders
    • Recognizing their involvements in the project
    • Managing expectations

  • Managing Changes
    • How changes are better for your project
    • How to deal with changes
    • Change management process

  • Progress Tracking and Control
    • Progress tracking parameters
    • Measuring software progress
    • Linking progress to success

  • Closing the Project
    • Administrative closure
    • Legal closure
    • Learning for mistakes
    • Influencing the continual improvement process

So, stay live !!!

Wednesday, March 25, 2009

Business of Software

For all of you guys out there intrested in Business of Software this site will give you some useful and important points to consider before entring the market. You can see various videos of some of the brilliant brains in the industry speaking on this very topic. Good Luck !

Site: http://www.businessofsoftware.org/blog.aspx

Tuesday, March 24, 2009

Softwares for .NET Developers

I've tried to help the developers community through some of the softwares I've made and published by various sites. You can check them out by visiting the links bellow, each one having its own description.

Customer Management System

Lee Tailors customer information database management system. Requires SQL Server 2000. Please read the enclosed readme.txt file before running for information on how to connect to database.

Image Factory v1.0

Image Factory v1.0 - Digital Image Processing Software System. Convert, Import, View, Resize, Rotate, Flip, Enhance, Share, Organise & Print your Images. Very first version, used pure .NET code.

YAS v1.0 - YouTube Automation System

YAS v1.0 - YouTube Automation System - A Desktop version of YouTube.Com using its APIs. You can View Featured Movies, Popular Movies, Browse user Profiles, See Friends, Favorit Movies, Comments on Movies, Tags Assosicated with Movies, Watch Multiple Movies at the same time. YOU MUST READ THE README.TXT FILE ENCLOSED.

SQL-Transactions

How-To Perform SQL Transactions. Just Read the Commented Text to get the idea to Work.

Programming 3D objects using OpenGL

How to draw 3D objects in Visual Basic .NET by using OpenGL a high performance graphic envoirnment by a CsGL library, Its not an another implementation of OpenGL but a wrapper build to use OpenGL with c#.net and vb.net.

Working-With-TextFiles-and-XML

How to Work with Textfiles, Just Three Lines of Code Using StreamReader and StreamWriter. And also used an another function name 'FileOpen'. You will also learn how to work with Xml Readers and Writers. Need SQL Server 2000 in order to work with Xml Generators.

Marketing INs And Outs for Geeks !

Erick Sink one of my favorite blogger and speaker running a spectacular blog in which he is talking about usefull marketing related stuff targeting particularly developers and other enthusiasts. You can check out his writings here.

Monday, March 23, 2009

Back !

Hi to all,
Sorry folks my MBA and burden of work at job didn't allow me to post some cool new addition to the I.T toolbox but now I am back with new, innovative and some amazing I.T related information so stay live !!!!