03.09.2024
Heim / Mobiles Betriebssystem / Was sollte ein Programmierer wissen? Programmieren oder was ein Programmierer wissen muss Welche Kenntnisse ein Programmierer braucht

Was sollte ein Programmierer wissen? Programmieren oder was ein Programmierer wissen muss Welche Kenntnisse ein Programmierer braucht

Welche Kenntnisse sind erforderlich, um ein guter Programmierer zu werden? Gibt es Fähigkeiten, die einen guten Programmierer von einem schlechten unterscheiden? Wenn Sie sich auf die Berufswahl vorbereiten und sich darüber informieren möchten, ist unser Artikel genau das Richtige für Sie.

Um herauszufinden, was ein guter Programmierer wissen muss, müssen wir definieren, was ein „guter Programmierer“ ist. Stereotype haben das Bild eines guten Programmierers mit schlechter Sehkraft, ständiger Teilnahme an Programmier- und Mathematikolympiaden sowie Siegen bei diesen belohnt. Natürlich können Sie die Messlatte so hoch legen, wie Sie möchten, aber wir werden versuchen, eher allgemeine Grundsätze als eine wettbewerbsorientierte Auswahl anzubieten. Beachten wir also die Dinge, die einem nicht idealisierten guten Programmierer innewohnen.

  • Grundlegendes Wissen.

Heutzutage ist es nicht mehr notwendig, einen Abschluss an einer Fachuniversität zu machen, um Programmierer zu werden. Genug, und wenn Sie wirklich wollen, können Sie lernen, selbst zu programmieren. Unter Umgehung technischer Universitäten erhalten Studierende nicht die notwendigen Grundlagen für die Entwicklung in der Programmierung. Natürlich sind fundierte Kenntnisse in Mathematik und Physik nicht das Hauptkriterium bei der Einstellung, aber sie eröffnen einem Programmierer großartige Perspektiven und Horizonte, wissen Sie das. Grundlegende Kenntnisse, beispielsweise über Algorithmen, sind für jeden, der ein guter Programmierer werden möchte, unerlässlich.

  • Analytisches Denken.

Ein guter Programmierer verfügt meist über einen analytischen Verstand und eine analytische Denkweise. Das bedeutet, dass er logisch und konsequent ist, jeden seiner Schritte versteht und erklären kann. Solche Menschen sind in der Lage, in kurzer Zeit die effektivste und optimale Lösung für jedes Problem zu finden. Übrigens kann jeder lernen, analytisch zu denken, indem er beispielsweise logische Probleme löst und spezielle Spiele spielt.

  • Der Wunsch, besser zu werden, mehr zu wissen, ist Selbstentwicklung.

Ohne ständige Weiterentwicklung kann man kein guter Programmierer werden. Der IT-Sektor entwickelt sich unermüdlich weiter: Neue Sprachen, Frameworks und andere Tools erscheinen. Regelmäßige Aktualisierung Ihres Wissens, Zweifel daran, dass Sie wissen, „wie man es richtig macht“, werden Sie zum Erfolg in Ihrer Karriere führen und Sie zu einem echten Profi machen.

  • Liebe zum Programmieren

Wenn Sie jeden Tag zu einem Job gehen, den Sie nicht mögen, müssen Sie mühsamen Code schreiben ... Wir denken, das ist die Angst, die jeder hat: etwas zu tun, das Ihnen nicht gefällt. Hören Sie in sich hinein, um herauszufinden, ob Programmieren wirklich Ihre Leidenschaft ist. Machen wir nur das, was uns gefällt, denn dann klappt es besser.

Im Allgemeinen verstehen wir also, wer ein „guter Programmierer“ ist. Lassen Sie uns nun herausfinden, was ein Programmierer wissen muss.

Welche Kenntnisse braucht ein Programmierer?

  • Englische Sprache.

Sie benötigen Englisch, um Code zu schreiben. Außerdem arbeiten viele Unternehmen mit englischsprachigen Kunden, mit denen Sie regelmäßig geschäftlich kommunizieren. Darüber hinaus gibt es viele gute Bücher zum Thema Programmieren auf Englisch. Daher empfehlen wir Ihnen, Ihre Fähigkeiten täglich zu üben, auf Englisch zu kommunizieren, zu lesen und zu schreiben und englischsprachige Podcasts anzuhören.

  • Programmiersprachen.
  • Algorithmen und Datenstrukturen.

Beim Programmieren basiert alles auf Algorithmen und Datenstrukturen. Wenn Sie eine große Aufgabe in Regale unterteilen können, können Sie bei der Anordnung dieser Regale leicht eine Lösung für jedes Problem finden. Tatsächlich nutzt ein Programmierer tagtäglich algorithmisches Wissen, ohne es zu merken. Welche Probleme er auch löst, er verwendet immer Datenstrukturen. Und um zumindest oberflächlich zu verstehen, was Datenstrukturen sind und wie sie funktionieren, muss man auch verstehen, was Algorithmen sind. Wenn Sie es nicht wissen, wie können Sie dann sicher sein, dass Sie mit der Verwendung eines bestimmten Algorithmus die richtige Entscheidung treffen?

Wir haben über die grundlegenden Dinge gesprochen, die ein Programmierer wissen sollte. Wir hoffen, dass Sie gerne Code schreiben und viel Zeit damit verbringen, ein guter Programmierer zu werden. Wenn Sie Hilfe bei der Schulung benötigen, erwarten wir Sie im SchulungszentrumISsoft.

Unabhängig davon, welche Ausbildung er hat – Techniker oder Ingenieur – um in diesem Beruf erfolgreich zu sein, braucht er eine Reihe besonderer persönlicher Eigenschaften. Erstens muss er in der Lage sein, logisch zu denken und Ereignisse zu berechnen, die viele Schritte voraus sind. Er benötigt außerdem Aufmerksamkeit, Ausdauer und die Fähigkeit, nicht nur kreative Arbeit, sondern auch eher Routinearbeiten zu erledigen. Um eine kreative Idee zum Leben zu erwecken, muss er manchmal mehr als 90 % seiner Zeit mit der Implementierung und dem Debuggen des Programms verbringen. Natürlich kann man in diesem Beruf nicht auf Entschlossenheit und Ausdauer verzichten, ebenso auf ausgeprägte Intelligenz, die Fähigkeit, die exakten Wissenschaften zu beherrschen und die Fähigkeit zur Konzentration.

