Ein Gespräch mit Jon Skeet: Der Chuck Norris der Programmierung, auf dem Yellow Duck Podcast

12. April 2018

Wussten Sie, dass wenn Jon Skeets Code sich nicht kompilieren lÃ?sst, der Compiler entschuldigt sich? Was ist mit der Tatsache, dass, wenn Jon eine Suche bei Google durchführt, das einzige Ergebnis "Ich bin gleich wieder da" lautet? Quelle: Stapel-Überlauf

For those of you who don’t know, Jon Skeet is a Senior Software Engineer at Google in London, UK. While some of the wilder claims about him still need to be verified, what is definitely true is that he is the only user of Stack Overflow with a reputation over 1,000,000.

Seit 1998 hat dieser Kerl über 34.000 Antworten auf die Website gegeben und über 230.000.000 Views generiert! Was fragen Sie also den Mann, der bereits jede erdenkliche Frage beantwortet hat?

Finden Sie es heraus, indem Sie unserem Gespräch mit Jon Skeet zuhören

Marcin Kraszewski durfte sich mit Jon zusammensetzen und den Mann etwas Neues fragen. Es stellte sich heraus, dass er noch mehr Antworten zu geben hat, darunter einige, die Sie sonst nirgendwo gehört haben.

Kennen Sie die Geschichte, wie Jon in seine Software-Entwicklung eingestiegen ist, indem er ein Computerspiel entwickelt hat? Was ist mit dem herausforderndsten Problem, das Jon als Ingenieur zu lösen hatte?

Our conversation covers all this as well as the biggest changes in the software industry in the last decade, what developers used before Stack Overflow, how much longer Jon plans on contributing to Stack Overflow, a comparison of C# and Java, and Jon’s favorite conferences.

Dies ist eine einmalige Gelegenheit, an einer zwanglosen Erkundung der persönlichen Reise eines der berühmtesten Namen der Softwarebranche teilzunehmen.

Sie können Jon hier folgen:

Aber hören Sie sich zunächst unser Gespräch mit Jon im Yellow Duck Podcast an

Nachstehend finden Sie die schriftliche Niederschrift unseres Gesprächs.

MARCIN: Ok, herzlich willkommen zum Yellow Duck Podcast. Ich habe heute einen ganz besonderen Gast bei mir. Ich werde mich mit Jon Skeet unterhalten, falls Sie nicht wissen, wer Jon Skeet ist. Er ist einer der wichtigsten Mitwirkenden beim Stack Overflow, vielleicht sogar der wichtigste Mitwirkende beim Stack Overflow, was, falls Sie Stack Overflow nicht kennen, erstaunlich ist. Es ist im Grunde genommen eine Website, auf der man Antworten auf fast alle Fragen bekommen kann, die nicht nur mit Software-Entwicklung und Technologie zu tun haben, sondern auch mit Stack Exchange, einer Art Mutterseite von Stack Exchange, auf der man Antworten auf Fragen über alles Mögliche bekommen kann, von Improvisationskomödie bis hin zu Wissenschaftsastronomie und so weiter. Also Jon willkommen.

JON: Ich danke Ihnen vielmals. Ich freue mich, hier zu sein.

MARCIN: Vielen Dank, dass Sie mich hier auf dem Yellow Duck-Podcast begleiten, ich habe eine Reihe von Fragen an Sie. Aber zuerst möchte ich natürlich zu der Frage Nummer eins kommen, die mir irgendwie im Kopf herumgeht. Ich habe ein wenig über Ihre Aktivität zu StackOverflow recherchiert, die weltbekannt und sehr umfangreich ist. Und meine Frage ist, dass Sie Ihre erste Frage zum StackOverflow am 26. September 2008 um 12:11 Uhr nach den Informationen, die ich bekommen konnte, beantwortet haben. Erzählen Sie mir etwas über die Umstände dieser ersten Antwort, und wir wissen, wie Sie das gemacht haben. Wie haben Sie begonnen, Stack Overflow zu verwenden? Wie sind Sie zu dieser Antwort gekommen? Wie sind Sie zu dieser Antwort gekommen? Sie wissen, wie alles begann.

JON: Es war also in gewisser Weise wirklich eine Übung in Narzissmus. Das erste Mal hörte ich von Stack Overflow auf dem Blog von Sara Chip. Sie hatte bereits 2008 eine ausführliche Rezension der ersten Ausgabe von C# geschrieben, was sehr, sehr lange her zu sein scheint, und ich las ihre Rezension und dann las ich einige ihrer anderen Blogeinträge, in denen Stack Overflow erwähnt wurde. Also dachte ich mir, ich schaue mal rein und schaue mir Stack Overflow an, um Fragen zu beantworten. Da ich also keine Ahnung hatte, was die Website wirklich war, suchte ich nach detaillierten Fragen zu C#, insbesondere ob es welche gab, und es gab hier und da ein paar Erwähnungen, und es gab Fragen zu C#, und ich dachte, ich kann das gut beantworten, also werde ich sie beantworten, und von da an ging alles weiter. Ich hatte in den letzten zehn Jahren viele Newsgroups, sowohl C# als auch Java Newsgroups, geschrieben, also schien dies nur ein Schritt in der Entwicklung dieser Newsgroups zu sein. Die HTML-Basisforen-Software hatte mir vorher noch nie gefallen. Aus verschiedenen Gründen, aber nichts war für mich auch nur annähernd so nützlich wie Newsgroups, wohingegen Stack Overflow das komplett ändert

MARCIN: Awesome and we’re all very thankful for your contribution I think of about over 35,000 questions you’ve answered which is an amazing contribution to the community. So we’re obviously everybody’s very grateful for that. And I think it’s really interesting that you sort of started like, in a sense as you said just like as a general user you just found out about his website and decided to answer question can you go sort of to the next that what made you answer you know the second the third the fourth that the hundreds of questions later when did you feel that this is really something that you want to do. Maybe a specific focus on Stack Overflow but in general. When did you feel this sort of passion to really you know to answer a lot of these questions like you just had this energy.

JON: so that started sort of 10 years before while I was still in university and answering Java questions on newsgroups long before C# was even around and getting into discussions which aren’t as relevant for Stack Overflow but I posted an awful lot on the Java newsgroups and a lot of that was I enjoy helping people basically and this isn’t purely altruistic. I enjoy helping people because it improves me as a programmer it definitely improves me as a communicator which I feel is incredibly important in Software engineering, and then there’s the effect of not just helping the person who asked the question but hopefully helping people later on which is what Stack Overflow is really optimized for. And I think some of the problems where people ask bad questions is that they’re thinking about just their immediate need rather than thinking how can I ask a question which will help me but also help people coming in later on. And if you if you start from that perspective then that’s what the Stack Overflow community is kind of built around and the number of impressions that good questions can get is huge so you can help the whole world community of programmers which I think is amazing

MARCIN: Auf jeden Fall. Es ist also eine großartige Idee, die, wie Sie wissen, ich denke, es war wirklich etwas, das geschaffen werden musste. Sie wissen, dass die Leute bereit waren, ihr Wissen mit anderen zu teilen, und Stack Exchange und Stack Overflow wurden genau zur rechten Zeit geschaffen, als Sie sagten, es gäbe andere Wege, Wissen zu teilen. Aber ich denke, dies ist vielleicht die zugänglichste für jeden Benutzer da draußen, der ein paar Fragen beantwortet haben möchte. Es ist ein sehr effektiver Weg, und ich denke, er ist auch wirklich gut moderiert, zumindest für die lokalen Anhänger.

