Note from the translator:
This post was written and published on Medium by application developer Adrian Kosmachevsky from Switzerland. In addition to preparing the translation of his publication, I also invited the author himself, Adrian ( akosma ), to Habr, so that he could personally answer any questions from the community members, if any. I think for general convenience when communicating in comments with him, English should be used (and, if desired, duplicated in Russian).
Hello everyone, I am a forty-two-year-old self-taught programmer, and this is my story.
A couple of weeks ago, I stumbled upon a tweet in which there was a picture attached below, and it made me think about my career.
')

These thoughts led me to where it all began.
I debuted as a software developer at 10 am on October 6, 1997, in the city of Olivos, north of Buenos Aires, in Argentina. It was Monday. Not long ago, I celebrated my 24th birthday.
World in 1997
Then he was a little different. There were no cookie warnings on the websites. Innovative sites on the web were like Excite.com, and my favorite search engine was AltaVista.
My e-mail box looked like kosmacze@sc2a.unige.ch and was located on my personal website, which was located at
http://sc2a.unige.ch/~kosmacze . Then we still mourned the princess Diana, and Steve Jobs just returned to the role of CEO and convinced Microsoft to throw $ 150 million into Apple Computer. Digital Equipment Corporation sued Dell, the remains of Che Guevara returned to Cuba, just started the fourth (!) Season of the Friends. Gianni Versace was killed, Mother Teresa, Roy Lichtenstein and Jeanne Kalman died. People were hanging out for Final Fantasy 7 on the PlayStation, as if they were addicts, the BBC-2 began broadcasting teletubbies, and Cameron was only going to show the world his Titanic.
Excite in 1997, taken from the Internet ArchiveThe smartphones of that time were the
Nokia 9000 communicators with 8 MB of memory, 24 MHz i386 processor operating under the
GEOS operating system. The smart watch of that time is the CASIO G-SHOCK DW-9100BJ. Yes, they did not have many applications, but the battery life on one charge is much longer.
Then IBM Deep Blue beat Garry Kasparov for the first time in chess.
The hacker, known as
_eci , published the C code for Windows 3.1, 95, and NT, which he called WinNuke. It was used to attack TCP port 139 (NetBIOS) with the subsequent appearance of a “blue screen of death”.
By the way,
Malala Yusufzai ,
Chloe Grace Moretz and
Kylie Jenner were born this year.
Many films took place in 1997, for example: “Escape from New York”, “Predator 2”, “The Curious Case of Benjamin Button”, “Harry Potter and the Half-Blood Prince”, “The Godfather 3” and, of course, "Terminator 2: Judgment Day." It was in 1997, August 29 at 2:14 am, according to the tape, Skynet gained self-awareness and started a thermonuclear war. Fortunately, this did not happen. But the same year, on September 15, the Google.com domain was registered. At the same time, the media began to escalate hysteria around the millennium, which made a lot of people nervous. (
In short, it was a difficult year. Note. )
My first experience as a developer
My first job was to write ASP pages in various editors, starting with Microsoft FrontPage, HoTMetaL Pro and EditPlus, to provide cross-browser compatibility between Netscape Navigator and Internet Explorer 4, as well as writing stored procedures in SQL Server 6.5 for a commercial site with a Japanese, Russian, Spanish and English interfaces. Everything was done without any support for UTF-8, directly through the software stack.
The results of my work were processed by the server on the Pentium II, which was located somewhere in the USA, and which, among other things, had onboard a hard for that time hard on 2 gigabytes and 256 megabytes of RAM. This server running Windows NT 4 with SQL Server 6.5 and IIS 2.0 alone served about ten thousand visitors per day.
My first professional programming language was a mutant called VBScript and a little more Javascript on the client side. It was all flavored with a lot of “If this is Netscape, then do something else differently,” because then I had no idea how to use Javascript correctly.
By the way, in 2016, we still barely understand how to do anything in Javascript at all.
Nobody heard about unit tests at all. Agile Manifesto has not been written yet. Continuous integration is just a dream, and XML was another buzzword. Our QA-strategy was to reboot the server once a week, because otherwise it absolutely randomly fell. We developed our own COM + component in Visual J ++ to parse JPEG files uploaded to the server. But as soon as encrypted JPEG-2000 files began to appear, our development failed miserably.
We did not use a version control system, even CVS, RCS or, God forbid, SourceSafe. Subversion did not exist yet, and our
Joel Test score was minus 25.
6776 days
For the last 6776 days I drank a cup of coffee every morning and wrote code using things like VBScript, Javascript, Linux, SQL, HTML, Makefiles, Node.js, CSS, XML, .NET, YAML, Podfiles, JSON, Markdown, PHP , Windows, Doxygen, C #, Visual Basic, Visual Basic .NET, Java, Socket.io, Ruby, Python, shell scripts, C ++, Objective-C, as well as unit tests, batch files and, most recently, used Swift .
A lot has happened in the last 6776 days, but most importantly, I got married. I left six jobs and was fired twice, started and folded my own business, received a master's degree. I published several open source projects and one of them even wrote an article by Eric Sadun herself from Ars Technica. I was shown in Swiss and Bolivian television shows, I watched Bill Gates and Steve Jobs perform in Seattle and San Francisco, participated and organized conferences on four different continents, wrote and published two books.
Burned out twice (
“I burned out twice” orig. ) And a lot of other things happened, both wonderful and terrible.
I often think about leaving programming, but somehow, after a while, I begin to feel the “call of code”. I like writing applications, systems, and software. To avoid professional burnout, I had to develop my own strategy. In this post I will share my secrets, so that you too can reach the glorious forties and, as an experienced developer, continue to work.
Tips for those who are young at heart
Below I will list some simple tips that will help you to remain a happy software developer at the age of forty.
Do not respond to HYIP
The first advice I can give is to ignore the hype. Every year there is a new programming language, framework, library, pattern, architecture component or paradigm that overwhelms the infosphere, like a storm. People literally go crazy. Conferences are held, books are written, and HYIP rises, then subsides. Consultants are fighting a lot of money to attract new people to this area and teach them the basics of lamer. The press picks up all these horrors and makes you feel guilty if you ignore this all.
And now, about what "Haypili":
- In 1997, these were CORBA and RUP.
- In 2000, these were SOAP and XML.
- In 2003, it was Model Driven Architecture and Software Factories.
- In 2006, it was the Semantic Web and the OLPC.
- In 2009, it was an augmented reality.
- In 2012 it was Big Data.
- In 2015 ... Virtual Reality? Bots? (Go language? Comment.)
Do not give in to HYIP, don't let it bother you. Keep working, keep studying what you've learned, and move on. Pay attention to something new, only if you are genuinely interested in something like this, if you feel that this can be of benefit to you in the medium and long term.
The reason is that, as the Romans said,
Nil novi sub luna (“Nothing is new under the Moon”). Most of what you see and what you study, in varying degrees, has existed for decades in computer science, and the essence is hidden under piles of marketing, books, blog entries and questions on stackoverflow. Each new architecture is simply a rethinking and adaptation of earlier ideas that have been in the air for decades, to modern realities.
Choose your "Galaxy" wisely
In our industry, each technology generates what I call the “Galaxy”. They have not only their own "stars", but also "black holes", "meteor showers" that disappear into the night, and many planets, only a small part of which is inhabited by at least some kind of life. Well, a huge amount of space dust and dark matter.
Examples of galaxies include .NET, Cocoa, Node.js, PHP, Emacs, SAP, and so on. Each of them has its own evangelists, developers, bloggers, podcasts, books, training courses and advisory services and sites, as well as problems of entering into them. Galaxies are based on the fact that their technology is the answer to all questions
(brings the thought of the number 42) . Thus, each galaxy basically contains an error.
Developers from different galaxies have their own position, which gave their technology life. They stick to their ideas, wear T-shirts and practice evangelism to convey the benefits of their choices to others.
In fact, I use the term "galaxy" to avoid the more popular, but more controversial term "religion", which, however, could describe all this much better.
In my case, I spent ten years in the Microsoft galaxy and the next nine in the Apple galaxy. I dare say that the main reason for the “camp shift” for me was Steve Ballmer. I am tired of the negative attitude of people from the Microsoft galaxy to open source software.
On the other hand, I think the Apple Galaxy is a great place, full of artists, musicians and writers who, by chance or intentionally, create software just like me.
I attended conferences in the Microsoft Galaxy, for example, TechEd 2003 in Barcelona, ​​or various tech-talks in Buenos Aires, Geneva or London. I even spoke at Microsoft DevDays in Geneva in 2006. The general attitude of developers to the Microsoft galaxy is hardly friendly, and the reason for this is secrets, NDA and cumbersome IT processes.
The Apple Galaxy for me, back in 2006, on the contrary, was completely different; She was full of creative people, such as musicians, artists and artists. They wrote software with passion and will continue in the same vein. It was a striking difference, and many of us still remained in this “galaxy” that united us.
Well, and then the first iPhone came out, and you already know everything else.So I advise you to choose wisely, then to enjoy your choice as much as you wish. But you should always keep a “telescope” with you, in order to make a hyper-jump to the neighboring galaxy if necessary.
Let's talk about the history of the software
The above leads me to the next point in our conversation: a conversation about how your favorite technology came into being. How was your favorite C # born? Do you know who created it? How was .NET created? Who was his lead architect? What were the limitations of this project and why did the language become what it is now?
Apply this template to any language or CPU architecture that you like and like: Python, Ruby, Java, any programming language. Find out their origin and how they became what they are now. The same applies to operating systems, network technologies, hardware, anything. Go and find out how people came up with it, what ideas they were guided by and how much time it took for their offspring to reach maturity. Because the birth of good software takes decades, you know.
An example of the evolution of ideas approx.The history of evolution in our industry is amazing and will reveal two things to you: first, everything has already been invented. Secondly: you could be the creator of something big. No, not even that. Hack yourself: you will become the creator of something big. And to help you get into the ranks of these people, I suggest you (my personal) list of books for reading:
It is also worth learning to appreciate those things that have passed the test of time: LISP, TeX, Unix, Bash, C, cacao, Emacs, Vim, Python, ARM, GNU Make, Man-pages. This is an example of some things that celebrated their anniversary, and which would be worth saving and learning them.
Keep studying
To study. Anything you want. Want to know Fortran? Take action. Consider Erlang interesting? Fine. Perhaps COBOL is the next major stage in your career? Fantasy. Need to learn more about functional programming on Reactive? Welcome. Design? By itself. Ux? Just have to. Poetry? Why not.
Many common concepts in the field of information technology have been used by developers for decades, which means that old programming languages ​​are still worth studying. Even the most ordinary ones. Firstly, it will allow you to assess the current state of the industry (or make you hate it, who knows) and, secondly, you will learn how to make the most effective use of existing development tools, because you will understand who is the heir from what happened.
Tip 1: Learn at least one new programming language each year. And it was not me who invented this, the book “Pragmatic Programmer” did it. And you know, it works. One programming language every year. Just, yes? Try to create something more than the typical “Hello, World”. I usually make a simple calculator to find out the possibilities of a new technology. It helps to understand the syntax of the language, allows you to familiarize yourself with the API, IDE and so on.
Tip 2: read six books on programming each year. I have a list of six must-read books that I will be busy this year. But my "list" for the past year:
Okay, here are seven books.Six books a year seems a bit too much, but, in fact, this is one book in two months. And most of the books I mentioned in this publication do not take too long to read. They are beautifully written, fun and easy to understand.
Also look at it from another point of view: if you are 20 now, by the age of 30 you will read more than 60 books on programming and more than 120 books when you reach my age. And you will try yourself in more than 20 programming languages. Think about it for a second. Some of the volumes I mentioned were written back in the seventies, others in the eighties, some in the nineties, and finally, most of them in the zero. They represent the best literature that I have met in our industry.
But you need not just read, but also take notes, bookmark, make notes on the pages - then you will reread them. Borges said that there is no greater pleasure than rereading the book. I can also advise you to buy them on paper. Believe me, e-books are overvalued and are not able to replace the real thing that can be held in your hands.
And know that when you start to grow old, the number of things that will be determined by you as new or something important that matters will begin to fall sharply. Get ready for this. And the fact that you cry quietly when aware of what happened - this is normal.
Train others
After you have learned something new, teach others. It is very important.
This does not mean that you should organize a whole educational process, rent a room and invite people to your courses to listen to your nonsense, no. “Educate others” means, for example, to give detailed answers to complex and serious questions on stackoverflow (that would be just fine). “Educate others” means starting to write a book, publish podcasts about your favorite technology, blog, write about it in the media. Going halfway across the world to another continent to organize a programming circle on the Raspberry Pi or tritely helping Jun or another junior developer by becoming his mentor (however, you shouldn’t do this if you are under
30 ).
Mentoring will make you more modest, because it will demonstrate how little you actually know and how limited your knowledge is. Teaching is the best way to learn. Only by constantly checking your own knowledge you learn correctly. It develops in you respect for other developers and technologies, because each language, regardless of whether it is mainstream or half-forgotten, has its own place in Tao programming. And only by teaching others can you feel it.
Through learning you can change the world for the better. Back in 2012, I received a letter from one woman in which one of my training courses was indicated. Previously, she was a developer under Adobe Flash, remember ActionScript and all that? In short, after twelve cloudless years of continuous work as a freelance Flash developer, she was on the street. Alone and with a baby in her arms, which had to be fed. In her letter, she told me that she studied on my courses and enjoyed the process, and also she learned a lot of useful things and was able to get a job as a mobile web developer after training. She wrote to me to say thank you. I can not say with certainty that I radically changed the world, but I can change it a little bit, I hope, for the better. The thought about this made every lesson that I gave to anyone since then, more meaningful and useful for me.
Jobs sucks
Do not expect any software corporation to offer you a place where you will make a career. Perhaps it could happen anywhere in the US, but I have never seen anything like this happening in Europe. This means that your career and success depend only on you. No one will tell you: “Oh, well, next year you can become a team leader, then a manager, and then after the technical director ...”
Neither. Behind. What. Everything, in fact, is exactly the opposite: you have been, are and will be a software developer. That is, in fact, a relatively expensive “factory” worker whose task is to ensure his management a happy life somewhere in the offshore zone, regardless of what he wants, the worker himself.
Do not take up work solely for the sake of money. Creating software is put on stream, in which you have to justify your absurdly high salary for an insane amount of working hours and unjustified expectations. And, at least in the case of Switzerland, you do not have a trade union that will lend you a shoulder if things go wrong. And even that not all trade unions move, if the situation is not received publicity in the media.
But there is an even worse option: in most of your workplaces, you will be persecuted, especially if you are a woman, a member of the LGBT community, or are not a member of any particular ethnic group. I saw how developers were threatened with a non-renewal of a work visa in order for them to work faster. I saw the spreading of the gay and women by their own colleagues.
Some of our industries are absolutely disgusting. You do not need to read this text on Medium
(or on Habré, note) to face this reality. You can even experience it in Switzerland. For example, in many local
(Swiss, approx.) Banks intolerable working conditions. Financial institutions want you to code 15 hours a day, even if it directly violates the law. Pharmaceutical companies want to get a code from you that would allow you to falsify the results of drug tests and help you bypass the rules. Startups literally want your skin to work for 18 hours without any compensation, and you would be fed back with something like “it's because we give you options for our shares” or “because we're all in the same team” .
It doesn't matter who you are or what you can write in your resume, for example, like Zach Holman, who created GitHub from scratch: you can be fired for any little thing.
No matter that your application provides more than half of the traffic and, consequently, the income of the employer - the API team will treat you and your ideas with scorn and disdain.
I was asked to work for free by very famous people, some with their own pages on Wikipedia. And you know - it's terrible. I will not name specific names, but I didn’t let them have a single junior, because people without moral principles and spitting on ethics do not deserve anyone's brains at all.
Whenever an HR manager tells you that “you have to do this (even if it does not fit in with your moral coordinate system), because we pay you a salary,” it’s worth remembering that the correct answer is: “You pay me in exchange for my brains, and I refuse to carry out this order. "
And to top it all, they will put you to work in the openspace and find the reason why you need to be proud of it. Openspaces - a cancerous tumor. This is the worst office layout ever invented, and is less suitable for software development or any other kind of brain activity.
Remember: just because you understand what you are talking about does not mean that you have to automatically agree with it.
Disobey the manager, tell him "I went n ****, I will not do that" and change jobs. There are fantastic jobs, there are not many of them, but they are. I was lucky enough to work on one of these. Do not let bad work kill you in enthusiasm, it is not worth it. It is worth disobeying and moving on.
Or even better - to become independent.
Know your strengths
You, truly, heard the phrase "This software engineer is worth ten." Myth, isn't it? Here's the thing: this is not a myth, but it works in a completely different way than you imagine.
From an employer's point of view, a programmer who “costs ten” creates ten times more than he is paid for. This means that creating a certain amount of code for the year, for which one hundred thousand francs will pay him, the employer will have one million or more from this code. And, of course, such workers will receive a bonus at the end of the year, because you understand, here we have capitalism. Therefore, know your own worth. Read Karl Marx and Piketty. I think I said enough here.
Keep moving forward as the shark moves in order to survive, because your skills are extremely valuable. Announce your salary, even write about it in your blog so that others know how much your work is worth. Companies want you to shut up and be silent in a rag, so women pay 70% of the salaries of men. So talk about it! I earn 135 thousand francs a year (
approximately 138,800 dollars at the rate of the Central Bank of the Russian Federation, approx. ). This is my current salary. What about you? The more we talk about our wages, the less inequality. Anyone with my experience should receive the same money for their work, regardless of race, gender, age or favorite football team. It would seem that all, the end of the story. But no, that's not all.
Take the elevator down
If you are a white man, you have enjoyed a number of privileges from birth just because you were born that way. It is your responsibility to change this industry towards greater integration.It is your duty to lift the elevator to others.Make this conscious decision and be aware of the influence of your actions. Do not blush and do not hesitate to change your opinion. Admit your mistakes and say "I am sorry" when the situation requires it. Listen and do not despair. Be self-sufficient and respect yourself.Do not criticize or ridicule the technical solutions of your colleagues; perhaps they had their own reasons for choosing this option. Be prepared for the fact that during the course of training your opinion may change. One day you might like Windows or become a fan of Android. In fact, Android has been popular with many lately, and that's fine.
Llvm
Everyone and everybody is crazy about Swift, but in fact I would pay more attention to LLVM (also a post about LLVM on Habré ).I think LLVM is by far one of the most important projects in terms of long-term impact. Objective-C, Rust and Swift blocks (the two most favorite and most strongly typed and compiled programming languages ​​according to the developer survey version for 2016), Dropbox Pyston, Clang Static Analyzer, ARC, Google Souper, Emscripten, LLVMSharp, Microsoft LLILC, Rubymotion, cheerp, watchOS apps, Android NDK, Metal - all these things were born or originated from LLVM. There are compilers using LLVM as an engine for all the most important modern languages. .NET CLR eventually began to support it, Mono already uses. Facebook tried to integrate LLVM with HHVM and WebKit, but recently switched from LLVM to a new B3 JIT JavaScript compiler.LLVM is cross-platform, cross-cpu-architectural, cross-language, cross-compiled, free and free, like a bird.Find out everything you can about LVMM - this is now the galaxy where true innovations are taking place, which will form the basis of the next twenty years of development.Believe your intuition
I sensed in my heart that .NET should become something great when I watched its release in June 2000. I sensed that the iPhone would become something great when I watched its release in 2007.In both cases, people laughed at my facial expression, literally laughed. In both cases, I listened to my instincts and, I believe, I did not lose.Trust your intuition and also be able to become happy.The API is Kings
Great APIs spawn great apps. And if the API “sucks”, then the application will “suck”, regardless of how beautiful the design is.Remember that “silent is better than talkative” (chunky is better than chatty orig.) And customers should also be dumb; push as much as you can on the API. Do not invent your own security protocols.Add server technology and make sure the site is reliable.Everything else can be set aside and use Socket.io, ZeroMQ, RabbitMQ, Erlang, XMPP and check how a certain action in the application works in real time, and this applies not only to chat applications. And forget about this question forever.Oh yes, you can still start building automation around the API, but I just say that.Overcoming difficulties
Simply means better. Is always.
Remember the principle of KISS (keep it simple, stupid - literally - “Make it easier, stupid” or a more polite variant of English. Keep it short and simple - “Make it shorter and easier”). And I mean not only user interfaces, but the entire project, right down to the deepest levels of your code.Refactoring, unit tests, code review, pull-requesting - all these tools are at your disposal and are designed to ensure that the code you wrote has the simplest possible architecture. This allows you to build viable systems in the long term.
Conclusion
The most important thing is to remember that your age does not matter.- : « , . . . , ».
, – , . , . , , , . , .
, , ,
, Wired.
As long as your heart tells you that you are capable of programming and creating something new, you will be young, young forever.Maybe in 2035, exactly 19 years from now, someone will make a presentation at a conference on software development and will begin his speech like this:“Hello, I'm forty-two, and this is my story.”Hope this will be one of you. You will be presenting some facts about distant 2016, for example, that this year David Bowie, Umberto Eco, Gato Barbieri and Johan Cruyff died. Either you will remember the time when SQL Server was available for Linux, or the year when Google Alpha Go defeated Lee Cedol in the game of Go. Or think about the leakage of Panamanian documents, or that Google tried to use Swift on Android this year, or as a year in which people still had such a useless thing as privacy.We will be just three turns around the sun from the problem of 2038 and many will be really nervous about it.Of course, I do not know what will happen after 19 years, but I can name three things that are sure to happen:- Someone will ask a stackoverflow question on how to filter email addresses using regular expressions.
- Someone will release a new framework for Javascript.
- Someone will build something cool on top of LLVM.
Or maybe you will remember this publication with a smile on your face.Thank you very much for your attention.