Um einen Job als Softwaretechniker zu bekommen, muss man über eine mittlere Berufsausbildung verfügen; sehr gut ist es, wenn man auch Berufserfahrung in diesem Fachgebiet hat.

Was sind die Aufgaben eines Softwareentwicklers?

Wie die Tätigkeit eines Softwaretechnikers aussehen wird, hängt natürlich weitgehend davon ab, in welchem ​​Bereich er tätig sein wird und welche Art von Tätigkeit das Unternehmen ausübt. Aber es gibt natürlich allgemeine Anforderungen und Kenntnisse, die ihm an jedem Arbeitsplatz nützlich sein werden. Zunächst muss er über perfekte Kenntnisse über Computer und die damit verbundenen Geräte sowie über Geräte zur Erfassung, Verarbeitung und Übertragung von Informationen sowie über die Regeln für deren Wartung und Betrieb verfügen. Sie benötigen Kenntnisse über Methoden und Technologien der automatisierten Informationsverarbeitung, grundlegende Programmiersprachen und spezielle Softwareprodukte, die in der Arbeit dieses Unternehmens verwendet werden.

IN berufliche Verantwortung Ein Programmiertechniker umfasst in der Regel Arbeiten, um den unterbrechungsfreien Betrieb von Computersystemen und Geräten sicherzustellen, die an Benutzerarbeitsplätzen installiert sind. Er muss vorbereitende Arbeiten im Zusammenhang mit dem Betrieb lokaler Computernetzwerke durchführen, den Betrieb der Arbeitsplätze überwachen und technische Hilfe leisten.

Möglicherweise muss er einfache Dienstprogramme und Arbeitsprogramme entwickeln, um den Produktionsprozess zu optimieren. In manchen Fällen kann ihm die Erstellung einfacher Diagramme anvertraut werden technologische Prozesse Verarbeitung verschiedener Informationsflüsse im Unternehmen oder einzelne Algorithmen zur Lösung der Probleme, mit denen die IT-Abteilung konfrontiert ist. In vielen Unternehmen sind Softwareentwickler damit beschäftigt, Datenbanken zu pflegen, zu füllen, zu speichern und zu verarbeiten. Ein Softwareentwickler in jedem Unternehmen muss in der Lage sein, mit großen Datenmengen zu arbeiten, die Regeln für deren Archivierung und Speicherung kennen und eine Vorstellung davon haben

Ein Programmierer ist einer der wichtigsten Berufe. In den meisten modernen Tätigkeitsfeldern kommen Computer zum Einsatz, für deren praktisch bedeutsame Funktionen für den Menschen und in vielerlei Hinsicht auch für deren Leistungsfähigkeit in erster Linie ein Fachmann mit entsprechendem Profil verantwortlich ist. Welche Fähigkeiten sollte ein Programmierer mitbringen, um seine Probleme erfolgreich zu lösen? Welche Grundkenntnisse braucht man, um ein solcher Spezialist zu werden?

  • Merkmale der von einer Person in einer bestimmten Spezialisierung gelösten Aufgaben sowie die damit verbundenen erforderlichen Fähigkeiten und Kenntnisse;
  • die Besonderheiten einzelner Softwareentwicklungssprachen als Hauptbestandteile des Toolkits eines Programmierers.

Betrachten wir das Wesentliche der genannten Aspekte genauer.

Was sollte ein Programmierer wissen, um seine Probleme zu lösen?

Eine Person, die als Programmierer arbeitet, kann mit einer Vielzahl von Problemen umgehen. Darunter:

  • Schreiben von Computerprogrammen;
  • Entwicklung von Softwarekonzepten;
  • Anpassung von Programmen an verschiedene Benutzerkategorien (hinsichtlich Schnittstelle und Funktionen);
  • Testen und Debuggen von Software.

Lassen Sie uns das Wesentliche dieser Tätigkeitsbereiche von Programmierern untersuchen und erfahren, welche Fähigkeiten sie mitbringen müssen, um die entsprechenden Funktionen erfolgreich auszuführen.

Sprachkompetenz

Das Schreiben von Programmen ist die Hauptkompetenz eines Spezialisten im jeweiligen Profil. „Software“ wird mithilfe spezieller Sprachen erstellt, und eine Person muss über entsprechende Kenntnisse in diesen Sprachen verfügen. Dies ist daher eine wesentliche Voraussetzung für die Kenntnisse eines Programmierers.

Was die erste Aufgabe betrifft, kann Software für den internen Bedarf eines Unternehmens (z. B. zur Organisation der Arbeit mit Datenbanken und Geräten, zur Verwaltung von Finanzströmen) oder für einen externen Verbraucher (im Rahmen eines Unternehmensauftrags oder durch Einführung) entwickelt werden ein Produkt unter einer Handelsmarke auf den Einzelhandelsmarkt bringen).

Welche Programmiersprachen sollte ein Programmierer beherrschen? Dies hängt weitgehend davon ab, welche Art von Software er erstellt. Im Rahmen interner Unternehmensaufgaben arbeitet ein Programmierer am häufigsten mit Datenbanken, Servern, Debugging, Tests und dem Schreiben von Algorithmen zur Gerätesteuerung. Diese Kompetenzen erfordern höchstwahrscheinlich Kenntnisse in universellen, multifunktionalen Sprachen: C, C++, Java, Ruby. Wenn es um die Arbeit mit Datenbanken geht, kommen Sie nicht ohne SQL-Kenntnisse aus. Ein Spezialist benötigt Kenntnisse in Python – einer der am einfachsten zu erlernenden, aber sehr notwendigen und gefragten Sprachen.

Wenn es darum geht, Software auf Bestellung auf dem externen Markt freizugeben, sind die Anforderungen an die Fähigkeiten eines Programmierers in der Regel umfassender, da der wirtschaftliche Erfolg des auftraggebenden Unternehmens von der Funktionalität und Qualität der erstellten Lösungen abhängt. Zusätzlich zu den oben genannten universellen Sprachen muss eine Person Kenntnisse in eher „engeren“ Sprachen beherrschen – wie zum Beispiel C#, Javascript, PHP, Objective-C.

Etwas später werden wir die Merkmale jeder der genannten Sprachen genauer untersuchen.

Mitarbeit am Konzept

