Archive

Archive for the ‘Articles’ Category

Article: Testing and Software Developers

March 23rd, 2012 No comments

Somewhere I read:

A programmer is one who checks both sides of the road before crossing the road.

Some people misunderstand the role of developer as just ‘coder’.

Who is a Developer?

A Developer or Programmer or Systems Analyst is one who is:

  • A Business Analyst – customer interaction, grab requirements
  • Architect - convert business requirements to technical solutions
  • Project Manager – big area – Eg: co-ordination of different team members
  • Guide – give support for fellow programmers and designers
  • Coder – Code!
  • System Administrator – Deploy application to server etc.
  • Tester – Test your own code!

..and much more.

See what Wikipedia says about Systems Analyst:

A systems analyst researches problems, plans solutions, recommends software and systems, and coordinates development to meet business or other requirements

Detailing all the roles of a developer is out of scope of this article. Let us focus on Testing.

Some developers believe once coding is finished, everything is finished. And “testing is not my job”. I have faced such comments from budding developers many times unfortunately and tried my best to make them understand why is it not correct. After writing each set of code, the developer must be testing the functionality thoroughly before handing over to next teams.

I would say a Developer must show multiple-personality. The “coder” must write the code and once finished, he must turn to a “customer” and test the code. i.e., test the functionality in such a way a customer or end user might test.

Beware of code quality after any change request

Once the project is delivered or after testing by testing team, you might encounter with bugs or change requests (i.e. requirement changes). A coder will simply fix/implement it and inform team/customer that “it is done”. A Developer will test the area of change several times and the entire module/project at least once.

The requested change might be to do a minor spelling correction. But you never know because of this where all other areas broke.

Chances are:

  • You might be making the correction on a wrong part of the project
  • You might be using a different version of the source code on SVN
  • You might have accidently touched some other area of code and you are unaware
  • You might have pressed “Back Space” key instead of “Del” key
  • You might have uploaded back a wrong file
  • The particular change breaks the logic of another module etc. etc.

Developer’s Role in Coding & Testing

A Developer’s role of testing is simple:

  1. Coding
  2. Test own module

Well, let me decorate this so that it looks:

  1. Write unit testing code
  2. Coding
  3. Run Unit Tests
  4. Test own module

Above flow is ‘okay’ for projects which requires only one developer.

Recommended flow

I would recommend below flow for projects with a small team.

  1. Write unit testing code
  2. Coding
  3. Run Unit Tests
  4. Test own code
  5. Code review – by peers
  6. Integrate – other’s code to the same project
  7. Integration Testing
VN:F [1.9.18_1163]
Rating: 4.9/5 (7 votes cast)
Categories: Articles

Hey programmer, how fast you can develop a project?

February 23rd, 2011 No comments

This is an age which time travels before ideas. i.e., you might encounter the subject of deadline before you come to know about the idea or requirement details.

Depends on below properties, answers varies:

  • Number of years of experience – if you a manager,
  • Level of knowledge – if you are a manager,
  • Process – you or your company follow,
  • Type of organization you work,
  • Type of project,
  • Architecture of the project,
  • Number available resources,
  • Timeline of the project,
  • Budget of the project etc.,

 

For a successful project at least some of the above points are mandatory. You can deliver a project in a fortnight but quality matters.

Level of Knowledge and Number of years experience

If you are an expert in the field which project need to be executed, then you an deliver the project really fast. But it is not always an easy task for a manager to train his team to make up with the same level of knowledge. But a manager can build a base for the project to work on. When team members are from different environments, and different environments use different processes, there might be a conflict-of-base occur. Every one including the manager must be patient enough to listen to others and build a powerful base. There will be convincing and negotiation in between, but sufficient time must be available for all these. This will be an one-time process so all the future projects can follow the same base.

Technology changes every day, so it is very important to update knowledge day by day and make necessary changes in development and coding styles from time to time.

When the technology or domain/concept is very new for the team, there will be a learning curve involved and the deadline of the project will be a bit far.

