Pegando o gancho da turma falando de T.I., vou deixar meu relato aqui.
Trabalho na área da informática desde os 16 anos e, desde o início queria ser desenvolvedor de software. Estudei por conta própria durante um bom tempo enquanto atuava como técnico de informática e gestor de redes de computadores, fiz faculdade de Sistemas de Informação e continuei estudando, na verdade, estudo todos os dias, pois vejo a necessidade pujante de estar sempre me aprimorando, atualmente estou migrando para Angular 6, sou certificado em Java (J2Se, JEE e WebComponent Developer), já tive experiência com C#, já mexi com ACtionsScript 2.0 dentre outras coisas incomuns... resumindo, sempre estive nesse meio e nunca atuei como funcionário.
Basicamente sou um freelancer que desenvolve o que aparece pra mim, fora minha atividade formal (no caso hoje sou funcionário público) que exerço regularmente.
No início é muito complicado, pois geralmente os clientes em potencial não tem como atestar a competência de qualquer pessoa que diz ser apto a entregar algum projeto, logo o que aconselho para quem quer desenvolver por conta própria é encontrar uma "empresa embrião" para utilizar sua solução mesmo que pague muito pouco por isso (ou até mesmo não pague nada), no meu caso, eu comecei a me envolver com esse tipo de negócio um após o outro, fiz software para controlar o financeiro de uma empresa de transporte coletivo, fiz software para fábricas de roupa (confecções), para uma pequena empresa focada em comércio exterior, para uma advocacia que precisava informatizar as demandas de trabalho entre os sócios, dentre outros...
No início eu trabalhava como um burro de carga, só quem já fez um programa que realmente roda em produção em algum negócio real sabe o monte de ajustes/atualizações/correções e otimizações que são necessários para mantê-lo em perfeito funcionamento, a regra é clara, sistemas crescem e nunca param de mudar. Entretanto a medida que os mesmo vão amadurecendo, menos trabalho é necessário para mantê-los e você pode se dedicar a novos projetos.
O segredo é não parar. Com estes clientes "embriões" rodando seus sistemas, não demora a aparecer demanda de empresas similares, estas você pode praticar o valor de mercado dependendo da solução, e esse tipo de negócio é maravilhoso, pois cada novo cliente é uma fonte de renda nova e o trabalho para mantê-los é cada vez menor pois as estruturas já estão prontas e testadas.
Eu sempre procuro adotar a estratégia de "alugar o software", ou seja, o cliente não me compra o código fonte, ele compra o direito de utilizar a solução, desta forma a cada cliente novo você tem um acréscimo mensal em suas receitas. Também faço trabalho por empreitada, porém embora remunere melhor em menor tempo, depois que se recebe a fonte seca.
Agora, o que eu aconselho a NÃO fazer:
Idéias geniais - No caso é aquele projeto que todo novo desenvolvedor tem de criar uma rede social, ou alguma coisa cool que todo mundo vai usar, normalmente se perde muito tempo codificando, não decola e se começa a decolar os gastos com infra decolam juntos numa proporção de prejuízo para quem não tem bala na agulha ($$$).
Ideias Geniais de Terceiros: Sabe aquele cara que quando descobre que você desenvolve software tem uma ideia genial porém ele não sabe desenvolver? Normalmente esses indivíduos propõem um tipo de sociedade em que o programador morre de trabalhar e o incauto fica responsável por vender a ideia ou pô-la em prática. O resultado é sempre o mesmo (Passei por isso 3 vezes no período da faculdade), o software não vende, o cara que propôs não consegue clientes, a ideia morre e a única pessoa que tem prejuízo é o desenvolvedor, que injetou horas de esforço em um programa que ninguém vai utilizar, se a pessoa tiver muita sorte, no futuro as vezes ela pode usar esse programa como portfólio para tentar trabalhar em algum lugar, mas nada muito promissor.
Criar a solução antes de ter clientes para usá-la: Esta é a anti-ideia do que eu propus inicialmente para quem deseja ser freelancer, pois aqui você assume o risco antes de pagar pra ver, já vi alguns desenvolvedores triunfarem fazendo isso, mas a grande verdade é que o risco não vale a pena justamente por ser cobrado em horas de programação, planejamento, investimento de dinheiro e tempo. Programas/Apps/Sites/ideias que não são utilizados, não valem absolutamente nada.
Criar um App - Essa é polêmica, mas antes de proceder gostaria que quem me lê, fizesse um exercício mental e me dissesse qual APP você tem no celular que não é uma interface para um put* sistema gigante? Aqui eu chuto uma calculadora, uma lanterna ou algo do tipo, pois todo o resto são exatamente estas interfaces ou são "módulos comerciais" que auxiliam o mercado a fluir, como os sites sempre fizeram.
A não ser que você curta fazer joguinhos, não recomendo a criação de nenhuma ideia mirabolante de Aplicativo.
Sobre os "joguinhos", ja me aventurei por aí também e digo, o diminutivo foi só uma forma ilustrativa de tratar o tema, pois é o negócio mais punk de se desenvolver, porque o indivíduo tem que ser multifacetado, não basta ser programador, tem que ser artista gráfico, de som, ter boas ideias e visão, e o pior de tudo, existem centenas de milhões de jogos nas AppStores da vida e, muito provavelmente o seu vai ficar escondido entre eles para todo o sempre antes de você conseguir ver algum retorno financeiro.