Ein Programmierer kann auch kompetent sein, konzeptionelle Probleme im Zusammenhang mit der Erstellung von „Software“ zu lösen. Ein Spezialist des jeweiligen Profils ist häufig in die Diskussion eines Softwareentwicklungsprojekts eingebunden und bewertet die Aussichten für dessen Umsetzung in die Praxis. Beispielsweise kann ein Programmierer Kollegen mitteilen, dass das vorgeschlagene Produkt für einen bestimmten Produktionsprozess nicht ganz optimal ist und sein Design in diesem oder jenem Aspekt verbessert werden muss.

Neben der Lösung von Problemen im Zusammenhang mit dem Softwarekonzept sind auch die Funktionen des Programmierers miteinbezogen hohes Niveau seine sprachlichen Kenntnisse. Insbesondere muss ein Spezialist in der Lage sein, die optimale Sprache im Hinblick auf die Kompatibilität mit dem Projekt richtig auszuwählen. Beispielsweise ist Objective-C, das wir oben erwähnt haben, das wichtigste in der Entwicklung. mobile Anwendungen für iOS, aber was Lösungen für Android betrifft, ist Java eines der optimalsten Tools für deren Erstellung.

Die Tatsache, dass es immer eine Sprache geben wird, die für eine bestimmte Plattform besser geeignet ist als andere, ist einer der Hauptgrundsätze des Berufs, und das sollte ein unerfahrener Programmierer wissen, bevor er eine Karriere beginnt. Daher ist ein guter Spezialist in diesem Profil definitiv ein „Polyglott“ in Bezug auf die Beherrschung von Computersprachen und hat immer die Möglichkeit, den optimalen „Dialekt“ zum Schreiben von Software zu wählen.

Bei der Lösung von Problemen im „konzeptionellen“ Tätigkeitsbereich muss der Programmierer auch über ausreichende Kenntnisse des Hardwaremarktes verfügen: Die von ihm erstellte Software muss höchstwahrscheinlich an den einen oder anderen Computer- oder Gadget-Typ angepasst werden. Der Spezialist muss sicherstellen, dass die Funktionen der von ihm erstellten „Software“ in Bezug auf einen bestimmten Gerätetyp qualitativ hochwertiger ausgeführt werden als bei Lösungen der Konkurrenz.

Alle Komponenten sind wichtig

Jede Art von Software besteht aus zwei Grundkomponenten: Code und Schnittstelle. Das erste Element sind mathematische und logische Algorithmen, die in einer speziellen Programmiersprache geschrieben sind und die Funktionalität des Produkts sicherstellen. Die zweite Frage ist, wie der Benutzer die Fähigkeiten der Software nutzt und wie er die Funktionen steuert. Ein Programm kann in Bezug auf den Code so perfekt sein, wie es möchte, aber eine unbequeme Schnittstelle macht es effektiv. praktische Anwendung schwierig umzusetzen.

Es ist äußerst wichtig, dass die Programmsteuerung den Wünschen der Zielgruppe entspricht. Es ist schwierig, ein Produkt zu entwickeln, dessen Funktionen für jedermann komfortabel zu nutzen sind. Es wird definitiv einen erheblichen Prozentsatz an Menschen geben, die mit der Benutzeroberfläche unzufrieden sind. Das Wichtigste ist, dass der Programmierer die Lösung für „seinen Verbraucher“ anpasst. Wichtig ist, dass er zunächst einmal zufrieden ist.

Machen Sie Tests

Ein Computerprogramm mag einen großen Funktionsumfang bieten und sich durch eine benutzerfreundliche Oberfläche auszeichnen, wenn seine Bedienung jedoch mit ständigen Ausfällen und Irrtümern einhergeht, haben die entsprechenden Vorteile keine Bedeutung. Daher muss ein Softwareentwickler über die Fähigkeiten verfügen, die das Debuggen und das notwendige Testen von Lösungen ermöglichen.

Zur Überprüfung der Korrektheit von Programmen gibt es eine Vielzahl von Softwaretypen. Zu den beliebtesten gehören Device Anywhere, Jira, Android Debug Bridge und iPhone Configuration Utility. Der Programmierer muss in der Lage sein, sie zu verwenden, natürlich nicht mit Kenntnissen der Sprachen, die zum Erstellen von Software für die Plattformen verwendet werden, auf denen Tests durchgeführt werden.

Beachten Sie, dass in moderne Unternehmen Programmierer arbeiten typischerweise in Teams. Daher werden die aufgeführten Kompetenzen am häufigsten auf einzelne Spezialisten verteilt. Die Identifizierung von Fehlern und Problemen in Software kann beispielsweise von einer Person in der Position eines Testers durchgeführt werden. Auch Konzeptentwicklung und Schnittstellenverbesserung werden häufig von einzelnen Spezialisten durchgeführt. Es kommt jedoch häufig vor, dass alle notierten Aufgaben von derselben Person gelöst werden. Dieses Szenario tritt am häufigsten bei kleinen Unternehmen oder Startups auf.

Einige IT-Experten ziehen es vor, diese Spezialisierungen nach Qualifikationsniveau zu ordnen. Daher werden Tester manchmal grundsätzlich nicht als Programmierer angesehen, da sie nicht oft mit „Code“ arbeiten. Allerdings ist die Fähigkeit, Software ordnungsgemäß auf Fehler zu überprüfen, in der einen oder anderen Weise eine wichtige Kompetenz des Entwicklers. Auch wenn es ihm nicht möglich ist, das Programm jemand anderem zum Testen zu geben, muss er die notwendigen Arbeiten selbst durchführen.

Gleiches gilt für die Programmoberfläche. Ein Spezialist mit Designkenntnissen kann Softwareverwaltungsfunktionen höchstwahrscheinlich besser optimieren als ein „allgemeiner“ Programmierer. Aber wenn jemand in einem Startup arbeitet und nicht die Möglichkeit hat, die Hilfe eines Fachexperten anzufordern, muss er alles selbst machen.

Welche Programmiersprachen sollte ein Programmierer beherrschen?

Wir haben oben darauf hingewiesen, dass die Schlüsselkompetenz eines Programmierers die Kenntnis spezialisierter Sprachen ist, die zur Erstellung von Software verwendet werden, und wir haben diejenigen aufgelistet, die auf dem modernen IT-Markt aktiv eingesetzt werden. Für welche Bereiche der Geschäfts- und IT-Entwicklung eignen sich bestimmte Sprachen am besten? Wie kann ein Programmierer entscheiden, welches er studieren möchte?

