The guys over at 3 Leaf posted something up that really struck a cord with me. There are certainly developers out there that understand computer networks, but as a general rule most don’t really understand it any more than your average user.

Before I got into software development professionally I was actually a network administrator and general computer support guy. One of the things that spending time gave me was an appreciation for how things actually talk to each other – what is TCP/IP, what is HTTP, what is FTP, what is POP3 and SMTP. These questions that any network administrator should be able to answer – and I don’t just mean expanding out the acronyms. How does it actually work?

Well the way you find out is heading over to the Internet Engineering Task Force (IETF) web-site and reading Request for Comments (RFC) documents and Standards (STD). If you aren’t sure were to start – here are some entry level ones.

  • TCP/IP — A TCP/IP Tutorial (RFC1180)
  • Hypertext Transfer Protocol — HTTP/1.1 (RFC2616)
  • File Transfer Protocol (RFC959)
  • Post Office Protocol – Version 3 (RFC1939)
  • Simple Mail Transfer Protocol (RFC821)

Once you are armed with knowledge you will know how to read and send e-mail with nothing more than a TCP connection (thats telnet.exe folks), and you’ll know how to sniff a basic authentication username/password token out of a HTTP request. Ever wanted to send yourself an e-mail from Bill Gates – check this out!

BillGatesMail

Other commands that you should know about as a developer:

  • IPCONFIG
  • NBTSTAT
  • NETSTAT
  • NETSH
  • PING
  • TRACERT
  • ARP
  • FINGER
  • FTP
  • REXEC
  • RSH
  • ROUTE

Thats not even a complete list! Learn what they are and what they do, take the red pill.

Recently Kim Peacoke, our Communications Manager at Readify posted an entry onto her weblog about time being the most valuable commodity in the world and how it compares (among other things) to other kinds of compensation such as money. At the end of the post, as a Readify Consultant I am left blushing.

The reality, at least for me is that my .NET developer community work is to a large degree self serving. I discovered a while ago that the best way to learn something is to teach yourself – provided you have enough lead time.

For example, when preparing for Code Camp Oz I systematically went through the base class library and looked for classes that were new to .NET 2.0. The list was huge, way to big to cover in a 45–minute session so I pared the list down to a dozen or so bullet points.

I then set about understanding the enhancements in more detail, I probably spent most of my time looking at the generic list class, and ended up writing these four posts about the associated generic delegates. Several people have commented on the posts saying they were useful – but you know what, they were more useful to me.