Construire un programme complet?


15

Lire des livres, regarder des vidéos et lire des tutoriels est très simple. Prendre des notes et apprendre réellement le matériel peut être un peu plus difficile, mais même dans ce cas, toute personne ayant un cerveau décent et un bon intérêt, c'est assez facile (sans parler du plaisir).

Le fait est que cela ne vous prépare pas vraiment à écrire un programme ou un site Web complet. Disons que vous êtes ces adolescents (uniquement au lycée, pas de vrais cours d'informatique ou de programmation (de niveau collégial), et aucune expérience du monde réel), et vous sortez avec Groupon. Ou même Mark Zuckerburg, sûr qu'il était un génie, et qu'il était un programmeur très compétent ... mais comment?

Comment recommandez-vous que des gens qui ne sont pas nécessairement nouveaux dans la programmation, mais nouveaux dans la programmation de vraies applications et de vrais programmeurs, s'y mettent pour le développer? Quel est le "processus de développement" - en particulier pour les programmeurs individuels (ou peut-être 2-3 adolescents)?

De plus, en ce qui concerne le développement Web, quel est le processus? Quelque chose comme Facebook ou Groupon a-t-il été écrit avec un framework (comme CodeIgniter ou Zend pour PHP)? Ou développent-ils leurs propres cadres? Je ne demande pas comment trouver une bonne idée, mais comment mettre en œuvre de grandes idées de manière efficace? Quelqu'un a-t-il des conseils?

J'ai lu quelques livres sur C et C ++ (principalement le langage de programmation C et le langage de programmation C ++) et pris AP Computer Science (ainsi que lu quelques livres supplémentaires sur Java et OOP). J'ai également lu quelques tutoriels sur PHP (et CodeIgniter) et Python. Mais je suis toujours au lycée, et je ne suis même pas techniquement assez vieux pour travailler en stage pendant quelques mois de plus.


3
Reading books, watching videos, and reviewing tutorials is all very easy. Oui, les lire est facile, les comprendre est la partie difficile.
yannis

@Yannis Rizos En fait, je les comprends, et j'en parle dans la phrase après.
Bob

@Bob apprendre le matériel et vraiment le comprendre est en fait très différent, le second est beaucoup plus difficile. Ma définition personnelle de la «compréhension», c'est quand je peux expliquer le sujet en question d'une manière qu'un enfant de dix ans comprendrait. Rapide, expliquez les "interfaces" :)
Thanos Papathanasiou

1
@ThanosPapathanasiou Logiciel, matériel ou concept OO? :)
yannis

2
@YannisRizos c'est la beauté d'expliquer des choses comme vous le feriez à un enfant de dix ans, vous seriez obligé d'utiliser un exemple simplifié qui résumerait les trois :)
Thanos Papathanasiou

Réponses:


8

Il y a une différence entre simplement savoir programmer et savoir structurer un programme (architecture logicielle).

Un simple livre sur un langage de programmation spécifique ne vous apprendra que les outils que vous pouvez utiliser pour configurer l'architecture d'un programme.