Zu den beliebtesten Sprachen gehören heute: C, C++, C#, Java, Javascript, Ruby, PHP, Python, Objective-C, SQL. Aus welchem ​​Grund sollte ein moderner Programmierer sie kennen?

In Bezug auf die C-Sprache ist anzumerken, dass sie hinsichtlich ihrer Fähigkeiten eine der vielseitigsten und leistungsstärksten ist. Sie können darauf nahezu jedes Programm erstellen. Diese Sprache- sehr schwer zu lernen, aber das macht es besonders ehrenvoll, es zu wissen. Das Gleiche lässt sich über C++ sagen und hinzufügen, dass es noch universeller und gefragter ist.

Die C#-Sprache wiederum ist nicht sehr nah an C, übernimmt aber viel von C++ und Java. Was seine Anwendung betrifft, ist es für Programmierer, die mit Windows-Software für Unternehmen arbeiten, unverzichtbar.

Java-Sprache Viele IT-Spezialisten bezeichnen es als das Universellste. Es kann auf fast jeder Plattform verwendet werden – Windows, Linux, Mac, mobile Betriebssysteme, Webentwicklung. Die Java-Sprache ist relativ schwer zu erlernen, aber wenn man sie einmal beherrscht, kann ein Programmierer eine Vielzahl von Problemen lösen.

Javascript ist trotz der Namensähnlichkeit nicht direkt mit Java verwandt. Es wird hauptsächlich im Bereich der Webentwicklung eingesetzt. Mit Javascript können Sie eine flexible Konfiguration von Webseiten im Hinblick auf implementieren Aussehen, Steuerelemente, Animationen und andere Funktionen. Daher ist das Erlernen von Javascript für Programmierer, die sich mit der Website-Erstellung befassen möchten, ein Muss. Ebenso ist die Webentwicklung das Hauptanwendungsgebiet von PHP. Es ist nicht schwer zu erlernen und sehr funktional.

Was sollte ein Programmierer über Python und Ruby wissen? Erstens werden sie trotz der einfachen Erlernbarkeit in einer Vielzahl von Bereichen eingesetzt. Beispielsweise wird Python von Entwicklern der größten Online-Konzerne – Google, Facebook – aktiv genutzt. Die Ruby-Sprache eignet sich hervorragend für kleine Startups, aber nicht nur – große Projekte wie Slideshare und Groupon haben beispielsweise Erfahrung damit, sie erfolgreich einzusetzen.

Der Markt für mobile Anwendungen ist heute einer der dynamischsten und profitabelsten. Wenn sich ein Programmierer mit der iOS-Plattform vertraut machen möchte, sollte er die Sprache Objective-C lernen – sie wurde, wie oben erwähnt, speziell für die Entwicklung der entsprechenden Art von Software entwickelt. Wenn jemand näher am Markt für Android-Geräte ist, muss er Java lernen.

Die SQL-Sprache ist eine der am häufigsten verwendeten Sprachen für die Arbeit mit Datenbanken. Es ist relativ einfach zu erlernen, aber sein Wissen wird für einen Spezialisten, der eine Karriere in einem großen Unternehmen aufbauen möchte, immer nützlich sein.

Eine Karriere als Programmierer zieht viele Menschen an. Dies liegt nicht nur an einem hohen Gehalt, sondern auch an der Möglichkeit, an der Umsetzung interessanter Projekte mitzuwirken, die nicht nur für ein einzelnes Unternehmen oder Startup, sondern für das ganze Land und den globalen IT-Markt von Bedeutung sein können.

Lassen Sie uns untersuchen, über welche notwendigen Kenntnisse und Fähigkeiten eine Person verfügen sollte, die Programmierer werden möchte.

Was sollte ein unerfahrener Programmierer wissen?

Es herrscht die weitverbreitete Meinung, dass nur ein Spezialist mit einer mathematischen oder technischen Ausbildung wettbewerbsfähige Software entwickeln kann. Aus diesem Grund müssen Fächer des entsprechenden Profils als Prüfungen für IT-Fachrichtungen an Universitäten abgelegt werden. Es lässt sich festhalten, dass Mathematik kein Kriterium für die Leistungsfähigkeit eines Programmierers ist, sondern ein notwendiges Werkzeug. Kenntnisse in dieser Disziplin garantieren nicht, dass eine Person in der Lage ist, qualitativ hochwertige Software zu erstellen, aber ohne sie wird es für sie schwierig sein, selbst die grundlegendsten Softwareentwicklungssprachen zu beherrschen.

Programmierkenntnisse können nicht nur für diejenigen nützlich sein, die professionell Programme oder Websites erstellen möchten. Ilya Shchurov, außerordentlicher Professor der Abteilung für Höhere Mathematik an der Higher School of Economics und Lehrer am Zentrum für Weiterbildung der Fakultät für Informatik an der National Research University Higher School of Economics, sprach darüber, wie die Fähigkeit, Code zu schreiben kann das Leben einfacher machen. T&P veröffentlicht seine Vorlesungsunterlagen.

Ilja Schtschurow

Außerordentlicher Professor der Abteilung für Höhere Mathematik der Higher School of Economics und Dozent am Zentrum für Weiterbildung der Fakultät für Informatik der National Research University Higher School of Economics

Es gibt viele Klassifizierungen, die Ihnen einfallen, aber zunächst einmal würde ich das Programmieren in zwei große Kategorien einteilen: Programmieren für jemand anderen, bei dem Sie ein Programm schreiben, das die Leute verwenden werden, und Programmieren für sich selbst. Professionelles Programmieren ist meist eine Tätigkeit für andere, und ich würde nicht sagen, dass es immer Spaß macht. Unabhängig davon, ob Sie für das Programm bezahlt wurden oder kostenlose Software schreiben, die jeder nutzen kann, werden sich viele Menschen darüber beschweren, dass etwas bei ihnen nicht funktioniert, und es wird immer mehr von ihnen geben als diejenigen, die Sie loben. Und das Programmieren für sich selbst ist eine sehr angenehme Tätigkeit, und genau das werden wir heute besprechen.