Number of years experience must not be taken into account always. As I stated already, technology changes everyday and none get the opportunity to use all the technologies. So gap is a gap. For  a programmer, coding concepts and types of project handled remains same but the complexity of requirement and advanced technology he might use differs which surely impacts the deadline.

Process

Current world is for Agile, SaaS, Extreme Programming, Cloud etc. I still believe you cannot deliver a 99.8% quality product (hate to say 99.9% in this busy world) without using any of the standard software development processes unless it is a single line of code. Let me discuss in a generic point of view.

There is no any company without a process. Process emerges automatically and get it aligned with the team. Fact is, it is not an easy task to change the process in a sudden. There will be much repulsion from the team members regardless of how complex and ugly process they currently have.

Most customer-centric organizations unknowingly use Agile. They work closely with the customers and as a result most of the projects will be success. They get enough time for development directly from the customer and there will not be any deadline hazards as customer is aware of what is happening at the development center. The major demerits will be unexpected extension of scope which results in missing track of change requests and resource allocation problems for other projects.

Type of Project, type of Organization and number of resources.

As long as you have expertise, you can touch any domain. Similar projects you can deliver very fast as you will be able to use the same code base and in most occasions just a re-skinning of application will be enough. When ever you touch a new domain or technology, there comes a learning curve and situation differs. Company management must keep account of this fact and give sufficient time for developers to cope with it. From second project onwards they will be okay.

When you estimate or sign-off a project contract, please do commit the schedule by keeping in mind that you have N number of resource and together they can finish the project in N number of days. You must be having proper benchmarking and proper tracking of all the projects in hand. You might want to work on different projects simultaneously or some of your projects might be in maintenance mode so all needs time. Put sufficient buffer. Your developer might be able to finish a complex task in 1 day’s time but he might get struck with a minor coding bug which result in spending more than two days.

Many company owners are very proud to say they got a flat-hierarchy in their organization. But for the success of projects, a defined organization structure is mandatory. There must be one person who can take decisions. Unfortunately for most small companies, there will be multiple people handling customers and because of that all starts management and at the end developer gets over pressured and there comes production decrease. Proper tasks and resource handling must be done from a singe source. It is very important to keep the communication transparent so that task overlapping will not occur and we can control the deliveries up to an extend.

Trust each other

When you give a job to a person, give some freedom also and do not put un-necessary limits. He must get the feeling it is his job and he must take responsibility. If one is not good for a job, then he will get eliminated automatically from his position. In a typical organization, when you are assigned a job and you get an official status enquiry from another person of same level – there comes a doubt of trust factor which results in imperfection of the job.

Dedication and commitment towards the company or people comes through trust only and you cannot buy it with money.

Work pressure

If you do proper project management – planning and resource allocation, there will not be any question of work pressure. When the pressure from top increases, quality of the produce decreases. Check any project you know. All long running projects will face fail-over problems or performance issues when the time is running. Such projects lacks because of short timelines.

For small projects like a contest or campaign, there wont be much issues as the project will be up only for a short period of time. You must now expect product quality and timely delivery unless you have sufficient number of expert resources.

End Notes

Words never ends, but in this dynamic – busy world, I have limited time for these articles :)

© NinethSense Feb 2011

VN:F [1.9.18_1163]
Rating: 4.4/5 (8 votes cast)

Beginners – Your first Facebook Application

October 24th, 2010 No comments

 

Create new application – URL: http://www.facebook.com/developers/createapp.php

 

CropperCapture[1]

 

You will be asked for security check when you click the Create Application button.

Next, add the basic information

CropperCapture[2]

Application Creation Finished

CropperCapture[3]

 

Now click the Edit Settings->Facebook Integration

Here, see the Canvas URL. I am using my personal blog’s URL as I did not create a specific page for Facebook app.

CropperCapture[4]

Hey! you are done!

 

Try http://apps.facebook.com/<your app>/

In my case it was http://apps.facebook.com/add_two_numbers/

CropperCapture[5]

VN:F [1.9.18_1163]
Rating: 5.0/5 (1 vote cast)
Categories: Articles, General

