KiCad is definately good enough to be used in a professional environment and for real-world applications.
Some are complaining that the maximum of 32 copper layers is not enough for their designs.
Have a look at the "made with KiCad" section on the KiCad website:
http://www.kicad-pcb.org/made-with-kicad/Have a look at the recent KiCon held in Chicago a few monts ago.
KiCad has made tremendous progress in the last few years, and at KiCon Wayne Stambaugh announced that he's got hired to work full time on KiCad. I do not know how much actual programming he does, but he seems to be the largest driving force behind the direction KiCad has been following for a few years.
It's true though that KiCad still has some rough edges and there are many things that could still be improved, and they're getting improved in a pretty rapid pace for the size of KiCad's development team.
Some people deem an "all enveloping database system" integrated in KiCad an essential missing part, while others argue that all the differen parts in the world multiplied with all the places you can buy them is beyond the scope of a PCB program.
As an open source project with nicely documented API's Full source code available and Python scripts to read the file formats (Which are also documented) integrating it in some database program would be relatively easy.
That is the single discussion about KiCad that I'm trying to avoid.
As a hobby user of KiCad the whole subject also simply is not applicable to me.
One of the biggest reasons for liking KiCad is that it has no big flaws.
In the past I've paid for licences for PCB programs that used their user base as beta testers and you became afraid of installing new versions because you had just learned to work around the existing serious bugs.
With another program I also paid for (EdWin) had a bug that the netlist was not always updated if you deledeted a wire in the schematic, which very easily leads to faulty PCB's.
The "push and shove" router in KiCad lets me squeeze in an extra track or a few via's with very little effort which I would not have dared to trie in previous PCB progams I've used.
I don't know why KiCad does not lik Simon's step files. KiCaD supports both Step and WRL for 3D models, and a lot of the 3D models seem to be made in, or converted with, the "stepup" plugin for FreeCAD. Questions about such things are best asked on the KiCad user forum:
https://forum.kicad.info/Mike has a valid point when he writes that no PCB package is going to have every possible footprint, and therefore it is important to have an easy way to make footprints.
In KiCaD there are a bunch of Footprint Wizards, and if you footprint can be made with them, you can make a footprint in less than a minute (after a bit (but not too steep) of a learning curve).
Sort of the same with schematic symbols.
I've seen demo's on youtube of a side project around KiCad for making schematic symbols for high pincount parts by copying blocks of text from a PDF datasheet into a spreadsheet, adding some atributes (whether pins are inputs, outputs, tri-state, etc) and then running a script to generate a schematic symbol from the spreadsheet. Looked really impressive, but because I do not use such functionality very often and my parts rarely have very many pins I just design my schematic symbols from scratch in the schematic symbol editor, or copy an existing part and modify it.
The symbol editor does not have very much "advanced" funtions, but it's pretty solid and easy to learn and use.
KiCaD also has a lot of shortcut keys which significantly speed up the design process compared to just working with a mouse with 3 buttons and a scroll wheel.
From the many reviews and opinions I've read, the main reason why people do not like KiCaD seems to be that they are used to the idiosyncracies of the PCB program they're currently using, and at the same time compare KiCad function by function with the program they're used to and balk about every function they like in their current program that is not impemented in exactly the same way in KiCad.
PCB design programs are pretty complicated because there are lots of small bits and ends that have to fit together and there will always be some learning curve to get used to a new program.