Die diesjährige Umfrage unter professionellen Programmierern ergab, dass 81 % von ihnen das Programmieren als Hobby betreiben. Das bedeutet, dass Programmieren Spaß macht, dass es neben der Arbeit auch Spaß macht. Sie können vorgefertigte Programme verwenden und tun dies in 95 % der Fälle, selbst wenn Sie ein professioneller Programmierer sind. Aber in jedem Bereich gibt es Probleme, die noch niemand zuvor gelöst hat, und die Fähigkeit zum Programmieren ermöglicht es Ihnen, sie viel effizienter zu lösen. Eines Tages war ich in einem Callcenter und wurde gebeten, mich an zwei Tische zu setzen. Die Person, die mir diese Aufgabe zugewiesen hat, erwartete, dass ich anfange, Zellen nacheinander von der ersten Tabelle in die zweite zu kopieren. Ich übertrug ein paar Datensätze, wurde der Sache überdrüssig und schrieb ein kurzes Skript, das Daten aus einer Tabelle nahm und ein Google-Formular für mich ausfüllte, was nicht sehr schwierig ist. Mir gefiel es, aber was mir am besten gefiel, war, dass meine Kollegen mich ansahen, als hätte ich eine Art Magie.

Code zu schreiben ist interessant, aber andererseits auch eine Herausforderung. Sie interagieren mit einem Computer, und zwar sehr häufig, insbesondere wenn Sie ihn beherrschen neue Technologie, eine neue Sprache, sieht so aus. Sie schreiben Code und denken, Sie hätten ihn richtig geschrieben, aber der Computer meldet Ihnen, dass Sie einen Syntaxfehler haben. Tatsächlich habe ich das Semikolon vergessen, es korrigiert und es erneut ausgeführt. Und der Computer sagt: „Klammer schließen.“ Nach mehreren solchen Iterationen beginnt das Programm zu funktionieren und es wird klar, wer der Boss ist. Tatsache ist, dass sowohl die Programmierkenntnisse als auch der Lernprozess einige Nebenwirkungen haben (auch positive).

1. Extreme Führungserfahrung

Computer sind im Vergleich zu Menschen sehr dumm, sie verstehen alles wörtlich, und wenn Sie gelernt haben, eine Maschine zu fahren, werden Sie höchstwahrscheinlich damit zurechtkommen, alle Menschen zu führen.

2. Neuer Informationsansatz

Sie beginnen, die Informationsverarbeitung, die Organisation von Informationsflüssen und das Management anders zu betrachten. Beispielsweise macht man sich beim Sammeln von Datensätzen bereits Gedanken darüber, ob diese für eine spätere automatische Verarbeitung geeignet sind. Dies ist sehr wichtig, wenn Sie eine große Organisation oder ein Projekt mit vielen Informationsflüssen haben, mit denen Sie effizient arbeiten müssen. Wenn Sie Erfahrung mit Automatisierung haben, werden Sie schnell verstehen, in welcher Form Sie Informationen erhalten müssen, um diese dann clever zu verarbeiten.

3. Professionelle Kommunikation

Wenn Sie zumindest ein wenig programmieren lernen, wird es Ihnen viel leichter fallen, mit Programmierern zu kommunizieren. Es ist hilfreich, zumindest auf einer grundlegenden Ebene zu verstehen, wie die IT-Welt funktioniert, und in diesem Bereich ohne Zwischenhändler zu kommunizieren. Menschen lernen Sprachen, um eine andere Kultur besser zu verstehen, und Programmiersprachen lernen Technologie.

4. Verantwortung

Warum kann Programmieren gefährlich sein? Der erste Grund ist „tyzhprogrammer“. Wenn plötzlich jemand herausfindet, dass Sie programmieren können, werden Sie mit Anfragen bombardiert: „Für mich neu installieren.“ Betriebssystem„Bitte, Sie sind ein Programmierer“, „Reparieren Sie den Wasserkocher, Sie sind ein Programmierer“ und so weiter. Das ist nicht das schlimmste Problem, es gibt schlimmere. Beispielsweise beschloss ich im Jahr 2001, in meinem ersten Jahr, als das Internet noch langsam war, dass ich etwas tun musste, um schneller Informationen mit Freunden auszutauschen. Ich dachte: Es gibt Post, und es funktioniert. Dann habe ich für unsere Gruppe ein separates Postfach erstellt und ein Skript geschrieben. Der Roboter ging in diesen Briefkasten, nahm die dort eingegangenen Briefe entgegen und leitete sie an alle weiter, die dieses Ding abonniert hatten. So funktionieren Google-Gruppen jetzt. Wenn ich allen schreiben wollte, schickte ich den Brief an diesen allgemeinen Briefkasten; Wenn jemand antworten wollte, antwortete er, der Brief erreichte alle und es konnte etwas besprochen werden.

Aber jemandes Postfach ist voll, und wenn das Postfach voll ist, sendet der Mailserver als Antwort auf jeden Brief eine Nachricht, die ebenfalls ein Brief ist. Es landete auch im allgemeinen Postfach, mein Skript schickte es an alle Adressen, auch an die, die voll war. Mailserver eine neue Antwort generiert und so weiter. Infolgedessen wurde ich am Sonntagmorgen durch einen Anruf meines Freundes geweckt, der vorsichtig sagte: „Vielleicht gibt es da ein Problem, denn das habe ich.“ Briefkasten 6.000 Briefe, und ihre Zahl wächst.“ Es ist nichts Schlimmes passiert, aber es war ein Problem. Dann wurde mir klar, dass der Code leicht außer Kontrolle geraten und Probleme verursachen konnte, also musste ich vorsichtig vorgehen.

Das ist eine Geschichte wie im „Kleinen Prinzen“: Man ist verantwortlich für die, die man gezähmt hat. Menschen und Prozesse hängen von dem Code ab, den Sie schreiben. Das heißt, sobald Sie etwas Nützliches für andere tun, steigen die Fehlerkosten.

Wie lernt man?

Zu diesem Thema gibt es zwei gegensätzliche Standpunkte. Erstens: Das Erlernen des Programmierens ist sehr einfach; grundlegende Befehle können in drei Tagen beherrscht werden. Es besteht jedoch eine hohe Wahrscheinlichkeit, dass eine Person, wenn sie auf Schwierigkeiten stößt, zu dem Schluss kommt, dass sie getäuscht wurde und Programmieren nichts für sie ist. Programmieren ist nicht einfach, es treten Schwierigkeiten auf. Einer der Gründe dafür ist, dass man beim Programmieren jedes Mal neue Technologien erlernt, was immer mühsam ist.