JON: Ja. Wobei der Grad der Moderation definitiv ein wunden Punkt bei vielen Anwendern ist, nicht nur bei einigen wenigen, die versucht haben, die Frage zu stellen, und sie haben sie schlecht gestellt, weil sie nicht genug Details oder viel zu viele Details oder. Es gibt zig verschiedene Arten, wie man eine Frage schlecht stellen kann, und ich glaube, dass die Moderation einer der Höhepunkte der Site ist, dass sie versucht, die Qualität der Site aufrechtzuerhalten und sie so nützlich wie möglich zu halten, aber es ist definitiv ein wunder Punkt, und ich denke, es gibt Arbeit zu tun, was die Kommunikation der Ziele der Site betrifft, damit alle an einem Strang ziehen können. Es ist nicht so, dass jeder. Nun, ich bin mir sicher, dass es ein paar Leute gibt, die entweder absichtlich schlechte Fragen stellen oder aus Spaß an der Freude an der Sache garstig moderieren. Es wird immer ein paar Idioten geben, aber ich neige dazu anzunehmen, dass die meisten Menschen keine Idioten sind. Sie sind nett, sie geben ihre Zeit und sie wollen eine qualitativ hochwertige Website.

Und wenn wir einfach dafür sorgen können, dass alle auf einer Linie sind, dann wird das zu einer besseren Erfahrung für alle führen. Es gibt also noch ein wenig Arbeit zu tun, was die Kommunikation und alle möglichen Dinge betrifft, die sehr schwierig sein können, denn wenn man sofort an einem Problem festhängt und sich noch nicht registriert hat oder eine Frage oder irgendetwas zum Thema "Stack Overflow" gestellt hat, bevor die erste Versuchung besteht, dann sieht man eine Textwand, die besagt, dass dies die Art von Frage ist, die man stellen sollte und wie man die Dinge angehen sollte und Sie denken einfach, dass es mir egal ist, dass ich meine Frage jetzt stellen möchte, während ich eigentlich, wenn Sie sich fünf 10 Minuten, ja sogar eine halbe Stunde Zeit nehmen, um die Website zu durchsuchen und die verschiedenen Hilfsressourcen zu durchstöbern, einen sehr langen Blog-Beitrag darüber geschrieben habe, wonach ich in einer Frage suche, die den Leuten helfen soll, Fragen zu stellen, aber ich kann die Frustration verstehen und warum die Leute all das einfach überspringen und es richtig sagen. Lassen Sie mich nun meine Frage stellen. Ich gehe davon aus, dass ich weiß, was ich tue, und es ist sehr bedauerlich, dass sie dadurch etwas über die Erfahrung erfahren, und wenn die Leute die Hilfe, die ihnen gegeben wurde, nicht lesen, dann kann keine Verbesserung dieser Hilfe wirklich darüber hinwegkommen, dass sie sie nicht lesen. Es ist also knifflig.

MARCIN: Die Sache mit dem Stapelüberlauf, die interessant ist, scheint zu sein, dass ich jetzt zumindest weiß, dass alle Daten zur Verfügung stehen. Als ob man einfach den gesamten Datensatz herunterladen könnte und man denkt, das sei wichtig.

JON: Auf jeden Fall. Ja, und das war vom ersten Tag an ein Tor.

MARCIN: Sie denken, dass dies ein wichtiger Teil der Tatsache ist, dass Stack Overflow nach wie vor beliebt ist.

JON: don’t know it’s definitely it’s a feature. It’s lovely that for example, I think that all the Stack Overflow questions have been imported into Google BigQuery which means people can run queries over all kinds of data and there’s a Stack Overflow. Data analysis tools are available that way as well and so there are all kinds of data mining that you can do on Stack questions and various data scientists have done exactly that. So it’s very cool on that front. It also creates a sort of feeling of trust that Stack Overflow doesn’t own your contributions. Everyone does they’re all licensed appropriately so even if Stack Overflow itself as a company went belly up then the information wouldn’t be lost but I don’t know quite how important it is I think it varies in importance depending on who you ask but the importance to the data science community. I suspect not being a member of that community particularly I suspect that’s been a real treasure trove.

MARCIN: Ich meine, ich habe von einigen Projekten gehört, in denen versucht wird, Stack Overflow zu verwenden, um einen Algorithmus für maschinelles Lernen so zu trainieren, dass man tatsächlich gerne Software schreibt, oder zumindest kennt man sich mit Debugging-Software aus, oder das ist mit Sicherheit eine interessante Nutzung der Daten. Was nun zum Beispiel Stack Overflow betrifft, so gibt es wahrscheinlich eine Menge Fragen, die sich wirklich sehr ähnlich sind und fast die gleiche Frage, aber nicht ganz. Sehen Sie in naher Zukunft eine Lösung, bei der vielleicht etwas maschinelles Lernen oder etwas anderes eingesetzt wird, um irgendwie die Menge an doppelten oder nahezu doppelten Inhalten zu reduzieren?

JON: Richtig, also versucht Stack Overflow bereits, ähnliche Fragen zu finden und schlägt sie vor, während Sie die Frage stellen: "Haben Sie sich diese Dinge angesehen? Wir denken, dass sie ähnlich sind." Und selbst nachdem Sie die Frage dort gestellt haben. Es gibt eine Liste auf der rechten Seite, die Ihnen potenzielle Duplikate oder verwandte Fragen anzeigt, und es ist relativ einfach, eine Frage als Duplikat zu schließen, denn wenn Sie ein goldenes Schild haben, dann können Sie die Dinge ganz einfach schließen, indem Sie sich den so genannten Duplikatshammer ansehen. Das hilft also dabei, Fragen sehr schnell zu schließen, wenn es sich um Duplikate handelt, ob es noch weiter rationalisiert werden kann... Es ist schwierig, weil jedes maschinelle Lernen nie zu 100 Prozent genau sein wird, so dass man die Leute nicht daran hindern möchte, Fragen zu stellen. Selbst wenn Sie den starken Verdacht haben, dass es sich um ein Duplikat handelt. Man braucht fast ein "Bist du dir wirklich ganz sicher? Haben Sie sich all diese Dinge wirklich angesehen, aber ich weiß nicht, ob sich das alles als etwas weniger problematisch anfühlt. Der Aspekt des Duplikats als Leute, die Fragen stellen und nicht einmal genügend Informationen oder die richtige Art von Informationen liefern, um sagen zu können, ob es sich um ein Duplikat handelt oder nicht. Und ich hoffe, dass. Ich weiß, dass Stack Overflow einige Iterationen einer Art von Assistenten durchlaufen hat, die Fragen stellen und sagen: "Wie sieht Ihr Code aus, welche Sprachen verwenden Sie? Haben Sie sich ein kurzes, aber vollständiges Beispiel ausgedacht, das das Problem veranschaulicht? So etwas in der Art. Es ist unklar, was genau funktionieren wird, aber ich weiß, dass das Team hart daran arbeitet, die Erfahrung des Fragenstellens zu verbessern, denn im Grunde beruht Stack Overflow darauf, dass gute Fragen gestellt werden.

MARCIN: Auf jeden Fall und weil ich davon ausgehe, dass es einfach immer Fragen geben wird, die gestellt werden müssen, egal, wie lange es die Technologie schon gibt. Was ist der Hauptgrund? Was treibt Sie an? Sie wissen, dass es immer neue Fragen zu stellen gibt, sogar zu C#, von dem Sie wissen, dass Sie es bereits beantwortet haben, und zu verschiedenen anderen Themen wissen Sie 35.000 Antworten, aber es gibt immer noch mehr. Ich vermute, das liegt an der Natur der Softwareentwicklung oder daran, dass man einfach nicht alles abstrahieren kann.

