Sunday 30 December 2012

10. Documentation skills


In this post, I am going to write how documentation skills will help us improve our development process.
We are all starting our career from programmer level which straightway starts writing the code and don’t spend time to write or document what we did. Due to lack of documenting our work, we need to spend lot of time to understand and maintenance the code which we normally don’t realize.

We used to write the code but not document about our work. We should document our work and it will help us definitely.

Everyone raise next question is that where is time for documenting our work? This is really good question. We should allocate some time for documenting our work. This time allocation should be in the project schedule and in the SOW (Statement Of Work). Otherwise we never get the time to document our work.

Next question is what to document?

Documenting our work not limited to
  1. What overall system does with short description which help other developers
  2. How the system interconnected to other systems if it is
  3. Write comments on the coding that what the method or system does on the specific section.
  4. Write Application Support Manual (ASM) and Application Support Process (ASP) based on your organization structures which everyone adopts on your organization.
  5. Prepared the generic template which says what need to document whenever the project or allocated task has been completed.
  6. Included UML diagrams on your each and every project or task.
We no need to spend lot of time or documenting unnecessary stuff which we don't need really. However, we need to document the necessary things and which help for support and our future  development.

Can we start documenting our work? Yes we can…………..

11. Communication skill


As you know, the communication is the key for everything. Without communication we cannot move forward. We can say the whole world tighten with communication.
I am not going to explain much detail about this as it’s not necessary and everyone on top on this.
We can see many people know technically more due to lack of communication they cannot reach the high level positions. Because of lack of communication is stop growing further. So we can say communication is the most important than others.

How we can improve communication skills?
  1. You can find on internet many ways that how you can improve your communication skills. However, we need to follow and practice them in such a way that. So that our communication skills will improve.
  2. We can listen videos and watch English movies.
  3. Writing technical articles and blogs.
  4. Attending the seminars.
  5. Participating the general activities such as volunteer programs, meetings…etc.
  6. We can carefully listen who talks well and try to follow their way of talking.
  7. Conduct technical classes with your friend and university students.
  8. Reading books and emails who written in well.
Other than above, there are many ways which can suitable for you to improve communication skills. So please try to utilize them and improve communication skills. It cannot be done one night and you need to keep practicing & achieving your goals.

Each and every method will give you some percentage of improving your communication skills so please try to use all the ways and utilize them. So finally you will have 100% communication skills.

Thanks for visiting.

12. Doing Certifications


We are all understood that some of the companies does not recognize or give preference for whose has the corresponding certifications for the advertise job as they are mainly looking for domain knowledge experience. 

However, I would suggest that doing certifications will help you to improve you other technical capabilities.
For example, sometimes we don’t have time or get opportunity to work on each and every technical stuff or scenarios. But certification will give you overall road map that how you can use different technical scenarios. 

You can use these scenarios in different such way that in various systems.
And also certification covers all the technical topics which may need for development and these help us to improve to do the better than what we did before.

For example, Microsoft certifications will tell you how you can debug the production system remotely in order to identify the issue from your development tool such as Visual Studio 2010 and many more.

For more information about certifications, please visit the following sites and follow up other technical service providers certifications which are demand for the current IT market.


13. SOA & Cloud Fundamentals


Sorry. This page is under construction. Please check back soon.

14. Building SOA & Cloud based services


Sorry. This page is under construction. Please check back soon.

15. Networking skills up to Architect level


In this post, I am going to explain what are the network diagnostic commands need for in order to troubleshoot the website or networking issues for developers and architects. I am not going to explain all the commands which Network Engineers use.

Now, I am think of the following commands, tools…etc.

NetworkingCommnds

Before going into the details of each command, I would like to mention

How Internet Works?
  1. In high level, when we type www.microsoft.com on browser, browser sends the request to DNS (Domain Name Server) to ask for the IP address of the website.  This browser request goes via many DNS including root DNS and finally to get the IP address of the website which we are requested.
  2. Once browser get the IP address of the website, browser sends request to the IP address to get the content of the website.
Commands Explanation:
Please click start->and type command on the windows search box and open the command prompt to verify the following commands. Please note that some of the commands are may not work for you due to path issue or utility for that command is not installed on your machine. Please check with your Network Engineer if it’s not working. The command prompt window should be similar like the below picture.
Command
  1. Ipconfig:  To display the network settings currently assigned to any or all network adapters in the machine. This command is used to verify/find an IP address, network connection as well as to verify your network settings. Please type ipcong/? If you need to know more about the command and other options.