Die Gegenmeinung ist, dass es keinen Sinn macht, damit anzufangen, wenn man seit der Schulzeit nicht mehr programmiert hat. Auch das stimmt nicht. Das Programmieren ist mühsam, aber das Feld ist offen für den Einstieg, auch wenn Sie es noch nie zuvor getan haben.

Es ist wahrscheinlich, dass das Problem, mit dem Sie konfrontiert sind, bereits gelöst wurde und die Lösung irgendwo liegt. Manchmal ist es schwieriger herauszufinden, wie es funktioniert, als alles noch einmal zu schreiben. Dies ist ein Standard-Programmierproblem, aber dafür haben wir Stack Overflow, eine der wichtigsten Erfindungen der Menschheit auf dem Gebiet der Programmierung. Dies ist eine Seite, auf der Entwickler Erfahrungen austauschen und sich gegenseitig Fragen beantworten. Jeder Teilnehmer hat seinen eigenen Ruf, alles ist sehr gut gestaltet, also einfache Fragen Sie können innerhalb von zehn Sekunden eine Antwort erhalten. Das hilft sehr. In der modernen Welt schreibt man nicht nur ein Programm – man nutzt gleichzeitig eine Vielzahl von Programmen und Tools, die andere Menschen bereits erstellt haben.

Eine gute Möglichkeit, das Programmieren zu lernen, besteht darin, sich ein Problem zu stellen, an dem Sie interessiert wären, und dann zu versuchen, es zu lösen. Natürlich gibt es viele Online-Kurse – lesen Sie die Bewertungen, um den richtigen Kurs auszuwählen. Eine erste Programmiersprache ist schwierig, weil man die Art und Weise, wie man mit Computern interagiert und Prozesse analysiert, neu strukturieren muss. Es gibt keine allgemeingültigen Antworten, alles ist sehr individuell. Manche Leute müssen nur die Dokumentation lesen, sich die Codebeispiele ansehen und schon ist alles klar. In anderen Situationen ist es gut, einen Mentor zu haben, der grundlegende Fragen beantworten kann. Hier ein paar Tipps, die mir wichtig erscheinen.

1. Am meisten bester Weg Um etwas zu verstehen, müssen Sie einen funktionierenden Code finden, ihn ändern und untersuchen, was passiert. Dies sollte erfolgen, nachdem Sie die grundlegende Syntax verstanden haben. Passen Sie den Code an Ihre Bedürfnisse an oder experimentieren Sie einfach.

2. Wenn Sie gerade erst das Programmieren lernen, versuchen Sie nicht, sofort viel Code zu schreiben, bis Sie richtig erklären können, was Sie wollen. Dies ist notwendig, damit der Computer Befehle klar und in kleinen Schritten ausführt. Jedes Mal sollten Ihre Experimente nicht damit enden, dass Sie zufällig auf die richtige Lösung stoßen, sondern dass Sie verstehen, warum und wie sie funktioniert.

3. Machen Sie sich keine Sorgen um Mathematik. Es ist ratsam zu wissen, was ein Rest ist, wenn eine Zahl durch eine andere Zahl geteilt wird, aber es hängt alles von den Aufgaben ab, vor denen Sie stehen. Wenn man Daten geschickt verarbeiten will, dann braucht man natürlich Mathematik in dem Umfang, der für eine solche Verarbeitung erforderlich ist.

4. Hab keine Angst. Wenn Sie anfangen, selbst zu programmieren, werden Sie wahrscheinlich nicht die Art von Code schreiben, die professionellen Entwicklern gefallen wird. Sie werden sagen, dass dies nicht die Art ist, es zu schreiben, dass es überflüssig ist, dass ein solcher Code schwierig zu warten sein wird und so weiter. Sie werden wahrscheinlich Recht haben. Aber wenn Sie für sich selbst schreiben und gerade erst anfangen, ist es normal, dass Ihre ersten Versuche keine Texte auf dem Niveau von Leo Tolstoi sind. Wenn Sie ein Programm schreiben, das funktioniert und Ihr Problem löst, dann ist das gut.

Es besteht die Meinung, dass Programmierer angesichts der Entwicklung von künstlicher Intelligenz und maschinellem Lernen bald nicht mehr benötigt werden: Computer werden lernen, selbst zu programmieren. Aber es scheint mir, dass dem nicht so ist. Solange es Probleme gibt und es notwendig ist, zu erklären, wie man sie löst, wird es Programmierung geben. Natürlich entwickelt sich die Programmierung stark weiter, sie hat sich in den letzten 20 Jahren stark verändert. Aber weil Computer intelligenter geworden sind, gibt es nicht weniger Entwickler – im Gegenteil, es gibt viel mehr von ihnen. Und es scheint mir, dass das Gleiche auch weiterhin passieren wird.

Wie werde ich Programmierer? Was müssen Sie lernen? Die Antwort scheint einfach zu sein: Gehen Sie zur Universität und Sie werden dort unterrichtet. Aber wenn Sie einen Programmierer fragen, wird er sagen, dass das, was sie dort lehren, obwohl es manchmal sogar interessant sein kann, fast nutzlos ist und sehr wenig mit echter Arbeit zu tun hat.

Programmieren ist so etwas wie Alphabetisierung

Unser Beruf ist einer der schwierigsten, aber das Witzigste ist, dass er an sich ganz einfach ist. Es wird sogar ruhig in der Schule gelernt. Um ein einfaches Programm in Pascal zu schreiben, muss ein Schüler nur zehn Operatoren (es gibt nur fünfzehn davon) und mehrere Eingabe-/Ausgabe-, mathematische und String-Funktionen kennen.

Diese Operatoren sind wie die Buchstaben des Alphabets und die Ein-/Ausgabefunktionen Read () und Write () sind wie die ersten Wörter „Mama“ und „Papa“, mit denen ein Kind beginnt, die Welt zu begreifen.

Doch so wie es normale Menschen gibt, die lesen und gelegentlich etwas schreiben können, und es professionelle Schriftsteller gibt, die die Feder beherrschen, gibt es heute Computerbenutzer und Programmierer. Und meiner Meinung nach ist es viel schwieriger, Programmierer zu sein als Schriftsteller. Wir haben immer enge Fristen, wir müssen die Anforderungen launischer Benutzer berücksichtigen und die begrenzten Fähigkeiten langsamer Computer überwinden, wir müssen die Benutzeroberfläche so einfach und bequem wie möglich gestalten, alles gut dokumentieren, damit Benutzer nicht verloren gehen, und versuchen Sie, alles fehlerfrei abzuschließen. Denken Sie auch im Voraus darüber nach, wie sich das Programm in Zukunft weiterentwickeln wird, und stellen Sie sicher, dass neue Funktionen einfach hinzugefügt werden können und dass sie verständlich und vorhersehbar sind. Gleichzeitig muss das Programm selbst im gleichen Stil geschrieben sein, damit andere Programmierer es nach Ihnen herausfinden und weiterarbeiten können.