Tool/Article: Web Server Information using .NET

August 30th, 2010 No comments

I explained the internals of this tool here – http://www.codeproject.com/KB/cs/WebInfo.aspx

You can also download this tool from this page.

A direct download link is here also.

VN:F [1.9.18_1163]
Rating: 0.0/5 (0 votes cast)
Categories: Articles, DOTNET

Article: PHP and ASP.NET – A feature list

August 18th, 2010 No comments

Just posted one article on codeproject.com.

Here is the URL: http://www.codeproject.com/KB/applications/php_asp_net.aspx

This article is about finding out equivalent features of PHP and ASP.NET

VN:F [1.9.18_1163]
Rating: 3.0/5 (2 votes cast)
Categories: Articles, ASP.NET, PHP

My first artile on CodeGain.com – Custom Membership provider for SharePoint

July 22nd, 2009 No comments

www.codegain.com is new for me. I thought I must post my next article there as I liked the name ‘CodeGain’ :)

Click here to read this article article

My intention for this article was to provide a kick start for the SharePoint developers to write a Custom Provider for their database. You should be able to:

  • Use your existing user database with your SharePoint
  • Upgrade your existing ASP.NET application to SharePoint
  • Authenticate against a webservice etc.

If you search on internet, you will find much results for configuring forms authentication in SharePoint. As a beginner you will be still confused and the question still pending will be "how to use my own user database with SharePoint?".

Read more

A draft of the article I posted at Kidoos.net also – http://kidoos.net/content/SharePointCustomMemershipProvider.aspx

VN:F [1.9.18_1163]
Rating: 4.0/5 (1 vote cast)
Categories: Articles, ASP.NET, C#, SharePoint

CodeProject Article: Bing API in Action with C#

July 18th, 2009 No comments

My latest article BING API in Action – C# is available at CodeProject.

URL: http://www.codeproject.com/KB/cs/BingAPI.aspx

Related old blog post: http://blog.ninethsense.com/bing-api-in-action-search-with-c/

VN:F [1.9.18_1163]
Rating: 3.0/5 (3 votes cast)
Categories: Articles, C#

Article: Make your Skype Bot in .NET

July 7th, 2009 No comments

My latest article “Make your Skype Bot in .NET” is available for reading at CodeProject. This article is intended for beginners.

Read: http://www.codeproject.com/KB/cs/SkypeBot.aspx

VN:F [1.9.18_1163]
Rating: 0.0/5 (0 votes cast)
Categories: Articles, C#, DOTNET, News

Article: Flex HTTPService with ASP.NET

June 11th, 2009 No comments

My new article Flex HTTPService with ASP.NET posted to CodeProject.

Read it now

VN:F [1.9.18_1163]
Rating: 0.0/5 (0 votes cast)
Categories: Articles, Flex, News

Types of Tests in Visual Studio

May 5th, 2009 No comments

Here are some quick information on different types of tests available in Visual Studio Team System 2008.

image

  • Unit Test – is a test which is coded with Visual C# or Visual Basic or Visual C++. Basically a unit test calls methods used in your project by passing the required parameters and verifies the return value.
  • Load Test – to test whether your application can run without breaks if there are N number of simultaneous users. It does non-manual tests (unit, generic, web, ordered etc.) with simultaneous virtual users.
  • Web Test – mainly to test the functionality. You will do a series of requests (HTTP) with Internet Explorer. The actions/requests will be reordered in order and will be regenerated automatically with different data.
  • Manual Test – it will be just a text or word document. You will write such tests which cannot be done automatically.
  • Ordered Test – a series of tests in order. It may contain unit, web, manual, generic etc. Load test is not added in ordered test. The order of execution is the guarantee.
  • Generic Test – it is usually an existing test. i.e., it may be an old test you written for some other project.

 

Recommended reading: http://msdn.microsoft.com/en-us/library/ms182415(VS.80).aspx

VN:F [1.9.18_1163]
Rating: 5.0/5 (1 vote cast)
Categories: Articles, DOTNET, General