3 years of blind programming. Part 1

Good day to all! I want to share my experience from the category "Enter IT". Moreover, it took place in a completely non-visual mode. Little is known about blind people in our society, and even less about blind programmers. And this article offers to follow how and where they come from, even if using my example.



The article is not of any practical use. Unless someone can get a little motivational charge with her help and procrastinate.



Start



I got acquainted with programming in computer science lessons in the 9th grade. By that time, due to a congenital disease, my vision had almost run out, and for several years I had been homeschooled. There was a lot of free time, but few interesting activities. Therefore, I took up a new subject with great desire. Writing programs was like solving mathematical problems. But here the problem could be posed independently, and at the end there was a code that could solve it without you. True, at first, until the moment I learned to work with a computer by ear, it remained only in my head.



School was over. I even took the exam in computer science, so I was then carried away by this subject. In addition, until recently it was not clear which university to enter. Neither me nor my parents had any doubts about the need for higher education. But which direction to choose was not clear.



On the one hand, I have always had a craving for mathematics and science. But how can a person without sight show himself there? It was still possible to continue development towards IT. But as a result, a more compromise and universal management was chosen. Moreover, in one of the universities in this specialty there was distance learning. That removed the need to move to a large city right now. So in the end it happened. But after a year of training, the issue of future employment came up more clearly.



I could hardly imagine myself as a manager. What will i do? Will I be able to realize myself? In general, for a blind person, choosing a profession is not a trivial task. Many go to massage therapists and related medicine. Someone can do translations and other work with text. In general, there are many places where you can try yourself. But there is always a big risk of being faced with poor availability of something important.



Working with a computer, in my opinion, is exactly the direction where blind people can show themselves well. First, they have to know him pretty well. Using a screen reader requires a deeper knowledge of the operating system, keyboard, hotkeys, and programs than would otherwise be required for ordinary users. The same touch typing in specialized courses is studied immediately. Otherwise, it won't work anyway.



Secondly, most programs and almost the entire Internet from the keyboard are accessible almost as well as for working with a mouse. This means that the blind will not lag far behind when performing everyday tasks. And somewhere, due to a deeper knowledge of the subject, and surpass the rest.



Well, and thirdly, I just liked it. And therefore, by the second year, I returned to programming, but with the firm goal of making it my profession.



Training



It is my deep conviction that the main problem of a beginner is that he has no idea what modern programming is in fact. In my piggy bank I had a school course PascalABC.net, and a couple of hundred solved problems from the textbook. But real programs are written in something else, right? And on what? The previously heard ones came to mind: C ++, java, C #. How they differ and what they are used for was not clear. I started with C ++. I dug up a textbook from somewhere, where, as an introduction in a half-joking geek tone, the author discusses the pros and cons of the java virtual machine phenomenon, garbage collection and unsafe C # mode, IDE, compiler and libraries that we need to work.



After running through the first couple of chapters, it became clear that this tutorial was not written for me and now I cannot understand it. A mentor was needed. And he was found.



Some enthusiast in a mailing list for the blind announced the opening of programming courses specifically for such an audience and offered to choose which technology they would like to use. I voted for C ++ without a doubt. What is php and web development was unknown, and game making seemed like a frivolous occupation. But in the end php won. Probably because the self-made Internet voting system was in no way protected from repeated passage.



So the vector of my development involuntarily shifted towards the web. The course itself lasted just over a month. Over the course of a few sporadic sessions, we only had time to get to know the basics of html. The last one even wrote a couple of lines in php. But the enthusiasm of the organizer-philanthropist quickly dwindled, classes were held less and less. And in the end they stopped altogether. But the direction was set, and then I could follow it on my own. However, the question remained unresolved. What exactly should a programmer know?



On the Internet, you can find a solution to any simple problem. But the whole picture from reading many narrow articles did not add up. And then on my way there were video courses.

I've read a lot of opinions about them. More often negative ones came across. That this is an absolutely useless waste of time and money. What they lure to themselves with fabulous promises, in fact, do not give anything except the confidence of the graduate that he is now a development guru. The courses are certainly different. But at that moment, I came across very good material, with the help of which I figured out in 2 months the basic php structures, form processing, authorization, sessions, cookies, working with the database, oop and mvc. And most importantly, he did it in a comprehensive manner. Each element complemented the overall picture of server development. At the end of this stage, I could already make my site with non-standard logic and felt like a real specialist. Beginners, but with a solid understanding of where to go next.



First tasks



But first it was necessary to try to apply the existing knowledge in practice. Self-improvement and development can be endless. But professionalism involves the application of knowledge in practice. Plus, getting results right now is a great incentive to continue your efforts. Well, and I certainly felt the need to prove to myself that I really can.



The best way to do this was by freelancing. I registered on several exchanges and started tracking orders. And then an interesting thing opened up: almost all of them were either about the frontend or about php. Until then, I secretly regretted taking up this direction. I didn't really like the scripting language. It didn’t have the rigor of pascal, it didn’t compile, and you won’t write PC applications on it. And this is exactly what, in my opinion of the time, the development should be. But the freelance and remote job market has tweaked my position. And soon I actually received my first order.



It was required to make a special custom page on crm. It had to display data on applications and works in a special format, and the user had to be able to mark them with flags. Crm itself did not have built-in functions for solving such a specific task, but it allowed expanding its functionality using the language in which it was written itself - php.



Suffice it to say that I did the task for one or two days for 2 weeks. Mainly due to the fact that out of habit it was very difficult to figure out exactly how crm works. And where you can see the schema of her database. But in the end, all the requirements were met and the customer was very pleased. Because, as I understood later, other developers did not want to take on such crm at all.



Framework



But "king of freelancing" is not the title that inspired me at the beginning of the journey. Something more powerful, architectural was required, with the help of which serious companies create complex and technologically advanced user services - a framework. I heard this word on video courses, where both teachers said that this is the main tool of their work. It was clear that it was necessary to go in that direction.



To begin with, the code ignitor was studied. It was a modified copy of the mvc framework that we made on our own in the courses. It was as simple as a cork, but it already allowed making real sites. However, I got acquainted with their quality at the first order for revision of some service. I’ll hardly forget these 700 lines of controller action code. Of course, you can write bad code on anything, but CI seemed to only provoke it. No wonder he is mostly a thing of the past.



Further, before me, as before every decent traveler, 3 roads opened up: yii, laravel and symfony. After a little evaluation, I chose the latter. For purely subjective reasons, of course:

  1. I really liked its folder structure and configuration via annotations.
  2. In reviews on the Internet, respect was read about him. It seemed to me to be a powerful and very complex instrument. Sometimes excessive in its power. But having mastered it, you can always look down at the games in the sandbox of the php world with a slight squint.


I started to study. And the best way to master a new platform is to do something interesting on it. Back in school, I wrote a program for my younger brother to study counting. A random number generator and four basic arithmetic operations. The child solves a given number of examples, and at the end the number of errors is counted and a grade is given. A very useful thing at a certain stage of training. And now it could be implemented at a new technological level.



It took a lot of time. I did and remodel. And in parallel, the symphony was reworking my brain, because I so simply did not want to give up the idea of ​​shoving the container in essence. I figured out many of its components. Upgraded from version 3 to version 4 and studied git. About six months later, I checked the reality of the pink dream of launching my super application into the light. I grieved a little from zero results and realized that it was time to move to the next level - the search for a real job.



To be continued.



All Articles