For example, the result of ipconfig for my machine
ipconfig

2. nslookup:  To look up an IP address of a domain or host on a network. Please type nslookup/?  To know more about how to use them.
For example, nslookup results for www.microsoft.com from my machine

nkslookup

3. Tracert: Used to visually see a network packet being sent and received and the amount of hops required for that packet to get to its destination. It will also show you that your request going to via which networks and firewalls with details from source to destination.
For example, type tracert google.com. This is the tracert for google.com from my machine.
tracert

4.       Ping: Used to check for network errors.  Generally, if unable to connect webs site or any host then you can use ping command to verify and it’s also give you he IP address of the site.
For example, When I type, ping www.facebook.com and I am seeing the below result.
ping
5. netstat: Allow you to view the statistics of the network such as active TCP connections, ports on which the computer is listening…etc.
For example, netstat results for my machine is given below.
netstat

6.       pathping: Its similar to the tracert command, pathping command provides information about network latency and network loss at intermediate hops between a source and destination. Pathping sends multiple echo request messages to each router between a source and destination over a period of time and then computes results based on the packets returned from each router.
For example, pathping results for www.amazon.com from my machine.

pathping

7. telnet: Telnet is software utility that allows users to remotely access another computer such as a server, network device, or other computer.  We can verify that if we cannot connect to any machine with particular port and this will help us to troubleshoot the problem and connectivity issue.

8. ftp: Short name for File Transfer Protocol. Used to receive and send the files from FTP server

Tools:

1.       Fiddler: Fiddler is the web debugging tool and its downloaded from http://www.fiddler2.com. Please download and play around it to know more about the fiddler. Fiddler will show lot of information such HTTP headesr, requests…etc. & also used for verifying the performance of the web site.
 For example, traffic information for www.yahoo.com from my machine.
fiddler

WireShark: WireSharek is a network packet analyser tool and it’s downloaded from wireshark.org. Please download and try it. Please share your experience about this tool if you like it.
Others:

Hosts file:  Hosts file is used to map hostname to IP address. The location of the host file is C:\Windows\System32\drivers\etc. The contents of the host files similar like below.

127.0.0.1       localhost
x.y.z.z1          mysite.com
Usability:  
  1. Used to test for the DNS IP address changes when diverting traffic to specific IP address.
  2. Divert any website traffic to specific IP address on your machine.
If you would to know more about the networking commands please refer the following sites

Note: There are many numbers of tools/info available for debug/trace the website/network traffic. If your find the good one and useful for others please share with us and also share with me at Jayachandran.NET@hotmail.com.

16. Troubleshooting the problems


This post describes how to you troubleshoot the any problems.

As mention on the post 4. UML that simple diagrams will save you lot of time for the explanation. So I am going to draw diagram here to show how we can troubleshoot the problems if website or application is not working and the same troubleshooting funda can applicable for other problems too.

Diagram:

TroubleShooting The Problems

As of now, I can think of that the following other ways to help to troubleshoot the problem.

Notes:
  1. Use Fiddler to inspect your HTTP traffic.
  2. Check Event Viewer and exception logging database if you have for that website or application.
  3. If your website hosted on Web Farm(same website hosted on multiple web servers), then very hard to find the request coming from which web server, So in order to trouble shoot the problems easily I would suggest to define the customer http headers on IIS using “HTTP Response Headers”  for each web servers. For example, please refer the below picture and you will understand that.
TroubleShootingTheProblems1

4. If your website or application build up with many layers (say UI, BAL, Web Service, Data, caching …etc.) then I would suggest to write the simple script to make sure everything is working on individual layers including connectivity and calling simple methods…etc. Because this will save us lot of time. For example, if there is a problem on DB then if we execute the script and script will tell us straightaway where is the problem instead of looking from web servers and narrow down the issue to other layers.
5.  Setup instant notifications via email or SMS for your production environments if any critical problems are happened or any health check issues.
6. Prepare the support manual documentation and use it for when the problems are happened and this document also very useful for future support/developers.
7. To work our applications on all of the modern browsers, sometimes, we need to write separate working block for the some of the functionalities for specific browsers. For example, our testers say it’s not working on Chrome or IE…etc. then we need fine the alternative working solution of that.
8. Please use networking commands to troubleshoot the problems for network related issues.

I hope you enjoy reading this post. Please contact me if you have any questions.