Правда ли, что сложный код пишут непрофессионалы?
Сложный код пишут олимпиадники.
А если серьёзно, то не нужно усложнять код ради усложнения.  Если можно что-то написать просто и понятно - пиши. Если эт обудет узким местом и при оптимизации код станет сложным для понимания - тщательно задокументируй причины усложнения и что фрагмент кода делает.
Если в понятие "сложный" вкладывают смысл слов "запутанный", "нагромождённый", то скорее такой код будут писать те, у кого мало опыта. Обычно из-за незнания каких-то коротких путей или нечёткого представления о том как что-то устроено.
Если же речь о сложности в качестве смысла "изощренности", то это может случиться когда программист первоначально строит модель "всей вселенной", чтобы код подходил на все случаи жизни. А бывает и что лень упрощать переусложнённую систему либо нет достаточно времени, в результате чего программист решает, что проще добавить незначительное усложнение. Тогда ПО может дойти до критической точки, когда становится слишком дорого что-либо изменять в нём.