Answer the question
In order to leave comments, you need to log in
How to leave the crossroads of technology?
In November last year, I decided to drastically change the field of activity and my life in general. This was prompted by the lack of prospects in the field on which I spent 5 years and some disappointment with what I was doing. The financial issue was also not in last place. I realized that I want to be able to do something. To be able to do something, to have a skill, to be in demand. A good cook, an excellent welder or a skilled designer. I am a pure humanist, there was not even computer science at school, which I graduated in 1999. From mathematics, I only remember how to add and subtract, multiply - I seem to remember too. Perhaps the pinnacle of my computational skills is the calculation of interest for tips.
But I have always been drawn to technology. Learn something new. Always interested in gadgets and developments. And that's why I decided to take up programming. It was kind of like putting a sack of potatoes on my frail shoulders. I didn't look for easy ways. I immediately took up the book "Java 8 for Dummies". I understood little there. Objects, loops, arrays, methods - seemed like a dark forest to me. And a month later I took up Objective-C and Swift. It was the study of programming for iOS that put a lot in its place in my head. I want to say that at that time I already went to software testing courses. I've read that it's easier to get into testing than straight into development. And in February, when I had already lost hope of getting a job as a tester, God help me and I was hired to develop automated tests in Java using Selenium, with which I was almost unfamiliar. I quickly had to learn webdriver on my own and return to learning Java. There is almost no time left to study development for iOS, and the desire is gone. I wanted to know something universal. I started looking at C#. Found great courses and books.
But the problem is, there's something wrong with me. I want to know more, draw this knowledge, but I can't finish anything. I will read part of that book, part of another. Today I'm a fan of Java, tomorrow I see myself as a Microsoft developer, and the day after tomorrow I'm looking at Python in general. With this approach, I will not go far, and I understand that. This or that language is not syntax, but huge frameworks that you need to know, to which you need to devote all your time. It's not like today is one thing and tomorrow it's different.
I love developing autotests and I want to grow in it. But I also want to learn some programming language so that I can try out for a junior later. Or at least for yourself.
How can I get out of these throwing? Or do I have such a character that I am not fit to be a developer?
Answer the question
In order to leave comments, you need to log in
The strategy has already been suggested: find any job to eat, and thereby buy time to learn something that will help you earn more, and thereby buy even more time, and in the end learn something that will make you work not for a salary, but for satisfaction.
As for the language, for the first time you should focus on something popular, pop, where there are the most vacancies, where it is easier to find a job. It makes no sense to pay attention to salaries yet - this is only the first step, then all the same, salaries will increase, and most likely you will change the field of activity, in accordance with your tastes and desires.
But in order to get time to learn a language, you need a source of income - any job that allows you to eat, pay rent, clothes, equipment and services.
And so in my opinion it is not the tool that is more important, but the ability to use it. You should start with algorithms, and use the language as a tool.
Although it is also impossible to postpone learning the language - practice is more important than theory. So in a complex - comprehend the algorithms in practice, as necessary, and memorize them.
Those. globally, it makes no sense to learn a specific language for the sake of learning a language - learning any language is not a problem, and this can be done right in the course of solving the problem. I have used a whole bunch of languages in my life, and all of them are one way or another, but similar to each other, there have never been problems with learning them. So learning a new language is not a problem.
Coders need a specific language - these are those who embody other people's ideas in code, i.e. final cogs in the software development process, performers. Coders are only required to transfer the already prepared algorithm to the required language, as quickly as possible, and, if possible, without errors.
Having learned a specific language, you can become a coder, but this is a dirty job, and for good - temporary, just a step on the way to becoming a programmer. We need to move towards an architect, an engineer, directly a programmer in the broadest sense.
It is more important for a programmer to know exactly how to solve problems, i.e. have an idea about algorithms and the skill of formalizing everything and everything. Those. to be able to directly develop algorithms, the ability to code is secondary.
Those. a programmer is just an engineer of information processing networks.
It also simplifies the task of standardizing approaches to solving problems, paradigms - most of them have already been formalized and described. For example, the well-known OOP, modular programming, finite state machines, etc. More than two dozen such models have been described, they should be mastered if possible. And don't be afraid to mix and match.
Additionally, the task is simplified by the fact that most of the algorithms are standard, and almost all known algorithms have already been implemented by someone in libraries or sources, so instead of writing from scratch, you just need to connect the desired library or copy-paste a piece from the source. But for this you need to know that such an algorithm exists at all, in which library it is implemented, when and how it can and should be applied.
Secondly, Google has been available for a long time, which will always tell you how to solve a particular problem, what algorithms are available for this, in what libraries, when and how to apply them.
Those. a modern developer can go purely due to the ability to google.
And this is not bad in fact - teachers at institutes say about the same thing: a good engineer is not the one who knows everything, but the one who can solve any problem. And it’s not knowledge that helps in this at all, but the ability to search for the necessary information, because it’s impossible to know everything anyway.
But anyway, even a programmer needs experience. It does not matter that he is untethered from languages - he is still tied to one language, information, and must be able to handle it.
Experience saves time and effort - where at first it took a week to google and try, then, with experience, you do everything in an hour, just already understanding what, how, when and why.
Experience is gained by practice - there is nothing new here: you just take a task to your liking and solve it.
You can’t generate tasks yourself - you are looking for a suitable external generator: problem user forums, imageboards, contests, programmer auctions (this is where freelancers work). It is also good to create your own project or participate in the development of someone else's - the development of any project always gives rise to many tasks that need to be solved by someone, and this is an excellent generator.
In general, you are looking for real customers, or you take on insignificant orders, or you work for the sake of altruism, solving what you were not asked for - there are all sorts of githubs and bug trackers.
The main thing is to find a problem and solve it. You start simple and gradually get more complex. At the same time, right along the way, you study algorithms and gain experience. Over time, you will begin to click tasks quickly and in between times, like seeds, those that took weeks, or even months, from you.
Failure to bring decisions to the end is the result of a wrong approach: either you take tasks for which you are not yet ready, too complex, or you do not have the opportunity to work - you do not have the conditions for solving the problem: time, place and attention. Or you just don’t really need it - everything suits you anyway, and there are no plans for the future.
With the third - you will come when you realize that you need it. They don't learn from under pressure.
With the second, everything is clear: you must either create conditions, or abandon this activity, and move on to another.
Someone refuses, goes to other jobs, mostly physical, unskilled, just not to think. And as a rule, he stays there until the end, no longer able to get out of the swamp of routine.
Someone adapts - fences off a corner for himself, changes jobs to one that gives more free time, starts working at night, clogs the noise with headphones, etc. crutches.
Someone radically changes his life - moves to rented apartments, allocates a room for himself, isolates it or sets a silence mode in the house, in general, creates full-fledged comfortable conditions for creativity. This is if remote work - many, precisely because of the inability to work at home, prefer offices, or special cafes or clubs for work.
With the first, everything is simple: if you can’t solve something, put it aside and go down a step on the difficulty scale.
There is such a psychological phenomenon: from solved tasks you get satisfaction, strength and motivation to move forward, from unresolved tasks - negativity, apathy, loss of will and motivation.
Moreover, the brain is arranged in such a way that only the negative is remembered. Therefore, it is extremely important to solve problems, and not allow unfinished tasks. Postpone, but don't give up.
An unsolved problem is like a psychological binge, something like depression: one unsolved problem leads to another unsolved problem, and you sink to the bottom so quickly, losing motivation and self-confidence. Vicious circle. You are right in it.
There is only one way to break such circles - a routine: a slow, consistent and purposeful onslaught, movement in one direction. Roughly speaking, you stop living with emotions and impulses, work out a well-thought-out development program, and act according to it, strictly, like a robot, until you start to receive a positive response from work, until the desire to move on comes - this is the return of will, motivation and faith into yourself.
To regain faith in yourself, you need to become a winner. Winners always win - that's the point. You need to start winning at any cost: you need to take on tasks that you can definitely solve, no matter how simple they are. You can return to the basics, the beginning, the children's level of difficulty, if necessary - the main thing is that the tasks begin to be solved, no matter what and how. Until you are sure that you are ready to move on - you keep the level, no matter how low and shameful it is. It is important to deceive the brain, and not to show class to the whole world, otherwise you will drown back.
The complexity of the task does not particularly affect motivation, but the fact of solving / not solving it has a strong effect. I didn’t decide - it means I didn’t master it, I didn’t master it - it means I’m not worthy, I’m not worthy - it means go to the bottom and don’t rock the boat. It's like impotence: impotent means not a man, not a man - it means no one, worthy of nothing, and you can wipe your feet on you. The subconscious spoils all the raspberries, so you shouldn't give it a chance - it's better to solve the problem easier than not to solve the harder one.
You need to choose a specific area and one technology stack. Don't look at the rest.
In a couple of years, you will become a good specialist in it and will receive 2-4 times more money.
This will be the point of no return: the transition to other areas will be impossible due to loss of income.
In fact, everything is simple, they found the main job - money drips, you don’t die of hunger. Then take on some project - determine what you want to see at the end - then decide on the technology and go ahead, dig from the fence to lunch. When you get tired of writing code - read the basics, so you will sit tightly on the technology. If you master it, consider already there and what to show in the portfolio and the practice is not weak. With the current shortage of progers, this will be a noticeable plus.
I'll add my 5 cents too. I am also a humanitarian by education, a lawyer. I even had a chance to work as a lawyer in the last courses of the institute. So changing the field of activity was also very, very difficult.
0x131315 listed all the highlights. Well, I will add a small comment about Open Source from myself.
In all my years as a Front-End developer, nothing has pushed me forward as much as developing my own Open Source projects (I've been developing jQuery plugins for the past few years). Not only is it very difficult, creative, sets real tasks for design and programming, but it also gives a huge moral return.
If you have the strength and patience to lead any useful Open Source project for long enough, invest your time in documenting it and creating at least some kind of community around it, then sooner or later, this community will begin to give back to you. They will write questions, thank you, suggest improvements, make pull requests, ask for advice. Your project will be mentioned in their blogs, twitters, etc. And most importantly, your project will be used by many people around the world. And it is this (and not the level of salary) that brings the greatest satisfaction from our work.
Excuse me, but what meaning do you attach to the following words and phrases:
a) High entry threshold
b) Diligence and laziness
c) Complex and easy
d) A large amount of knowledge
e) Specialist in the field x
Any technological field requires a lot of effort. And under great efforts is not meant to drag iron, but to spend a lot of time on gaining new knowledge and learning how to spend this time efficiently.
The IT sphere has grown so much that it is no longer possible to study it entirely. Only separate parts. And even in a separate part, you can become an expert in a few, or even many years.
An anthological situation happened to me 9 years ago, I graduated from programming courses where we were allowed to try ourselves in different programming languages (C ++, C #, JAVA, PHP), thereby choosing, after a long time I was looking for someone to take an internship in JAVA, but not one company in my city did not want to take on an intern (they simply don’t need one), so I ended up in 1C developers.
My goal was to gain experience in programming, understanding how the language works was not important.
Understand that? as? and why?.
What is it all for -
1) Set a goal for yourself (this is the most important, because without a goal you will wander back and forth), you must clearly represent the ultimate goal.
2) Break it down by intermediate results.
Note: Do not forget to encourage yourself - this is very important.
3) Don't back down.
It always helps me.
You need to take one thing and persevere in it, despite all the routine associated with the process, which will undoubtedly scare you away.
I'm doing Python/Django, we're making web apps. If you are interested in chatting - write to me on Skype or email, there are contacts in the profile.
From the post, I got the impression (sorry if I'm wrong) that you read too much and, based on what you read, try to form an opinion whether you like this technology or not, but at the same time do too little in terms of applying the knowledge gained in practice. It's like Novodvorskaya: "Sex is not interesting, I read about it."
Read a book on Java - try to write a simple application for Android. Read about C# - start sculpting an ASP.NET website or a WPF application. Perhaps in the process of experiments, let the soul lie down for something.
Now, in my opinion, the opposite is true: quite often people watch 2-3 video lessons and immediately start doing something without going into theory (which affects the quality of the code). And you are going to the other extreme.
About a year ago, I went into development in about the same way. I chose iOS simply because I always liked everything gadget and mobile, and Apple products are clearly the leader here. I love that magic of having all the knowledge of humanity in your pocket.
If you can't choose with your head, choose with your heart. What about IT excites you the most?
You have a high degree of curiosity. This is very good! But what to do next, I think no one will help you understand. There are many articles on this subject. The most common advice is: do what you want, not what others want. And that takes courage and determination. As in one song: "a new life is not given in vain." And yet, contrary to what the majority write here, I advise you to immediately look for a job in the direction that interests you most, and not get a job in any one, just to pay a salary, and then we'll see ...
And yes, one more thing: in some areas of development, more fundamental training is required than "learned the N language in 24 hours." I advise you to set aside time for the daily passage of relevant courses on such resources as Coursera, Stepic. It will also require perseverance and patience, but then your curiosity will become more specific, more controlled. At first you will grab onto everything that "glistens" and give up without finishing it, do not despair, some things will still have to really tighten you up so that you feel that this is what you would like to do. No wonder they say: a person finds time for what he really wants.
With this approach, I will not go far, and I understand that.
I believe that with your character, even those unfit for development will master this area. He is also a humanitarian, he took up the web after 30. Personally, I believe in you and wish you good luck!
And I'll put in my 5 cents. I have 2 educations, the first one I received while studying in the military commissar for the physics of nuclear installations, I realized that this was not interesting to me and not mine at all, I left. Then he entered a regular civil institute as a programmer. I have always had a craving for knowledge in the field of IT. I studied full-time and worked at night. The sys worked. admin, interesting but not paid very much. I found a job on the profile of a 1C programmer, I worked, I didn’t like it. I wanted Java. I found a job as a Java programmer, I worked, but I realized that I was absolutely not interested in doing routine tasks and in general there was a "vomit reflex" for this job. Ultimately, now I work as a signalman. I really like the work and besides, I found what I was looking for. I don’t get tired of digging into ATSs and writing in Java for myself at the same time. I also very often write programs that other people use at my main job with pleasure. As a result, programming has become my hobby with which I dilute my main work, sometimes I write programs for my friends, etc. , but not full-fledged outsourcing.
In general, why am I all this, if there is a craving and thirst for knowledge in IT, then it can very easily become a heavy and tedious burden when the area of \u200b\u200bknowledge of "personal interest" has been exhausted, but they are not allowed to study something new corporately. Having retired from work as a programmer, I was finally able to plunge into the world of PHP, JS, Go, Python, C, and I like it, although I understand that I could get several times more working as a Java programmer.
PS: straight cry of the soul turned out.
I won’t write for a long time, I’ll just say that this is an ordinary thing, because, as it was in Faust,
who seeks - forced to wander. You just find your language one day.
Today I'm a fan of Java, tomorrow I see myself as a Microsoft developer, and the day after tomorrow I'm looking at Python in general.Don't get fooled by PR: it "kills" the mind.
Or maybe the matter is in the ADV and the crossroads of technologies has nothing to do with it?
And how are things going with sports, running for example? Programming is hard monotonous work, in most cases :) the
link was not inserted - https://habrahabr.ru/post/260249/
I understand that this path is all thorny and little known for me. Therefore, I want some real things that you can touch. Java initially scared me off by the fact that all the time it was only about code, about the console. I had no idea what it was for and what it looked like. There was no visualization. Visualization appeared when working in Xcode, where there is a GUI designer. The same is in Visual Studio.
Python would have scared me away too, I guess. That is, for a beginner it is difficult to write code and not understand why it is being done, how it works in the end and why.
And most importantly - there is no system with some kind of logical end. That is, there is no course, having learned which you will achieve this or that result. Because of this, motivation is lost in some way. I fully support people who say that you need to study on some project, but you still need to find it and be something useful to this project. I don't have my own ideas yet.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question