If that's the case then since Ubiquiti has Unifi Controller is that
already a network automation?
Essentially, yes. You could also consider it a form of Software Defined Networking (SDN).
If yes then why do we have to know programming if we can just use a GUI?
For one product from a single manufacturer, you probably don't. But large networks can have hundreds or thousands of devices from several different manufacturers. Making a change may require changes on several different systems that require staff with differing expertise.
Here's one example: to deploy a new application you may need to:
- Create a new virtual server (maybe more than one).
- Install software on that server
- Configure the software a certain way
- Assign the server an IP address
- Create a DNS entry for that address
- Adjust firewall rules for that new server
- Possibly adjust a load balancer for that server
- Add the new server (and application) to your monitoring system(s).
All these tasks require several people, and all the systems are from different manufacturers. If you need to do this frequently, it makes sense to automate this process as much as possible to reduce costs and make the deployment faster.
Here's the real reason you need to learn programming:
Automation in networking is in its infancy. There are few standards, too many different ways of doing things, competition between manufacturers for who is in "control," etc. Engineers have to build their own automation tools to get their jobs done because no comprehensive systems exist yet.