- Nome do Projeto: Kodificando
What
- Qual o objetivo deste projeto?
- O principal objetivo deste projeto é fornecer um ambiente (como um website) para que os usuários possam ler sobre, aprender e discutir sobre assuntos relacionados à computação, levando em consideração que esses tipos de conhecimento por muitas vezes não é levado às salas de aula de Ensino Fundamental e Médio
- Quais os maiores desafios, na sua opinião, para se realizar este trabalho?
- Seleção e planejamento dos conteúdos disponibilizados.
- Moderação do fórum de discussões.
- Disponibilização de um ambiente dinâmico onde se possa aprender programação
- Quais os conhecimentos básicos que devemos ter para se implementar este projeto?
- Conhecimento sobre o assunto a ser tratado (Conceitos e termos Básicos de Computação).
- Conhecimentos de Javascript e PHP/Python/Ruby
- Noções de HTML e CSS.
- Quais soluções similares existem no mercado (Benchmarking)?
- Abordando Programação:
- Similares:
- Code.org: http://code.org/
- Codeacademy: http://www.codecademy.com
- Um similar brasileiro: http://codeclubbrasil.org/
- Páginas que podem vir a interessar:
- http://tryruby.org/levels/1/challenges/1 (Ruby Básico)
- https://www.khanacademy.org/cs (Fundamentos de Programação)
- http://codehs.com/ (Abordagem mais simples)
- http://scratch.mit.edu/ (Abordagem mais simples)
- https://www.coursera.org/ (Site com cursos de várias universidades renomadas)
- Uma "alternativa" Brasileira: http://www.aprenderprogramar.com.br/
- Sobre hacking e segurança: https://www.hackthissite.org/
- Sobre computação: https://www.udacity.com/course/cs101
- Sobre computação: https://class.coursera.org/cs101-selfservice/class/index
Why
- Porque é interessante desenvolver este projeto?
- É interessante porque, acima de tudo, esses conhecimentos não são tão difundidos, e atualmente, para os obter é necessário um estudo mais especializado sobre o assunto. Enquanto isso, a necessidade cresce cada vez mais, e o número de profissionais é cada vez menor comparando com a demanda.
- Algumas citações:
- "Todos nesse país deviam aprender como programar um computador porque isso te ensina a pensar" - Steve Jobs
- "Aprender a escrever programas faz sua mente crescer e te ajuda a pensar melhor, cria uma maneira de pensar que eu acredito que ajude em todas as áreas" - Bill Gates
- Algumas citações:
- Porque deve usar a tecnologia escolhida?
- Deve-se utilizar HTML e CSS para poder marcar melhor os componentes na página e uma linguagem de programação para que o aplicativo interaja de fato com o usuário, as principais opções são: Python Django, uma plataforma muito utilizada para aplicativos WEB que utiliza uma linguagem que vem crescendo cada vez mais - Ruby on Rails, outra plataforma também amplamente utilizada, inclusive por grandes aplicativos (Exemplo: Twitter), feita em uma linguagem um pouco mais antiga e um pouco mais consolidada no mercado. As duas plataformas são fundadas em conceitos e paradigmas que são importantes e consolidados, como:
- "Active Record Pattern" - que consiste em armazenar os dados em bancos de dados
- CVC ("Convention over configuration" - Convenção sobre configuração) - que visa ganhar simplicidade sem perder flexibilidade
- DRY ("Don't repeat yourself" - não se repita) - visa a não repetição das linhas de código
- MVC ("Model-View-Controller" - modelo-visão-controlador) - tem o intuito de separar a informação da interface com a qual o usuário interage
- Deve-se utilizar HTML e CSS para poder marcar melhor os componentes na página e uma linguagem de programação para que o aplicativo interaja de fato com o usuário, as principais opções são: Python Django, uma plataforma muito utilizada para aplicativos WEB que utiliza uma linguagem que vem crescendo cada vez mais - Ruby on Rails, outra plataforma também amplamente utilizada, inclusive por grandes aplicativos (Exemplo: Twitter), feita em uma linguagem um pouco mais antiga e um pouco mais consolidada no mercado. As duas plataformas são fundadas em conceitos e paradigmas que são importantes e consolidados, como:
Who
- Quem pode se beneficiar deste projeto?
- Todos que tiverem interesse sobre o assunto e em aprender.
- Quem poderá operar o sistema?
- Qualquer pessoa com um dispositivo com acesso à internet
- Quem deverá participar do desenvolvimento do sistema?
- Pessoas que compartilham da ideia inicial do projeto e com capacidade e disposição para construir tal ambiente
Where
- Onde os dados serão inseridos?
- Por ser um website, os dados serão inseridos no servidor através de um navegador.
- Onde os dados serão externalizados, publicados?
- Os dados serão publicados e mostrados em um navegador
- Onde esta aplicação poderá ser usada?
- Esta aplicação poderá ser acessada em qualquer dispositivo com uma conexão à internet.
- Onde os dados serão armazenadas?
- Os dados serão armazenados em um Banco de Dados SQL.
- Onde o software deverá ser hospedado?
- Em uma máquina dedicada e alugada, possivelmente também fazendo uso de Computação em Nuvem para alguns recursos.
When
- Em quanto tempo pretende desenvolver o sistema?
- Em cerca de 3 meses acredita-se que seja possivel obter um protótipo simples, mas o desenvolvimento do sistema seria continuado em quanto ele funcionasse
- Quais serão as fases e em quanto tempo cada uma?
- Primeiro deve-se estudar e escolher os temas a ser tratados e utilizados (Consideramos 2 meses)
- Em seguida pode-se fazer o protótipo (Cerca de 1 mês)
How
- Como será dividido o desenvolvimento do sistema?
- O Sistema será desenvolvido utilizando conceitos básicos de HTML e CSS, utilizando jQuery (Javascript) e fazendo o uso de no mínimo uma das seguintes frameworks: CakePHP (PHP), Django (Python) e Ruby on Rails (Ruby)
- Como será feita a entrada de dados?
- A entrada de dados no sistema será feita através de um navegador de internet
- Como será feita a saída de dados?
- A saída de dados no sistema será feita através de um navegador de internet
- Descreva a 1a. funcionalidade?
- Sistema de Cadastro/Login
- Descreva a 2a. funcionalidade?
- Fórum de Discussões (criar novo tópico, responder, etc...)
- Descreva a 3a. funcionalidade?
- Acesso ao banco de artigos, notícias, aulas, perguntas/respostas, etc...
- Descreva a 4a funcionalidade?
- Salvar junto à pagina do usuário tudo que já foi comprido pelo mesmo
- Descreva a 5a funcionalidade?
- Acesso à ambiente dinâmico de programação (junto com alguns tutoriais)
How much
- Quanto deverá custar o sistema?
- O Custo inicial não deve ser uma quantia muito alta, seria o custo de uma máquina dedicada e de um domínio e hospedagem de internet.
- Quantas pessoas deverão ser usadas?
- De início não são necessárias muitas pessoas, mas como o projeto pode vir a tratar sobre vários assuntos específicos, seria interessante futuramente terceirizar essas áreas para seus respectivos profissionais. De maneira geral: Em torno de 2 programadores Front-End e 2 Back-End, sendo 1 para tratamento do Banco de Dados e 2 "Idealizadores" (responsaveis pelos conteúdos e moderação/gestão do aplicativo)
- Qual deverá ser o preço de aquisição do seu software para o usuário final?
- Inicialmente, deverá ser gratuito para o usuário, será possivel talvez cobrar uma pequena taxa para serviços mais especializados
Diagrama Entidade-Relacionamento
Criticas
- Definir com mais clareza quais as abrangencias da aplicação
EX: esta aplicação ao final será composta de um forum de discussão, ambiente de programação e 'banco de códigos', etc....
- Qual das "partes" da aplicação será desenvolvida primeiro?
- Quais os especialistas necessários?
Ex: um para banco de dados, 2 para design, um para engenharia de software..