JON: Well it’s multiple things partly it’s that the language is changing so I’m writing currently about C# 7.2 and having to learn new things myself so that I can then write about them. So it would be entirely natural for people to be asking questions about C# 7.2 or you know other things that are fairly new C# 7.0 is still reasonably new. So as languages evolve and new frameworks and libraries and all kinds of things. There will always be new areas for people to ask questions about. And then there are people asking questions about existing areas and some of those questions will be new and some won’t be new and some may be disguised new questions. So for example in C# the exact way that lambda expressions capture variables particularly for each iteration variables change in C# 5 and that caused a load of questions before C# 5 when it wasn’t ideal the way that the way that it worked. And a lot of those questions are effectively duplicates of each other but actually I answered quite a few of them because there are lots that don’t don’t look obviously related. It’s only when you know the answer that you can see are these two things are the same problem just in disguise. So there will always be things where only the Answerer knows that actually you are facing the same problem as someone else and whether those questions should be closed as duplicates is probably a matter for debate. But yeah there will always be new people coming to Software engineering which is a fantastic thing and some of those I think are treating Stack Overflow as more of a learning resource. I would encourage them to I think Stack Overflow is a great troubleshooting resource. It’s not a great way of learning a language sort of from scratch you can’t say take a Java compiler or even an IDE and Stack Overflow and learn Java from scratch that way. That’s just not going to be an efficient way of learning the language. Whereas a book or a tutorial is a much more structured approach and then Stack Overflow is great for. Well there was this example and I expected it to do this and it did something else instead. And here’s why I think it should behave this way and it’s actually behaving a different way. Could somebody explain exactly what’s going on here. That kind of questions are great for Stack Overflow so it’s definitely a sort of adjunct to other learning tools but I don’t think it’s great as an initial learning tool. Or as the only way of learning a language but there will always be people who are learning things for the first time. And as I say if you’re relatively new to a language or technology then it will be a lot harder for you to find. Related questions because you don’t even necessarily know exactly what your question relates to at the time so I don’t expect the set of or the stream of questions to dry up any time soon. And that’s partly because of new people partly because of new technologies and partly because of the old hands who are doing things that they haven’t done before so I could still be writing in C# and ask a new question about C# and I about half my questions I think are around C# itself which may surprise people. There’s nothing like knowing a language reasonably well for being aware of things that go wrong or are really unexpected and then it’s really helpful to ask on Stack Overflow and say hey I really expected this to happen and I have good reason to expect that because of all my previous experience but it does mean that here you end up asking questions on technologies that you wouldn’t expect to normally

MARCIN: And on Stack Overflow the idea of you know finding an answer online is that how long has it been sort of an integral part of software engineering. Because it used to be you were kind of stuck with let’s say that let’s say that you had documentation maybe a couple a couple message boards a couple of newsgroups. But it seems like a lot of professionals are using stock overflow on a regular basis and a lot of their projects and that’s probably why Stack Overflow ended up sort of addressing that with their licensing and saying that you have to essentially mention that it was from cycles where you took the code. So I guess in your opinion how has software engineering and Stack Overflow changed over the years.

JON: Ich denke also, dass sich das Software-Engineering zum Teil deshalb geändert hat, weil wir alle mehr Technologien verwenden und weniger gut dokumentierte Technologien einsetzen, so dass heutzutage jeder Bibliotheken von Drittanbietern links und rechts und in der Mitte verwendet, oder tun es die meisten Leute, und die Bibliotheken kommen mit einer Vielzahl von Dokumentationsgraden und in gewissem Maße hat der Stapelüberlauf in einigen Situationen fast die Dokumentation übernommen. Und es gab das Dokumentationsprojekt Stack Overflow, das schließlich abgebrochen wurde, weil es für die Situation einfach nicht ganz funktionierte, aber sicherlich gehört Stack Overflow heutzutage mehr und mehr zum täglichen Handwerkszeug eines Software-Ingenieurs. Und das liegt zum Teil daran, dass Stack Overflow so schnell reagiert. Ich erinnere mich also an das Jahr 2008 2009, als Stack Overflow noch sehr jung war. Jeff Atwood sagte, dass Sie wissen, dass Sie manchmal eine Frage stellen und 20 Minuten warten müssen, um eine Antwort zu erhalten. Und ich war einfach hin und weg, als ich an 20 Minuten dachte, das ist eine so unglaublich kurze Zeit. Und er hat Recht, wenn man eine gute Frage stellt, bekommt man normalerweise innerhalb von 20 Minuten eine Antwort. Und das war früher in den Newsgroups nicht der Fall. Ich bin mir nicht sicher, ob es nur an der Anzahl der Leute liegt, die etwas lesen, oder einfach daran, dass die Welt schneller voranschreitet, aber sicherlich hat man oft einen ganzen Tag gewartet, bevor man in einer Newsgruppe eine Antwort erhält, während ich heutzutage dazu tendiere, festzustellen, dass es länger dauert, eine Frage zu schreiben, als es dauert, eine Antwort zu erhalten. Deshalb werde ich selten weniger als eine halbe Stunde brauchen, um eine Frage zu schreiben, denn ich recherchiere und baue ein vollständiges Beispiel auf und stelle es so klar wie möglich, und das alles braucht Zeit. Aber auf jeden Fall innerhalb einer halben Stunde. Wenn ich also eine halbe Stunde gebraucht habe, um die Frage zu schreiben, dann habe ich weniger als eine halbe Stunde später zumindest Kommentare, die sagen: Ja, das sieht wirklich komisch aus. Das ist neu. Ich bin mir nicht sicher, was hier vor sich geht, und ich habe auch keine wirkliche Antwort, die die Lösung des Problems erklärt. Also, ja, die Tatsache, dass die Latenz so niedrig ist, macht das Problem so viel praktikabler. Und das ist, wenn Sie eine neue Frage stellen müssen. In 90 Prozent der Zeit, in der ich mit einem Problem konfrontiert bin, bei dem mir Stack Overflow hilft, muss ich die Frage überhaupt nicht stellen, weil jemand anderes sie schon einmal gestellt hat. Ich stelle fest, dass ich insbesondere bei Bereichen, mit denen ich weniger vertraut bin, wie Python- oder Bash-Skripts oder so etwas, sehr oft etwas über Stack Overflow recherchiere und die Antwort auf genau die Frage finde, die ich haben wollte. Das ist großartig.

MARCIN: Finden Sie, dass Menschen, die eine Art von Entwicklung anbieten, die sie entdeckt haben, mehr darüber lernen wollen, dass sie gerade die erste Sprache lernen. Finden Sie, dass sie nicht genug Zeit in das Erlernen der Hauptsprache investieren? Wie ich schon sagte, die Kerndokumentation und das wirkliche Kennenlernen der Sprache, bevor man zu so etwas wie Stack Overflow übergeht?

JON: I think there’s it’s hard to say what proportion of people do that but I definitely see some people doing that and not even getting to know the language and getting the tools. But I feel that there’s a lack of teaching within schools universities of diagnostic process and this is why I have a sort of bit of a rant about certainly in the UK there are far more computer science courses in software engineering courses and for all the fact that I’m I’m very grateful that there are computer science courses and we definitely need computer scientists. There’s probably more of a need for Software engineers who don’t really need to know the details of how a compiler works but really could do with a course on he here’s how you go about solving a problem and investigating it further. And if you don’t manage to solve it then here’s how you asked about it. Well whether that’s asking your colleagues or asking on Stack Overflow or finding a bug or whatever it is so simple aspects of the diagnostic process of not trying to bite off more than you can chew. If you are new to a language then do some simple things first. I tend to go with something like console apps for one thing rather than immediately diving into web apps and mobile apps for example which entirely depends on the language of course if you’re using a language which is completely aimed at web development then maybe a console that’s going to be impossible but where possible use the simplest environment you can. The environment where the debug is going to help you as much as possible where you don’t need 100 lines of boilerplate just to get two lines of code running that kind of thing is really helpful for getting yourself set up for success effectively so that you can learn one aspect of a language one aspect of a library at a time rather than drowning in a sea of okay. I’ve got 100 hundred lines of code and I don’t understand any of it and I’m being given an error message that I don’t understand either and I don’t know where to start. The problem is your starting at somewhere that has too much stuff you don’t understand. So yeah in a fast moving world and I’m guilty of this as anyone else if I try to learn new technology for all the fact that I say I would like to start simply. I’ll often think Well I’ve only got this one thing that I need to do so I’ll just kind of dive in. So I do the wrong thing as well but I know enough that if I do get stuck I will then back off and try doing something simpler but in a fast moving world it’s it is tempting to try to dive right in because hey I need to get something done right now but I find that it’s much more productive and in the long run if you just take a step back and really try to walk first before you run.

