In Chapter 3, Singh provides an example of breaking codes with keywords and makes everything seems quite easy. However, in practice, breaking such a code is definitely difficult and needs a lot of time and work.
Say you have a message which is enciphered by using a keyword as long as the plaintext. The first thing is that you can't use the Kasiski examination technique. The only way to start is to try some common words to find a clue about the keywords. In Singh's example, he assumes that the first word is "the". That is a reasonable strategy because "the" is one of the most frequent words in English. However, what if the first word is not "the" but one of the other common words? There is a problem that if the common word in the plaintext is a word with only one or two letters like "a" and "in", Singh's method described in the book will be useless that he couldn't find any corresponding key letters because there are too many possible combinations of two letters to check one by one. Also, Singh's deduction of the construction of the keyword is actually a special situation. Consider if you guess "CAN" and "YPT" in the keyword, it's actually hard to correspond them to "Canada" and "Egypt" and it must take a long time to try all the possible combinations. Finally, the work to find out the last four letters in the keyword is also a hard work which needs a lot of time even with the clue that it is a country name, let alone that in a usual time we don't have an explicit clue like the country name. Singh just assumes he is the most fortunate one that his every shot is perfect when breaking this code.
Besides all of these above, there is another thing we should know that probably we would face the problem of false positives in our breaking procedure. There are thousands of combinations with several certain letters and short words, how could we make sure that we get the right one? Each time we go on with an assumption means that we will spend a lot of time on this assumption and if we failed, everything needs to run again to check the next one.