Programming a PLC requires certain skills and knowledge. Understanding the process that will be controlled or automated is paramount. Start-up and Shutdown functions are often forgotten or given little attention at the beginning where the focus is on the main functions of the machine or process.
The PLC will need to be chosen to fit the application and the all the inputs and outputs accounted for and spares included just in case the project grows or to cover elements that were simply missed.
As with all projects, planning upfront will save time and frustrations later. Meeting with all the stakeholders or those involved would be a great first step. Hash out the scope and develop a time-line and have those involved agree to it. Later, when extra features or functions are being requested, you can support the reason for the programming project taking longer than first proposed.
PLC programming is only part of the entire task of automating a machine. An engineer has to design and specify the components that supply the PLC its inputs and what it outputs it will control.
If you are only responsible for programming, then you need a list of all the inputs and outputs and their specs from the engineer. He or she may also be the one to supply a control narrative or description of the project. Taken a step further in development, Boolean Logic diagrams may be supplied to you the programmer which can (if detailed enough) be used to create the program from. Often times the Controls/Electrical Engineer will also do the programming and possibly the HMI programming… but that is another topic.
So in wrapping it up, PLC programming is about industrial automation, giving brains to machines/processes using a specialized computer and requires significant skills and knowledge. I can tell you it can be a very rewarding occupation in terms of challenge, constant learning, teamwork, and last and certainly not least, financial gain.