MARCIN: Waren Sie schon einmal in einer Situation, die vielleicht am Anfang Ihrer Karriere stand, in der Sie anfangen, ein Problem zu lösen, das bereits gelöst ist, und dann später erkennen, dass das eigentlich wie ein gelöstes Problem ist, dass Sie einfach eine API oder eine vertrauenswürdige Bibliothek verwenden können.

JONja, und es scheint manchmal eine Art Abneigung gegen die Drittbibliothek zu geben. Ein klassisches Beispiel ist die XML-Bearbeitung, so dass Sie Leute sehen werden, die sagen: "Ich brauche nur das kaufmännische Und-Zeichen zu escapen, also benutze ich einfach Zeichenfolgen und baue das XML direkt auf, und dann werden sie feststellen, oh nein, ich habe noch diese andere Sache, die ein Problem verursacht, und früher oder später haben Sie Hunderte von Codezeilen, die vollständig vermieden werden könnten, wenn Sie zunächst einfach eine XML-Bibliothek verwenden, die in allen möglichen Dingen viel robuster und sicherer ist. Also ja, man sollte Bibliotheken von Drittanbietern verwenden. Wenn man sie sorgfältig ausgewählt hat, gibt es aber auch eine Menge ziemlich minderwertiger Bibliotheken. Aber die Wahl einer guten Bibliothek kann den ganzen Unterschied in einem Projekt ausmachen.

MARCIN: Und würden Sie sagen, dass das etwas ist, das man mit der Erfahrung gewonnen hat, was ich damit sagen will, ist, dass die Art von Weisheit, die ich sagen kann, die Art von Weisheit ist, die ich wirklich brauche, um irgendeinen Code zu schreiben, um dieses spezielle Problem zu lösen.

JON: Bis zu einem gewissen Grad. Es ist zum Teil eine Frage der Erfahrung und zum Teil eine Frage der Zurückhaltung, denn wenn Sie sehen, dass Sie etwas tun könnten, und das bedeutet, dass Sie etwas Code schreiben müssten, und Sie denken, dass es Spaß machen würde, Code zu schreiben. Dann gibt es immer die Versuchung, diesen Code zu schreiben, auch wenn man es eigentlich gar nicht muss. Und diese Versuchung bekomme ich auf jeden Fall. Selbst wenn ich es wirklich nicht sollte, und manchmal werde ich ein schnelles Werkzeug in C# schreiben, auch wenn es nicht die geeignetste Sprache dafür ist, weil es die Sprache ist, die ich am besten kenne, und das macht mich vielleicht kurzfristig effektiver. Möglicherweise auf Kosten der langfristigen Produktivität. Ich glaube nicht, dass wir uns darüber zu viele Sorgen machen müssen. Machen wir uns nicht zu viel Vorwürfe wegen solcher Dinge, sondern behalten wir sie im Auge. Es gibt eine Menge zu lernen, wenn man einen Schritt von sich selbst zurücktritt und sich irgendwie bei der Arbeit beobachtet und sagt, wo ich viel Zeit auf eine Art und Weise verwende, die am Ende nicht produktiv ist, und wie kann ich das mit der Zeit einfach ein wenig reduzieren, ohne zu denken, oh das muss bedeuten, dass ich ein schrecklicher Entwickler bin und das Software-Engineering ganz aufgeben sollte. Versuchen Sie einfach, sich mit der Zeit immer weiter zu verbessern.

MARCIN: Großartig. Gut. Ich denke, was ich jetzt versuchen möchte, ist, ein bisschen Geschichte zu schreiben, so weit, wie wenn Sie uns sagen könnten, dass jeder eine Geschichte hat, von der jeder eine Geschichte hat, als er mit der Programmierung begann. Was ist also Ihre was ist Ihre Geschichte von wann sind Sie eigentlich dazu gekommen? Seit wann haben Sie sich damals für etwas wie Software-Engineering oder Programmierung oder Kodierung oder wie immer Sie es nennen wollen, interessiert?

JON: Es war also sehr früh. Wir kauften Aztec's Spektrum 48 K Sinclair's bei Spectrum, als ich war. Ich glaube, es war 1984, also war ich acht Jahre alt. Das Spektrum kam zwei Jahre zuvor, 1982, heraus, und anfangs habe ich nur Spiele gespielt, und dann habe ich ziemlich schnell angefangen, sehr einfache Kodierungen zu machen. Das Spektrum kam also mit eingebautem BASIC-Interpreter. Wenn man also den Computer hochfährt, kann man sofort anfangen, Code einzugeben, und das mitgelieferte Spectrum-Handbuch war sehr, sehr gut geeignet, um zumindest die Grundlagen der Programmierung zu lehren. Und ich erinnere mich an einen Tag, an dem mein Vater zu Hause war, weil er aus irgendeinem Grund krank war, und ich erinnere mich, dass ich ein dummes kleines Shooter-Spiel schrieb, das nur aus einem Raumschiff bestand, das wahrscheinlich aus einigen ASCII-Zeichen und einem Außerirdischen bestand, der an einem zufälligen Punkt auftauchte, und man das Raumschiff auf und ab bewegte und dann mit dem Gesicht zum Feuer drückte oder was auch immer, es war so völlig trivial und überhaupt nicht unterhaltsam zu spielen. Aber dies war das erste Mal, dass ich etwas geschrieben hatte, das interaktiv sein würde, und es war erstaunlich, was für ein Gefühl ich dabei hatte. Ich glaube, zum Teil deshalb, weil alle Spiele damals ziemlich plump waren und ich Jetpack und Lunar Jet Man usw. genoss. Aber das waren ziemlich einfache Spiele, so dass mich die Tatsache, dass ich etwas Einfaches schrieb, nicht abschreckte. Irgendwie tun mir heutzutage die Kinder ein bisschen leid, die, wenn sie meinen Rat annehmen und etwas sehr Einfaches machen, am Ende ein kleines Textspiel haben, bei dem man vielleicht eine zufällige Zahl erraten muss, und das sagt, ob man zu hoch oder zu niedrig kommt usw. Nun, wenn man das mit Overwatch oder welchem Spiel auch immer vergleicht, dann ist es ein Spiel, das man zum Spaß gespielt hat. Es ist ziemlich schwer zu erkennen, wie sie zusammenhängen, denn es ist eine Million Lichtjahre von einer einfachen Textsache zu 3D-Grafiken entfernt, die mit großer Geschwindigkeit mit Netzwerken und allen möglichen Dingen vorbeiziehen. Aber damals war es großartig. Also habe ich meinen eigenen Code auf diese Weise geschrieben. Es gab auch Zeitschriften, in denen man Listen eintippen konnte. Man kauft also ein Buch, und anstatt auf der Vorderseite ein Klebeband mit einem Code zu haben, den man einfach eintippen kann, tippt man alles ein, und das hat den Vorteil, dass es sich unheimlich langweilig anfühlt, aber man lernt ständig dazu. Nun, so kann man Code schreiben, ohne dass es besonders betont wird. Ich glaube, ich habe sehr viel davon profitiert, und ich erinnere mich, dass eines meiner ersten wichtigen Projekte das Schreiben eines Logodolmetschers war, so dass wir in der Schule mit den BBC-Mikrocomputern arbeiten. Wir hatten einen Logo-Interpreter, bei dem es eine Art gefälschten Roboter gibt, bei dem man sagen kann, man geht hundertprozentig vorwärts, dreht sich um 90 Grad nach rechts usw. und zeichnet Blätter auf den Bildschirm. Ich liebe das, aber wir hatten ihn nicht auf dem Spektrum, also habe ich meinen eigenen implementiert, denn hey, ich wusste nicht, dass dies eine schwierige Sache ist, die viel Zeit in Anspruch nehmen würde, und das tat es auch, aber es war unglaublich befriedigend, und ich denke, es ist ein Beweis für die Qualität des Spektrum-Handbuchs, dass ich Trigonometrie effektiv aus dem Spektrum-Handbuch gelernt habe, weil wir es in Mathematik noch nicht gemacht haben, und ich war erst, ich weiß nicht, 10, 11 oder 12 Jahre alt. Ich habe mir also in der Schule überhaupt keine Trigonometrie angeschaut, aber das Spektrum-Handbuch war klar genug, dass ich genug gelernt habe, um daraus einen Logointerpreter zu machen. Und rückblickend würde ich jetzt gerne den Code sehen. Ich vermute, er ist absolut unsauber. Und natürlich ist er im Nebel der Zeit verloren gegangen. Aber im Nachhinein bin ich immer noch immens stolz darauf, wie schrecklich dieser Code war. Sie könnten Ihre Logo-Auflistung schreiben. Man konnte ihn auf Band speichern, man konnte ihn wieder laden, man konnte ihn laufen lassen, ich war total cool.

