Очевидно, что работа с кодом. Причем, не только выполнение задач, но и умение их ставить самому себе. Как крупные - по структуре, так и мелкие - конкретные. В фирме конкретные задачи джуну будут ставить сеньоры и иже с ними, а заказчик фрилансера может ставить только "задачи результата", т.е. то, что он хочет видеть в итоге (замечательно, если он свои желания понимает сразу...). Соответственно, программисту придется стать "самому себе аналитиком" - то есть, самому для своей работы придется "переводить" пожелания заказчика в ТЗ, в четкие задачи. И, что естественно, надо уметь коммуницировать с людьми (одна из причин, почему не все программисты, даже опытные, хотят идти во фрилансеры). Так же фрилансер сам решает возникающие технические сложности. Самый главный камень преткновения в фриланс-разработке - умение принимать взвешенные решения и брать на себя за них ответственность. Желаю удачи в разработке, если возникнут вопросы, обращайтесь
psy-programmer@yandex.ru