Für Schriftsteller ist alles viel, viel einfacher. Im Gegenteil: Sie begrüßen es sogar, wenn der Autor seinen eigenen Stil hat und die Handlung verwirrend und unvorhersehbar ist.

Das Einzige, was wir mit Programmierern vergleichen können, sind die Macher von Fernsehserien, die im Wesentlichen auch eine Sendung schreiben, nur für Schauspieler. Drehbuchautoren wie wir arbeiten als Team, sie haben auch Fristen, Veröffentlichungen, sie müssen auch die Feinheiten der Handlung im Kopf durchdenken und sogar die Möglichkeit in Betracht ziehen, die Handlung in der Zukunft zu ändern, neue Charaktere hinzuzufügen oder sie wiederzubeleben die alten.

Es gibt jedoch einen wesentlichen Unterschied: Die Autoren können die Handlung der verfilmten Episode nicht mehr umschreiben. Wenn der Zuschauer etwas falsch verstanden hat, wird er es bestenfalls in der nächsten Folge klären.

Wir Programmierer müssen ständig zum alten Code zurückkehren und etwas daran ändern. Stellen Sie sich einen dicken Roman vor, an dem Sie zehn Jahre lang geschrieben haben und in dem Sie jedes Kapitel immer wieder neu schreiben müssen, um daraus einen Thriller zu machen. Stellen Sie sich nun vor, Sie sind zu einem anderen Projekt übergegangen und müssen nun dasselbe mit einem Text machen, den Sie noch nie zuvor gesehen haben und der von mehreren Autoren geschrieben wurde, jeder von ihnen hat seinen eigenen Stil, und außerdem haben sie alle bereits einen verließ das Projekt.

Daher ist das Erlernen des Programmierens relativ einfach, aber um es professionell zu machen, muss man gigantische Arbeit leisten. Autoren beginnen mit kleinen Kurzgeschichten, beherrschen nach und nach alle Stilmittel, bereichern ihre Rede und lesen selbst viel. Ebenso müssen Programmierer viel programmieren und ihre Fähigkeiten verbessern. Und verdammt, es ist sehr schwierig! Und ständig – über Jahre, Jahrzehnte hinweg – muss man sich verbessern. Es ist ein langer Marathon voller Dornen und Freude. Weder eine monetäre noch eine andere Motivation hilft Ihnen weiter, sondern nur Ihr eigenes Interesse an der Sache.

Ich traf Leute, die das Programmieren auswendig lernten, sogar einige Bücher in diesem Bereich lasen und begannen, nach Arbeit zu suchen, aber gleichzeitig schrieben sie kein einziges eigenes Programm. Können Sie sich einen Schriftsteller vorstellen, der, nachdem er kaum lesen und schreiben kann und keine einzige Geschichte geschrieben hat, bereits einen Job in der Redaktion annehmen möchte? Er weiß noch nicht einmal, ob ihm diese Tätigkeit gefallen wird und ob er Erfolg haben wird, aber er zählt bereits sein Gehalt! Dennoch finden viele dieser angehenden Programmierer immer noch Arbeit. Sie führen es schlecht aus, aber es gibt immer eine Reihe von Aufgaben, bei denen hohe Qualität nicht so wichtig ist.

Nach und nach entwickelten Programmierer ihr eigenes Fachvokabular. Den Vorgang des Schreibens eines Programms bezeichnen sie als Codierung, und Menschen, die irgendwie nur dies beherrschen, werden abwertend als Codierer bezeichnet. Sie können etwas für Sie schreiben, damit es funktioniert, aber dann wird es äußerst schwierig und unangenehm sein, ein solches Programm zu verbessern, und normalerweise ist es einfacher, es neu zu schreiben. Die Programmierer selbst nennen sich Entwickler, und im Laufe der Zeit, nachdem sie Erfahrungen gesammelt haben, beginnen viele, sich Software-Ingenieure zu nennen.

Ok, wenn Programmieren „wie Lesen und Schreiben“ ist, was müssen Sie dann noch wissen und können, um „Schriftsteller“ zu werden?

Nach und nach kristallisierten sich aus einer Vielzahl von Disziplinen, Technologien und Fähigkeiten allgemeine und sich wiederholende heraus, die sich in der Praxis als am nützlichsten für Programmierer herausstellten. Leider ist dies auch nicht konstant. Vor dreißig Jahren benötigten die meisten Programmierer beispielsweise Kenntnisse in Elektronik, Signalverarbeitung und Maschinencode von Prozessoranweisungen (Assembler).

Heutzutage kann man die Arbeit ohne dieses Wissen recht erfolgreich bewältigen, und ich war sogar schockiert, als ich einmal einen leitenden Entwickler traf, der nur vage verstand, wie ein Prozessor funktioniert. Aber im Laufe dieser dreißig Jahre erschien das Internet und die Programme wurden riesig und sehr komplex. Und es sind viele weitere Fähigkeiten und Kenntnisse hinzugekommen, die heute einfach unverzichtbar sind: flexible Entwicklungsprozesse, objektorientierte und funktionale Programmierparadigmen, der Aufbau skalierbarer, hochlastiger und fehlertoleranter Systeme, außerdem muss man lesen und lesen können Arbeiten Sie mit altem Code und verwenden Sie Versionskontrollsysteme. Auf eine so zwingende Fähigkeit wie die Fähigkeit zur Suche im Internet, die es vorher einfach nicht gab, kann man nicht verzichten.

All dies geht über den Rahmen des Programmierens selbst hinaus und bedarf auf einvernehmliche Weise eines eigenen, gesonderten Begriffs. Persönlich nenne ich es der Klarheit halber „Programmierung“ – es ist wie Software Engineering, aber ein weiter gefasster Begriff, der das abdeckt, was uns wichtig ist: Entwicklungsprozesse; die Fähigkeit, Ihr Gehirn beispielsweise so zu programmieren, dass es „in den Fluss kommt“; die Fähigkeit, im Team zu arbeiten oder einen Lebenslauf zu schreiben – im Allgemeinen alles, was wir tun.