MARCIN: Und während Sie diese Fertigkeit durchlaufen, dachten Sie immer, dass Sie als Software-Ingenieur arbeiten würden, oder waren Sie an anderen Dingen interessiert, und dann wurden Sie irgendwie gelenkt, oder wissen Sie, wie Sie tatsächlich auf das Feld gekommen sind?

JON: Ich glaube, etwa ab dem Alter von 13 oder 14 Jahren habe ich damit gerechnet, dass dies meine Karriere sein würde. Also ja. Ich habe nicht Informatik an der Universität studiert, sondern Mathematik studiert und dachte, dass ich am Ende vielleicht in Mathematik forschen würde. Es stellte sich heraus, dass ich nicht annähernd gut genug in Mathematik bin, um zu promovieren oder was auch immer. Aber ich wusste, dass es etwas mit Computern zu tun haben würde. Also interessierte ich mich schon während meiner Schulzeit für künstliche Lebensformen, also machte ich ein Mathematikstudium und dann ein Jahr lang ein Äquivalent zum Master in Informatik, und während der Ferienzeit arbeitete ich schließlich mit einem Freund bei Digital Electronics und ging von dort aus weiter. Ich war schon immer schrecklich darin, meine Karriere zu lenken, ich habe sie einfach von Ort zu Ort gehen lassen, während ich mich amüsiere, also habe ich den Genuss immer als viel wichtiger für mich angesehen als Geld, und die Anerkennung, die ich durch Stack Overflow und das Schreiben erhalte, ist sehr angenehm. Es war nie ein absichtliches Ziel im Leben, sozusagen berühmt zu werden oder was auch immer. Aber die Art von bizarrem Mikro-Berühmtheitsstatus, den ich durch Stack Overflow erhalte, ist ziemlich lustig und ein bisschen seltsam, aber lustige Dinge in meinem Beruf zu tun, ist mir immer viel wichtiger, also achte ich darauf, dass ich eine gute Balance zwischen Arbeitsleben und Lebensqualität habe und meine Familie viel sehen kann. Meine Familie ist unglaublich wichtig für mich, aber ich habe meiner Karriere nicht annähernd so viel Aufmerksamkeit geschenkt, wie es wahrscheinlich eher bedächtige Menschen tun würden.

MARCIN: How can parents develop a children’s interest in programming?

JON:  So I have three kids one of whom is interested in Arduino things and does bits of coding and enjoys Python as well. Another who has started on Python more recently but previously was doing scratch which is interesting, it’s a more visual Environment and I don’t know much about the science or teaching kids to program. I tried teaching my kids to program in Python by trying a very step by step approach and I think it’s great for adults but I’m not sure it holds the interest of kids enough. At least not the step by step that I was trained to do. Either that or I’m just not a very good teacher which is entirely plausible but I think the most important thing is making sure that it’s something that they want to do. So it was only when I stopped trying to teach my kids programming that they started doing it for themselves and learning far more. My oldest son has done a bunch of things Arduinos and Raspberry Pi. I’m sure such things I’ve never even seen because he just occasionally says right could I have these parts, please. And then goes and builds random things and that was the way I learned as well. My parents were never watching over me as far as I’m aware in terms of what I was programming. They were just happy that I was happy and would encourage me to get out into the outside world. Every so often but they were happy that I was doing something creative and learning from myself. So if you can encourage kids enough to find some something that they will enjoy doing for themselves and then make it clear that you are happy to help them whenever they want help but you’re not going to force them to do. Right now it’s time for half an hour of programming. Then I think that’s the recipe for success. Kids love learning. They may not like school but they love learning and they love doing things that are creative. So you let them unleash that creativity however they see fit and they’ll astonish you with what they can do.

MARCIN: Meinen Sie, dass die Idee, dass jeder lernen sollte, wie man codiert, besonders wenn man weiß, dass sie versuchen, etwas einzuführen, mehr in den Lehrplänen hatte. Ist das eine gute Idee oder zwingt man die Leute unnötigerweise dazu, etwas zu lernen, was sie eigentlich gar nicht lernen wollen?

JON: I think there are two aspects one it’s it’s good to expose everyone to coding because we have this unhealthy stereotype of what a computer programmer looks like that really is hurting our industry. So if we can expose people and say right this is what coding actually is and if we can give people a positive experience of it then people who may never have naturally said you know that’s something that I will take up for myself may discover. Actually, they love it. So I think that’s very beneficial. And the other aspect is software runs so much of the world now that I think having some idea of what is involved even at the crudest level is very beneficial. In the same way that I think people should have lessons in financial planning just the basics of this is what pensions are about and this is what loans are about and here’s how the stock market works. I’m not so that they can go on to be bankers but so that they can maneuver in a world which is so financially driven just having some idea that yeah the same is true for politics and all kinds of things the kinds of parts of reality that are going to affect your world. It’s good to have some basic understanding of. I’m not saying that I know much about politics or much about finance but I’m very glad for what I do know because it helps shape how I see the rest of the world. So I think software has a definite role to play in in that no kids these days am in certainly from middle-class backgrounds in developed countries and there are whole other conversations we can have about areas where kids won’t come into contact with computers because of poverty etc. but a lot of kids are going to have some interaction with computers. So if they view them as well that’s just running code it’s running really complicated code but I have some idea of what code looks like. And the idea of knowing what the cloud is to the extent of its computers running somewhere else in a data center that’s managed by Google or Amazon or Microsoft or whatever and having the basics of that can just help you do whatever else it is you don’t need to be doing coding yourself to benefit from having the basic ideas of how computers work.

