Что я узнал работая программистом-фрилансером 5+ лет
1. 70% заказчиков понятия не имеют что им нужно, собирают ТЗ на ходу/имеют готовое ТЗ, но отвратительно составленное. Нормально оценить объём работ и их стоимость из-за этого невозможно. В этом значительный минус фриланса, ибо в организациях между программистом и работодателем обычно стоит звено, которое переводит и интерпретирует информацию с одного языка на другое, а в мире фриланса этим звеном выступает сам программист.
2. Есть ещё вид заказчиков которые звонят тебе часа в 3 ночи чтобы сообщить информацию, которая до утра бы вполне подождала, но в попе видимо чесалось.
3. Третий вид заказчиков не знают об официальном или около официальном стиле общения. Стиль общения для меня лично не так уж и важен, до тех пор пока понятно что делать, но сообщения в стиле "Ну что братух, когда сделать сможешь?" или какие-либо личные вопросы я считаю неуместными.
4. На удивление удобно работать с заказчиками из средней азии. Их всё всегда устраивает, денег вагон и маленькая тележка, язык бы подтянуть и образ идеального клиента готов.
5. Со знанием одного - двух языков программирования далеко не уйдёшь, даже если они универсальны.
6. В мире IT за последние годы появились тысячи полезных и рабочих инструментов для улучшения безопасности, надёжности, качества продукта или хотя бы для облегчения работы программисту, но 90% ТЗ требуют от тебя пользоваться инструментами дай бог 10-летней давности. На просьбу внести изменения заказчик чаще всего отвечает "Мы это не знаем, мы с этим не работали".
7. Очень важен выбор площадки для фриланса. Наблюдал за реально хорошими программистами, на пару голов выше меня в плане опыта и навыков, но им приходилось подрабатывать курьерами, ведь их единственной площадкой для поиска клиентов была криво оформленная группа в ВК. Функция площадки - максимизировать совместимость рабочего и клиента, для этого есть фильтры по языкам, опыту, типу задачи и т.д.
Думаю значительная часть из вышеописанного применима к фрилансу в целом.