Il existe également des livres qui vous aident avec l'architecture logicielle. Les sujets que vous devriez rechercher sont les modèles de conception , l' abstraction de logiciels, l'architecture / conception de logiciels, et bien d'autres ... ( Les modèles de conception de First First m'ont vraiment ouvert les yeux.)

Pour un ensemble de ressources plus large, cette question pourrait vous intéresser.

La meilleure façon d'apprendre à bien structurer un programme entier est l'expérience pratique de le faire, tout en étant très ouvert aux suggestions et aux nouvelles techniques.


6

C'est le même problème très courant avec le développement de jeux (indépendants): comment terminer.

Autre que de vous assurer que vous pouvez le faire, soit parce que vous avez toutes les connaissances requises ou que vous êtes prêt à apprendre - et vous avez vérifié que d'autres personnes ont vérifié que ce n'était pas impossible ...

... l'essentiel qui rend la "finition" possible est de fixer des objectifs .

Les objectifs sont la cible à atteindre, ils ne doivent pas décrire comment y parvenir, mais quelles sont les exigences / fonctionnalités de base dont vous avez besoin pour considérer une première version de votre application comme "terminée". Aussi, ne fixez pas trop d'objectifs dans le temps.

Écrivez vos objectifs quelque part. Écris le.

Une fois que vous avez fixé des objectifs, vous n'aurez qu'à trouver des moyens de l'atteindre. C'est le fameux "chemin" qui est plus intéressant que l'arrivée. Ne vous inquiétez pas d'atteindre les murs et de découvrir à quel point vous vous tromperez. La plupart du temps, si le sujet est nouveau, vous vous tromperez et vous apprendrez pourquoi et pourrez le faire correctement et vous aurez fait une autre configuration pour vous rapprocher des objectifs.

Même dans la conception de jeux, nous savons que vous devez fournir des objectifs pour vous assurer que le joueur sait, même de manière abstraite, ce qu'il doit accomplir, quelle que soit la façon dont il le fait.


4

Lire beaucoup sur la natation ne fait pas de nageur. Bien sûr, il en prépare un avec les connaissances requises, pour devenir un nageur, vous devez sauter dans l'eau.

Je vois que beaucoup de gens qui l'ont fait que pensé / lu à le faire sont ceux qui réussissent.

Si vous voulez être nageur, sautez simplement dans l'eau et apprenez à nager, si vous voulez être programmeur, commencez à programmer avec une idée et apprenez à programmer.

Je crois que l'essai de Peter Norvig est pertinent ici: apprenez -vous à programmer en 10 ans


2
Bonne réponse! J'ai deux amis qui lisaient (commençaient à lire) des livres sur la programmation en espérant qu'un jour ils se sentiraient prêts à commencer la programmation. Vous ne le ressentirez jamais. Il suffit de sauter dans l'eau froide et de commencer à travailler sur un vrai projet. Si vous pensez que c'est trop complexe, choisissez-en un plus petit. Travaillez dessus jusqu'à ce qu'il soit terminé. Pendant le projet, recherchez des livres et des lectures en fonction des problèmes ouverts qui apparaissent au fur et à mesure.
Giorgio

1

On dirait que vous vous concentrez trop sur les aspects d' implémentation des logiciels, qui ne représentent qu'une fraction de l'ensemble du processus de développement logiciel (voir SDLC). Vous devrez peut-être examiner certaines méthodologies logicielles et apprendre à utiliser celle que vous aimez. En dehors de cela, lisez des études de cas, découvrez les avantages et les inconvénients de chaque outil que vous envisagez d'utiliser également dans votre logiciel, évaluez et continuez à partir de là. Après une lecture rapide de votre question, vous devrez peut-être vous concentrer sur les domaines de l' analyse et de la conception de logiciels, et en apprendre davantage sur UML, la décomposition et peut-être certains modèles de conception .. peut-être ..

J'espère que cela t'aides..


0

Réponse courte, définissez vos objectifs et commencez.

Il n'y a pas de livre ou de moyen de vous enseigner cela, mais une expérience pratique.

Vous ferez beaucoup d'erreurs et gagnerez progressivement de l'expérience. Donc, si vous rencontrez un problème, réfléchissez-y, essayez de trouver une solution et si vous échouez, accédez à stackoverflow et obtenez de l'aide. Ayez également des revues de code le plus tôt possible.

Après avoir terminé votre premier projet et avoir une bonne compréhension des problèmes techniques, commencez à étudier des sujets plus abstraits et plus avancés en génie logiciel.

Avec votre prise de conscience nouvellement acquise des problèmes courants, vous obtiendrez les résumés des livres sur les concepts de code propre et découplé, car votre premier projet sera un gâchis irrémédiable.

Livres (suspects habituels):


0

À ce stade, vous devez arrêter de lire la programmation et commencer la programmation. Si vous souhaitez créer un site Web, suivez un tutoriel pour le cadre de votre choix. Choisissez-en un qui vous plaît. Parcourez le didacticiel pour apprendre à utiliser le cadre, puis commencez à créer votre propre application Web.

Après avoir écrit du code, les livres sur les techniques de programmation auront beaucoup plus de sens.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.