MARCIN: Und jetzt mit Sie wissen so etwas wie Chrom zum Beispiel mit ihrer Entwickler Art von Symbolleiste. Sie können jeden nehmen, der das Internet benutzt, und sagen: "Haben Sie bemerkt, dass all das passiert, während Sie diese Website benutzen, wissen Sie all diese Aktivitäten, und sie verstehen vielleicht nicht einmal dieses Recht. Aber es enthüllt irgendwie, was sich hinter dem Vorhang abspielt. Und ich denke, das ist manchmal eine großartige Möglichkeit, jemandem zu zeigen, der kein Interesse hat, sagen wir mal, zu dem Thema, und Sie sagen OK. Lassen Sie mich Ihnen einfach zeigen, lassen Sie mich Ihnen einfach zeigen, was tatsächlich auf dieser Website geschieht, während Sie sie benutzen. Ich finde es erstaunlich, dass wir sozusagen, ich meine, Sie können sogar die Konsole öffnen und anfangen, Javascript zu hacken, ohne wirklich etwas tun zu müssen.

JON: Absolut ja und wenden es aufeinander an. Es gibt viele andere Möglichkeiten, grundlegende Code-Bits nur für einen Browser zu schreiben, einschließlich in C#. Jetzt gibt es Tray.net, mit dem Sie anfangen können, jeden Code nur in Ihrem Browser zu schreiben und sicher sein können, dass hinter den Kulissen irgendwo ein Cloud-Container läuft. Aber Sie können definitiv anfangen, Code in unzähligen Sprachen nur von Ihrem Browser aus zu sehen. Und ich denke, es spricht auch etwas dafür, dass die Informatik ebenfalls diese Exposition hat. Ich habe also sicherlich Vorträge vor Junglöwen und Führern und sogar vor der Gilde meiner örtlichen Methodistengemeinde gehalten, bei der es sich meist um Leute handelt, die entweder im Ruhestand oder kurz vor der Pensionierung stehen und die meisten von ihnen niemals Informatik betrieben hätten, und ich habe einen Vortrag gehalten, der ihnen etwas Informatik zeigte, ohne dass überhaupt Computer im Spiel waren. Also Dinge wie: Sie haben einen Stapel Papier, wie kann man den effizient sortieren und sich ein paar verschiedene Algorithmen anhören, die man verwenden kann. Und was bedeutet das für Sie, wenn Sie wüssten, dass wenn eine Person versucht, diese zu sortieren, Sie vielleicht einen Algorithmus verwenden könnten. Wenn Sie 10 verschiedene Personen haben, skaliert der von Ihnen gewählte Weg eigentlich immer noch so, dass Ihnen viele verschiedene Personen helfen. Am Ende hat man also eine Art Merge-Sortierung oder was auch immer und Dinge wie algorithmische Komplexität geben Beispiele aus dem wirklichen Leben, wie lange es dauert, verschiedene Dinge zu tun. Wenn man mehr Input hat, wenn man Hemden an die Wäscheleine hängt oder was auch immer, dann denke ich, dass die Leute diese Art von Dingen interessant finden können, wenn sie sich davon nicht abschrecken lassen. Aber sobald man anfängt, Computer zu sagen, dann werden viele Leute sofort abschalten. Es spricht also viel dafür, Dinge auf eine nicht bedrohliche und nicht bevormundende Weise zur Verfügung zu stellen, und das erfordert erhebliche Fähigkeiten in Bereichen, die ich nicht habe. Aber ich habe getan, was ich kann, aber ich bin sicher, dass bessere Pädagogen wesentlich besser in der Lage wären, dies zu tun. Ich denke, das ist ziemlich wichtig.

MARCIN: Lassen Sie uns hier weitermachen. Was würden Sie sagen, sind Sie außer Stack Overflow. Gibt es irgendeine Art von Ressourcen, die Ihnen wirklich gefallen? Ich meine, ich bin ein Fan von so etwas wie O'Reilly-Büchern, aber wovon sind Sie ein Fan, was die Ressourcen betrifft, die Sie benutzen, wenn Sie, wenn Sie tatsächlich etwas lernen wollen, eine neue Sprache oder so etwas lernen wollen.

JONBücher eignen sich also hervorragend zum Sprachenlernen, weil sie einen in einer bestimmten Reihenfolge dorthin bringen, und heutzutage gilt das natürlich auch für Online-Tutorials, solange sie angemessen geschrieben sind, und ich weiß aus Erfahrung, dass es viel Mühe kostet, Ressourcen zu schreiben, die einem alle Merkmale einer Sprache in einer bestimmten Reihenfolge beibringen, die einem beim Lernen hilft. Und so könnte jemand ein C#-Tutorial schreiben, das eigentlich gar nicht so gut ist, weil er gerade einen Brain-Dump gemacht hat. Sie müssen also auswählen, aber etwas, das für Sie strukturiert ist, macht einen großen Unterschied Gute API-Dokumentation ist immer sehr willkommen. Also .NET tendiert dazu, ziemlich gut dokumentiert zu sein, und der neue API-Browser macht es einfacher, die Dokumentation usw. zu finden. Ich möchte die Leute, die Bibliotheken schreiben, dazu ermutigen, sich wirklich Mühe zu geben, neben diesen Bibliotheken auch gute Dokumentation zu schreiben. Es hat keinen Sinn, den schnellsten und genialsten JSON Serializer der Welt zu haben. Wenn niemand herausfinden kann, wie man ihn benutzt. Aber entweder benutze ich die gleichen Ressourcen wie andere Leute auch, ob es sich nun um Tutorials und Bücher handelt oder nur um die Suche nach den richtigen Ergebnissen, wenn ich während des Schreibens gut ausgebildet bin, wie kann ich dann das tun, was auch immer es ist. Etwas in eine PDF-Datei einfügen oder was auch immer für eine Aufgabe ich zufällig zu erledigen habe. Ja, ich durchsuche das Internet, ich benutze Stack Overflow, ich benutze Bücher, ich benutze Tutorials, ich benutze Bibliotheken und ihre Dokumentation. Ja, das ist so ziemlich alles, glaube ich.

MARCIN: Und was sagen Sie zu dieser Idee, weil wir eigentlich fast ähnliche Altersgruppen sind. Die Idee, dass man in einem bestimmten Alter einfach Manager wird. Haben Sie das schon einmal erlebt? Stimmt das, oder sind Sie in dieser Hinsicht so einzigartig, dass Sie noch Software entwickeln, oder sind Sie es? Ich schätze, was würden Sie dazu sagen?

