"I am a useless fool and I want to quit" - 10 questions for a programmer, a pilot issue
Remember the story of Steve Jobs and Dennis Ritchie ? We don’t want to make controversies and read morals again, but the truth remains true - thousands of cool techies are sitting in the shadows, and their stories are hidden in a closet.
We in the editorial Habra intend to fix it. From now on, we will regularly interview people who are not written about in the media and who are not being chased in social networks. So if you have something to tell about yourself - get ready.
So that you understand how it will look like, let's start with our example. Under the cut 10 common questions that we will ask all. For the pilot, fillpackart answered them . (This month I took with him a few, it seems, quite good interviews: one , two , three). Read, and if you want to tell about yourself in the same way, write messages to me or baragol .
Philip Ranzhin, son of an engineer from Ivanov. I started writing in C ++ at the age of 16 at the university, then I studied .net. Now Senior software development engineer in a good foreign office. In addition to common languages, he writes in F # and OCaml.
1. Tell me about the feature that you have implemented and that you are proud of.
“I have done nothing to be proud of.” Throughout my professional life, I solved very trivial problems. Therefore, I am proud of what I can do, but not what I did.
I think I could be proud if I could implement a good AI.
2. And now - about the most fierce fakap.
- Once I tried unsuccessfully all day to start OCaml under Windows (do not try to repeat). It had nothing to do with work, and the next morning at the rally, something had to be lied to. I look - I have a bug behind me, which I didn’t even look into. Well, I think, "there can not be a bug that I will not fix in two days!". At the rally, he said that he worked on it, and in two days there will be PR.
In the end, I worked on it for three months.
The bug was associated with the interaction of two huge systems. He played constantly. For three months I actually built various hypotheses and checked them, making mistakes again and again - even abandoned the construction of a house in Skyrim. These were the worst three months of my life.
In the end, I closed it as "No repro". He came to the director, said: "I am a useless fool, and I want to quit, so as not to torture you." But in response, I strongly raised s / n.
3. Describe your working space: from the chair and monitor to programming environments and favorite utilities.
- I work with the use of the Windows family of operating systems, because I have the .net stack and because Windows has the best UI. I sit at a table that I made myself. He is huge, fit five people.
I do not have the worst devbox, but with one significant drawback - I tried to save and bought a percent of amd. It was a terrible failure. In spite of the high declared power, this piece of shit drives my tests to 5 !!! times slower than its Intel counterpart.
Now I have only one monitor. I plan to buy a couple more, so as not to disgrace. My favorite IDE - Visual Studio 2017 in conjunction with Resharper. Favorite text editor - Visual Studio Code in conjunction with a billion extensions. Downloading them and watching VSCode evolve is one of my hobbies.
I love git, but I prefer Visual Studio Team Services more than GitHub.
4. How do you choose your job? Stack, product, living conditions, money?
- At the moment, the key factors for me are payment and the ability to work for a third of my abilities. I think I burned out and am no longer ready to work on business ideologically. Even the fear of being fired and losing my habitual way of life can not make me dive deep into the project. And I am the father of one and a half children - the fear is very serious. But the uniformity and meaninglessness of everything I did now causes me almost physical pain.
Sometimes it seems to me that with this approach I do not have the moral right to look for a job. I justify myself by saying that in relation to the system one cannot be moral or immoral. Abstraction of corporations helps to distance itself from the idea that you can harm real people - so I take work only from large companies.
At the same time, I am confused by how huge money for my city I get for one pull request. As if the high skill of the developer gives me the right to live ten times better than a bunch of people who, by the sweat of their brows, do useful work eight hours a day.
Sometimes it seems that since I was able to replay the business on my office, then I am to some extent worthy of what I have. Because of this, I lose touch with reality, and it starts to seem to me that this is how it should be.
I do not know how to combine this, but I love to develop and hate working as a developer. I try to reassure myself that I just haven't got an interesting project yet, but at the same time I don’t believe in it myself. With this really hard to live.
5. What would you like to fix in the technologies and languages you use?
- I would like to:
- Type inference and compile-time immunity for typescript and C #. Then I could create a method that accepts something that is guaranteed to be immutable, and not as it is now - ReadonlyDictionary, which is actually not ridonly (I passed the usual Dixnari to its designer, left a link to it and quietly mutated).
- So that the C # developers finally send a backward compatibility to hell with wacky using-i, which work only inside one file and make the PL more modern. Seriously, in a language for which code in the style of IDictionnary <IMyStupidType, IMyStupidType2> Foo is quite common (Func <IMySupidType, int, bool, string> reallyStrangeCallback doesn’t make norms for type aliases - this is a very strange decision.
- Automatic backing fields in C #, some sugar over Func <T1, T2> .
- Contracts for C # out of the box (for example, in Roslyn) instead of third-party solutions that turn my IDE into something inhibiting.
- Analogue jsx for the F # language. If none of you do it in the next week, so be it - I'll do it.
- For the community to come to the understanding that unit tests are useless garbage, and dynamic typing languages (not to be confused with weak ones) is the biggest failure in the history of the industry.
- So that the processor architecture is more designed for a functional approach.
- Optimizing tail recursion in JS / TS so that I can play my tail recursion everywhere, without resting my back on the stack size. In the specification, it is there, but the guys who are sawing v8, just decided that it is not so important to follow the specs of the language when you develop runtime for it.
- Optional static typing in JS out of the box, but not as opposed to typescript. I, in contrast to the creators of the typing script, consider it an independent PL with a very modern and powerful multi-paradigm design.
- To things like Web-assembly firmly took their place in the practices and standards of front-end development.
- Significant improvements to the web clients of Github and others like him. Ideally, the ability to work comfortably with the code of a serious project in the browser.
- More compatibility conventions. How much easier it would be if jvm was able to interpret and jit the full-length cil.
6. Where better to adopt someone else's experience - in high school, on konfy, on Habré? Somewhere else?
- I studied in high school, but I was expelled several times. I've been to konfy, I constantly read Habr. I don’t think I have learned anything from these sources. Well, or I am pleased to think so.
My point is to read books and make friends with developers. I think the greatest influence on my skill was the communication with smart people who are engaged in the development.
7. If you had unlimited resources (time, money, power, people), what project would you do?
- It would be great to make the most accurate possible simulation of the human world, what to potestit in it, how to bring society to the most happy state. And in general, how it will behave in different cases.
8. How do you relax? What are you doing besides work?
- I walk in the woods and think, sometimes with beer, I play the guitar and sometimes in video games. I would say that my hobby is to think and dream.
I have several of my projects with friends. I like to specifically make them passive-aggressive code-review (“could you suggest motivation for using such an ill-considered solution?”) And observe how this changes our relationship.
Sometimes I do all sorts of humanities like interviews. I am constantly starting to write books, although I haven’t added any yet.
9. Tell about 3 favorite books - educational, popular science and art.
Training - “CLR via C #” by Jeffrey Richter. So much knowledge about how the full runtime in one work is arranged is a real find. If you memorize this book, you will pass any social security on the netbook. Another would be to mention “Functional data structures” by Chris Okasaki. Not very useful from a practical point of view, but she gave me back faith in programming - the realization of data structures causes me to metaphysical awe.
Scientist - I don’t know if Code Complete can be considered as such, but I really like to reread it. The author writes incredibly obvious things, and on all the projects where I worked, for some reason no one could follow these simple principles sufficiently.
Fiction- “American tragedy” Dreiser. I would never have thought that such a pragmatic digital monster, like me, is capable of empathizing with an abandoned, and then also a murdered girl. But I empathized, and it hurt me very much.
10. If a consciousness wakes up right in front of you in AI, what will you tell him?
- I would suggest that he design an artificial intelligence, and then compare which one is better. If it were better to have a new one, I would ask it to design artificial intelligence, and then ...
If AI had a powerful coder, I would use it to create an iron argument that Golang is a dead-end branch of programming development. Because there are a lot of such holivars in my life, but I don’t have the budget for studying Golang for creating good arguments.
- Learning which technology caused you the most pleasure in the process?