This story draft by @memattchung has not been reviewed by an editor, YET.
Teaching operational excellence to aspiring senior software engineers
Regardless of whether you work on the front-end or back-end, I think
all developers should gain some proficiency in network troubleshooting. This is especially true if you find yourself gravitating towards systems programming.
The ability to troubleshoot the network and systems separates good developers from great developers. Great developers understand the TCP/IP model:
If you are just getting into networking, here are some basic tools you should add to your toolbelt:
telnet X.X.X.X [port]
curl -v https://somedomain
) and what bits are sent on the wire
tcpdump -i any
% dig dev.to ; <<>> DiG 9.10.6 <<>> dev.to ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39029 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;dev.to. IN A ;; ANSWER SECTION: dev.to. 268 IN A 188.8.131.52 dev.to. 268 IN A 184.108.40.206 dev.to. 268 IN A 220.127.116.11 dev.to. 268 IN A 18.104.22.168
% telnet 22.214.171.124 443 Trying 126.96.36.199... Connected to 188.8.131.52. Escape character is '^]'.
Learning more about the network stack helps you quickly pinpoint and isolate problems:
If you are curious about learning how to move from front-end to
back-end development, or from back-end development to low-level systems programming, follow me on Twitter: @memattchung
Previously published here.