JON: Ich bin sicherlich nicht einzigartig. Ich würde sagen, ich habe aktiv gesagt, dass ich meine Karriere nicht wirklich geschafft habe. Die Tatsache, dass ich mich darauf optimiere, Spaß zu haben, habe ich mich seit geraumer Zeit aktiv dagegen gesträubt, meine Karriere zu managen. Ich war ein halbes Jahr lang Manager und fand heraus, dass es viel zu sagen gibt. Insbesondere möchte ich denken, dass ich einfühlsam bin, und ich versuche bewusst einfühlsam zu sein, denn ich denke, das ist eine wichtige Fähigkeit, die ein Software-Ingenieur haben muss. Aber es bezieht sich natürlich auch auf das Management, und so dachte ich, es wäre interessant, es mit dem Management zu versuchen, und ich habe es versucht, und es war dann angemessen für mich, wieder in eine individuellere Mitwirkendenrolle zu wechseln. Es gibt viel, was man als Software-Ingenieur in Bezug auf Führung tun kann, ohne zu managen. Und das muss nicht immer das Schreiben von Code sein, so dass ich wahrscheinlich mehr Code schreibe als die meisten Leute mit einem entsprechenden Dienstalter, weil ich mich dafür entschieden habe und mich aktiv gegen Dinge gewehrt habe, die eine breitere Wirkung haben könnten, aber ohne dass es mir so viel Spaß macht, sagen wir, dass man oft viel Zeit damit verbringen kann, Design-Dokumente zu schreiben, und ja, dass ich immer noch ziemlich häufig Dokumente schreibe, normalerweise ziemlich informell, ich bin kein großer Fan davon, riesige Dokumente mit allen möglichen Kleinigkeiten zu schreiben, die für niemanden relevant sind. Ich würde viel lieber schön und schnell zur Sache kommen. Aber Dokumente zu schreiben, die dazu beitragen sollen, dass mehrere Teams sagen: Okay, ich glaube, wir alle haben dieses Problem. Lassen Sie uns sehen, ob wir gemeinsam zu einer Lösung kommen können, die eine größere Wirkung hat, als wenn ich nur Code schreibe, um dieses Problem selbst zu lösen. Ich denke, eines der Dinge, die Sie wahrscheinlich anstreben sollten, wenn Sie an Erfahrung gewinnen, ist zu sehen, wo diese Erfahrung anderen Menschen helfen kann. Aber bis zu einem gewissen Grad wird das immer noch Kodieren sein, bis zu einem gewissen Grad wird es das Teilen Ihres Wissens mit Benutzergruppen und Konferenzen und so weiter sein. Und durch die interne Lösung von Problemen innerhalb eines Unternehmens, die Sie lösen können, können Sie vielleicht klarer sehen als andere Leute, die vielleicht weniger erfahren sind, vielleicht gerade erst einem Team beigetreten sind oder was auch immer es ist. Aber was die Frage betrifft, ob Leute Manager werden sollten oder nicht, würde ich persönlich denken, dass es völlig in Ordnung wäre, wenn jemand käme und sofort anfangen würde zu managen, ohne die Arbeit unbedingt selbst gemacht zu haben. Wenn das etwas ist, was sie durch Einfühlungsvermögen und Lernen gut können, dann kann man lernen, was eine Arbeit beinhaltet, ohne sie zu machen, solange man sich bewusst ist, dass man sie noch nicht gemacht hat, so dass man diese direkte Erfahrung nicht hat. Ich glaube also nicht, dass es keinen direkten Zusammenhang zwischen dem Alter und dem Anteil der Führungskräfte unter den Arbeitnehmern geben sollte. Ich hoffe auf jeden Fall, dass ich noch bis weit in den Ruhestand hinein Code schreibe und wahrscheinlich keine nennenswerten Managementaufgaben wahrnehmen werde. Wenn ich irgendwann einmal Manager sein muss, werde ich es nach bestem Wissen und Gewissen tun, aber ich denke nicht, dass dies normalerweise eine Voraussetzung sein sollte, und ich denke, dass viele Unternehmen das Falsche tun, indem sie Leute ins Management befördern, die eigentlich viel glücklicher in weitaus produktiveren Positionen als Programmierer wären.

MARCIN: Was die Idee betrifft, dass es wahrscheinlich eine Art irrtümliche Vorstellung ist, dass man nach 15 Jahren des Software-Schreibens weiß, dass man einfach ein Manager wird, und das ist einfach das, was jeder macht. Ich weiß nur, dass es zumindest im kalifornischen Silicon Valley einen gewissen Druck gibt, wo die Leute wirklich besorgt sind, dass sie zum Beispiel 29 und zu alt sind, um von einigen Firmen eingestellt zu werden, die irgendwie besessen davon sind, nur Leute einzustellen, die 22, 23 oder 24 Jahre alt sind.

JON: Nun, ich möchte nicht von einem Unternehmen angestellt werden, das davon besessen ist, 22-Jährige einzustellen. Ich würde viel lieber für ein Unternehmen arbeiten, das die Menschen dafür schätzt, wer sie sind, was sie erreichen können und was sie gemeinsam erreichen können. Also nicht nur ihre aktuellen Fähigkeiten, sondern auch ihr Potenzial. Diese Art von Agismus habe ich also selbst noch nicht erlebt. Entschuldigen Sie, aber ich bin mir bewusst, dass es ein Anliegen ist. Ich würde auf jeden Fall sagen, dass ich keine Degradierung erlebt habe, der ich mir in Bezug auf meine Kodierfähigkeiten bewusst bin. Ich codiere immer noch so fröhlich und produktiv wie eh und je. Soweit ich weiß. Ich hoffe also, dass die Unternehmen diese Art von Dingen zur Kenntnis nehmen und Leute einstellen, die diese Arbeit erledigen können.

MARCIN: Glauben Sie, dass es etwas Gutes gibt? Wir sprechen zum Beispiel darüber, wenn wir über alle anderen Berufe sprechen. Man neigt dazu, davon auszugehen, dass, wenn jemand 30 Jahre lang Physik gemacht hat, dann weiß man, dass es keine gibt, niemand wird sagen, oh du weißt nicht mehr, was du tust. Ist es etwas, dass Software-Engineering so eng mit der Technologie und der sich so schnell entwickelnden Technologie verbunden ist, dass die Leute einfach davon ausgehen, dass man weiß, wenn man es schon so viele Jahre macht, dann ist man irgendwie nicht mehr auf dem Laufenden, oder gibt es etwas, das Software-Engineering von all den anderen Disziplinen unterscheidet, die die Leute auf die Idee bringen, dass man jemanden kennt, dass man ein bestimmtes Alter kennt und dass sie bestimmte Vorstellungen von dieser Person haben.

JON: Da mag der Eindruck entstehen, aber ich würde sagen, dass er wahrscheinlich ungenau ist. Man muss bereit sein, neue Dinge zu lernen. Zumindest, wenn Sie es wollen, wenn Sie in der Lage sein wollen, in neuen und aufregenden Bereichen weiterzumachen. Wenn Sie seit 30 Jahren mit COBOL arbeiten und sich entschieden haben, nichts anderes als COBOL zu lernen, dann bin ich sicher, dass Sie immer noch produktiv sein können, und das ist in Ordnung. Aber Sie sollten nicht erwarten, einen Job in JavaScript oder so zu bekommen, ohne Interesse daran gezeigt zu haben, weiter zu lernen. Andererseits kenne ich eigentlich nur C# und Java auf professioneller Ebene, weil ich festgestellt habe, dass es in C# genug neues Material zu lernen gibt. Ich habe nicht genug Zeit, F# und D und Rust and Go und alle möglichen Dinge zu lernen, die andere Leute breiter und weniger tief gehen. Aber es liegt an jedem Einzelnen, wie viel er auf sich nehmen will, und Sie müssen sich bewusst sein, dass Sie mit der Zeit weniger wertvoll werden, wenn Sie sich entscheiden, nicht zu lernen, wenn Sie sich entscheiden, mit dem Lernen aufzuhören. Aber um ehrlich zu sein, vermute ich, dass es genug Altsysteme gibt, so dass Sie für die meisten Sprachen immer noch einigermaßen wertvoll sein könnten, selbst wenn Sie sich entscheiden sollten, mit dem Lernen aufzuhören. Ehrlich gesagt kann ich nicht verstehen, warum Sie mit dem Lernen aufhören sollten, da es immer interessant ist, neue Dinge zu tun. Aber es braucht ziemlich viel Zeit, und ich denke, Unternehmen sollten bereit sein, diese Zeit in ihre Ingenieure zu investieren, damit die Ingenieure nicht das Gefühl haben, dass sie Dinge in der Zeit lernen müssen, die sie sonst zum Beispiel mit der Familie verbringen. Es gibt also eine ganze Menge aktiver Entwicklung, die als Teil Ihrer Arbeit stattfinden sollte. Ein guter Sopher-Ingenieur im Arbeitsleben zu sein bedeutet auch, neue Dinge zu lernen. Für die meisten Entwickler gibt es, wie ich schon sagte, noch einige weitere Altlastenbereiche, in denen das nicht so relevant ist, obwohl ich sagen würde, dass sogar Cobol-Entwickler, die damit weitermachen und immer wieder neue Dinge lernen, wahrscheinlich in der Lage sind, zu erkennen, wie sie ihre Cobol-Fähigkeiten in anderen Umgebungen hier anwenden können. Vielleicht gibt es heutzutage Container, auf denen COBOL läuft, und plötzlich haben Sie Cloud-basierte Containersysteme, auf denen COBOL laufen kann, und plötzlich können Sie alle Ihre lokalen Rechner in eine externe Umgebung verlagern... Sie wissen, nur weil Sie eine alte Sprache verwenden, heißt das nicht, dass Sie für alles andere alte Technologie verwenden müssen. Es gibt also Platz für alle möglichen Leute, die immer die neue Sprache wie eine neue Sprache lernen wollen. Menschen, die alle technologischen Fähigkeiten in neuen Umgebungen anwenden wollen, und Menschen, die keinen großen Wert darin sehen, neue Dinge zu lernen. Ja, ich kann sagen, dass ich mich nicht besonders darin einfühlen kann, aber Software-Engineering ist ein so weites Feld, dass ich sicher bin, dass es nützliche produktive Leben gibt, die man damit verbringen kann. Alle vorhandenen Fähigkeiten immer wieder auf neue Herausforderungen anzuwenden. Ich könnte C# 7 für den Rest meines Lebens verwenden und immer noch neue Dinge tun, auch wenn ich keine neuen tatsächlichen Sprachgebiete lerne. Das ist nicht das, was ich tun möchte, aber ich bin mir sicher, dass das auch für andere Menschen gilt. Es ist vielleicht eher der Weg, den sie gehen wollen.