Programmiergrundlagen

Ich hatte großes Glück, denn fast sobald ich mich für das Programmieren interessierte, las ich ein erstaunliches Buch – „Perfect Code“. Mir fiel auf, dass es sich nicht um ein Buch über eine Programmiersprache oder -technologie handelte, wie alles andere, was mir bisher begegnet war, sondern um ein Buch über das Programmieren selbst als solches. Dies ist wahrscheinlich das erste Buch, das versucht hat, die Lücken zu schließen, die durch die Lektüre von Algorithmenlehrbüchern, technischen Handbüchern und Dokumentationen entstanden sind.

Und sie sofort beginnt mit Metaphern die dazu beitragen, das Wesentliche unserer Arbeit genauer zu vermitteln. Sie haben bereits etwas über die literarische Metapher gelernt, bei der Programmieren mit Schreiben verglichen wird, aber es gibt auch eine beliebte Metapher, die Programmieren mit dem Bau von Häusern oder sogar dem Bau von Flugzeugen vergleicht.

Es ist kein Zufall, dass sie die Umfrage gewonnen hat: „Wenn Sie als unerfahrener Entwickler in die Zeit zurückreisen könnten, welches Buch über Programmierung würden Sie sich zur Lektüre raten?“

Dann erschienen weitere gute Bücher zum Thema Programmieren:

Und viele andere wertvolle, aber im Allgemeinen decken sie bestimmte Bereiche tiefer ab.

Tatsächlich besteht diese ganze Alchemie des Programmierens aus solchen Dingen, mit denen wir ständig arbeiten und die verstanden werden müssen:

  • Grundlagen der Computertechnik: Grundlagen der Booleschen Algebra, binärer und sechzehnzeiliger Zahlensysteme.
  • Computergerät: Prozessor, RAM, stapeln, Festplatte, Grafikkarte, Bus, Peripheriegeräte (z. B. Tastatur, Maus).
  • Prozessor-Assembler und C – Sie müssen sie auch zumindest ein wenig kennen.
  • Eigentlich grundlegende Kenntnisse: Syntax, wie man eine Variable oder eine Funktion deklariert, wie man eine bedingte if-Anweisung schreibt, Rangfolge von Operatoren, wie man eine Schleife organisiert, wie man Eingaben vom Benutzer empfängt und wie man sie ausgibt. Strukturierte Programmierung – wie man ohne goto schreibt, Schleifen und Rekursion verwendet. Es ist wirklich einfach; fünfzehn Operatoren können schnell erlernt werden. Fast alle heute verwendeten Programmiersprachen sind von C geerbt (C++, Java, C#, PHP, JavaScript), sodass kein Umlernen erforderlich ist. Daher spielt es übrigens keine Rolle, mit welcher dieser Sprachen Sie anfangen zu lernen.
  • Algorithmen: lineare Brute-Force-Suche, binäre Suche, Blasensortierung, schnelle Sortierung usw. Schätzung der Komplexität von Algorithmen.
  • Datenstrukturen: Strings, Warteschlange, Stapel, einfach und doppelt verknüpfte Liste, Arrays usw.
  • Zerlegung, Abstraktion und Programmdesign: objektorientierte Programmierung, SOLID, Entwurfsmuster, UML-Diagramme.
  • Grundlagen der funktionalen Programmierung: Schreiben ohne destruktive Zuweisungen und Schleifen, Arbeiten mit Sammlungen im funktionalen Stil.
  • Kenntnisse der Plattform, Bibliotheken, Technologien: Java Core, Arbeiten mit Dateien, Arbeiten mit dem Netzwerk, Arbeiten mit Arrays, Strings und Sammlungen, Arbeiten mit Speicher und Garbage Collection. Zu all dem gibt es dicke Bücher von den Machern der Technologie selbst (zum Beispiel „Effective Java“).
  • Netzwerkstandards und -protokolle: TCP, UDP, HTTP, HTML, XML, JSON, MIME, RFC.
  • Fähigkeit, sauberen Code zu schreiben: wie man Variablen und Klassen richtig benennt, wie man Code formatiert, wie man Kommentare richtig schreibt (genauer gesagt, wie man sie nicht schreibt :-)). Das Verständnis kommt nach der Lektüre des Buches Clean Code.
  • Fähigkeit, mit Code zu arbeiten: Refactoring (Fowlers Buch), IDE-Hotkeys für Refactoring, Fähigkeit, alten Code zu lesen und zu warten.
  • Technische Praktiken: Unit-Tests, Extreme Programming (XP), kontinuierliche Integration, Versionskontrollsysteme (Git, SVN).
  • Projektmanagement und Prozessorganisation: Wasserfall, Agile, SCRUM, Kanban, Bugtracker, Zeitschätzung für eine Aufgabe.
  • Soft Skills: die Fähigkeit, mit dem Kunden zu kommunizieren und im Team zurechtzukommen, mangelnde Motivation zu überwinden und Prioritäten zu setzen.
  • Datenbanken: SQL, relationale, dokumenten- und graphorientierte Datenbanken, ACID, CAP-Theorem, Abfrageoptimierung.
  • Betriebssysteme: Linux, Programme darauf installieren und konfigurieren, Befehlszeile.
  • Skalierung und hohe Lasten, Überwachung, Protokollierung, Fehlertoleranz.
  • Kryptographie, Schutz vor Angriffen.
  • Benutzerfreundlichkeit, Anforderungserfassung.
  • Englischkenntnisse, Fähigkeit, Dokumentationen klar und prägnant zu verfassen.
  • Die Fähigkeit, Fragen richtig zu formulieren und selbstständig Antworten darauf zu finden.
  • Die Fähigkeit zu lernen und sich gleichzeitig ständig zu verbessern.
  • Die Fähigkeit, andere zu unterrichten, klar zu erklären und auf Konferenzen sogar mit der Öffentlichkeit zu sprechen ...
  • und gleichzeitig nicht verrückt werden.

Wie Sie sehen, kann diese Liste fortgesetzt werden, aber Sie müssen das Wesentliche verstehen: Das Programmieren selbst ist nur ein kleiner Teil. Fast alle anderen Fähigkeiten sind einfach nicht zu erlernen. Zu ihnen gelangt man nur durch umfangreiche Erfahrung und ständige Lektüre der richtigen Bücher, die einem zum Umdenken verhelfen.