MARCIN: Und das alles wegen der Tatsache, dass die meisten Sprachen Turing vollständig sind und man daher mit jeder Sprache, die man kennt, alles machen kann. Ich meine, es ist sehr weit gefasst.

JON: wahrscheinlich bin ich mir nicht ganz sicher. Ich denke, Sprachen entwickeln sich weiter C# hat sich ganz sicher für die Anwendungsfälle entwickelt, für die es eingesetzt wird, so dass einige der Funktionen, die jetzt hinzugefügt werden, vor 10 Jahren nicht so viel Sinn gemacht hätten, bevor Cloud Computing sehr weit verbreitet wurde, und wir sehen andere Bereiche wie Spiele, in denen C# in einem fast unerwartet mit Plattformen wie Unity dominiert. Es gibt also Sprachfunktionen, die in gewisser Weise auf Spiele und High-Performance-Computing mit niedriger Latenz abgestimmt sind, und das finde ich großartig. Aber ja, man könnte die Dinge auch in anderen Sprachen oder in früheren Sprachversionen erledigen, aber es ist viel produktiver und interessanter, neue Funktionen zu nutzen, weil sie speziell auf Ihre Bedürfnisse zugeschnitten sind.

MARCIN: Was ist Ihre Lieblings-IDE?

JON: Visuelles Studio

MARCIN: Benutzen Sie eine bestimmte Methodik?

JON: Code erledigen. Ich benutze kein Kanban, oder ich möchte keine spezifische Methodik wie diese sagen. Ich glaube an das Testen nicht unbedingt testgetriebener Entwicklung, aber zumindest testet man neben der Entwicklung, manchmal hängt es von der Situation ab. Ich fühle mich unwohl, wenn ich viel Seriencode habe, der nicht getestet wird. Das ist also ein Aspekt der agilen Entwicklung, aber es ist nicht so, dass ich persönlich am Ende nicht ganz Agile einsetze. Ich mache nicht viel Paarprogrammierung. Ich habe es in der Vergangenheit getan und fand es sehr hilfreich. Ich habe in der Vergangenheit nicht paarweise programmiert und fand es absolut in Ordnung. Ich halte es für wichtig, eine gute Beziehung zu Ihren Kollegen zu haben, daher ist die Codeüberprüfung für mich sehr wichtig, und diese Codeüberprüfung ist ehrlich und offen. Aber das ist nicht an eine bestimmte Methodik gebunden.

MARCIN: Welchen Rat würden Sie jemandem geben, der sich in dem Gebiet aufhält, in dem er seit, sagen wir drei Monaten, drei bis sechs Monaten eine Sprache lernt. Und sie haben einfach das Gefühl, dass sie nicht klug genug sind, es zu tun, um sie richtig zu lernen. Als ob es einfach zu viele Fehler gäbe, die es zu beheben gilt. Und Sie wissen, was für Ratschläge Sie für die Person haben, die ein Interesse daran hat, aber das Gefühl hat, dass sie diesen Buckel einfach nicht überwinden kann.

JON: Wenn Sie also immer noch interessiert sind und denken, dass Sie es genießen könnten, wenn Sie es nur besser machen könnten, dann suchen Sie nach Leuten. Ob Sie nun Blogs lesen oder eine Benutzergruppe finden, suchen Sie nach Leuten, mit denen Sie interagieren können, und suchen Sie nach Möglichkeit Einzelunterricht, denn es kann ziemlich einsam sein, nur hinter einem Bildschirm nach Antworten zu suchen. Wenn Sie dagegen präsentieren, wenn Sie sich mit jemandem unter vier Augen unterhalten, können sie oft sehen, dass Ihr mentales Modell ein Problem hat, bei dem Sie sich etwas falsch vorstellen, und es könnte sehr schwer sein, das nur aus einzelnen kleinen Teilen herauszufinden. Wenn es Ihnen nicht gefällt, dann suchen Sie sich eine andere Sprache, denn es gibt viele Sprachen da draußen.

MARCIN: Welche Programmiersprache ist besser, Java oder C#?

JON: Persönlich würde ich sagen, C# Absolut. Nun habe ich mir keine Details der Funktionen von Java 9 angesehen, und ich kenne nur die Jobrate-Funktionen in der Art von ish, aber es kommt mir so vor, als ob C# einige der Fehler, die Java gemacht hatte, übernommen und einige der Fehler selbst zugegebenermaßen gemacht hat. Aber im Allgemeinen scheint sich C# schneller entwickelt zu haben, und das C#-Team ist fantastisch schlau und sehr vorsichtig bei der Sprachentwicklung. Wir sind also bei C# 7.2 dabei, und es fühlt sich an, als ob es in eine sehr, sehr gute Richtung gegangen ist, es wird extrem gut, sehr gut spezifiziert verwaltet. Das heißt, Sie wissen, dass Java besser ist als je zuvor, und ich glaube nicht, dass es nicht genug davon gibt, dass Sie, wenn Sie an einer Java-Codebasis arbeiten, alles wegwerfen und stattdessen mit C# beginnen sollten. Aber wenn ich zu irgendeinem Zeitpunkt die Wahl hätte, würde ich mich auf jeden Fall jederzeit für C# entscheiden.

MARCIN: Fantastisch! Jon Skeet dankt Ihnen für Ihre Teilnahme am Yellow Duck-Podcast. Wenn Sie Links haben, die Sie mir schicken möchten, und Konferenzen, an denen Sie teilnehmen werden, schicken Sie mir bitte alle Informationen.

JON: Ich danke Ihnen.

MARCIN: Ja, danke. Tschüss!

Beitrag teilen

Es ist mehr als nur ein Newsletter

Erhalten Sie nützliche Einblicke direkt in Ihren Posteingang und erfahren Sie mehr über die Einstellung von Technikern.

Kodierfähigkeiten nahtlos verifizieren & entwickeln.

Sehen Sie DevSkiller-Produkte in Aktion.

Sicherheitszertifizierungen & Konformität. Wir sorgen dafür, dass Ihre Daten sicher und geschützt sind.