Проблемная природа разработки программного обеспечения
Когда я впервые начал разрабатывать программное обеспечение, я чаще всего слышал фразу: «Разработка программного обеспечения — это решение проблем». Но никто не говорил, что разработка программного обеспечения сама по себе носит проблемный характер.
Наука и инженерия также являются инструментом решения проблем, как и разработка программного обеспечения. А цель - решение проблемы. Но разработка программного обеспечения — проблематичный инструмент, как рыба, выскользнувшая из рук.
И на основе этой мысли; Прежде чем решать проблемы, думаю, надо починить сломанный топор или хотя бы научиться рубить дрова сломанным топором.
Вот некоторые из проблем, которые я вижу в разработке программного обеспечения;
- Она меняется так быстро, и мало что можно назвать постоянным знанием.
- Учебных материалов слишком много, они слишком запутаны и плохо документированы.
- Нельзя действовать интуитивно, необходимо действовать с точными знаниями.
- Он не развивается децентрализованным, неконтролируемым и стандартизированным образом.
- Слишком много сложных решений простых проблем.
- Существует так много разных технологий, выполняющих одну и ту же задачу, и, как и разные религии, служащие одному Богу, у каждой свои правила.
- Информации настолько много и она динамична, что удержать ее в памяти невозможно.
- Это не останавливается на обучении и никогда не позволяет вам почувствовать себя экспертом.
- Самая большая проблема в том, что все это не воспринимается как проблема и выдается за то, что «вот что такое разработка программного обеспечения».
- Имеет изменчивый характер
- Источники размыты
- Не интуитивный
- Не достаточно стандартизирован
- Излишне сложный
- Слишком много информации
- Слишком много бесполезной информации.
Человек, который хочет специализироваться в определенной области и предмете в любой отрасли науки, может достичь достаточного опыта, получив научные статьи и книги, написанные по этому предмету, оставаясь дома в течение нескольких месяцев, изучая и делая необходимые записи.
В разработке программного обеспечения все так не работает. Официальной документации всегда недостаточно. Необходимо продолжить сбор неполной или неверной информации из руководств и видеороликов, написанных третьими лицами. И это вызывает очень некачественный, ухабистый процесс обучения. По этим причинам разработчик программного обеспечения не может специализироваться в своей области так же, как человек, специализирующийся в области науки.
И даже если он специализируется, это не постоянно. Потому что каждые несколько месяцев выходит новый Эйнштейн и предлагает новую теорию. Почему-то в этой области так много Эйнштейнов…
Я знаю, что говорить о том, какой должна быть разработка программного обеспечения, по-детски. Как это делали древние философы. Они много говорили о том, каким должно быть государство.
- Пусть философы правят государствами.
- Пусть дети будут общим достоянием общества.
- Не было войны.
- Не рвите цветы.
- Все языки программирования должны быть объединены в единый синтаксис без потери своих свойств.
- Эквивалентные библиотеки и фреймворки объединяются в единую библиотеку и фреймворк без потери своих свойств.
- Пусть эти отдельные языки и библиотеки управляются и стандартизируются официальным учреждением.
- Пусть лингвисты сделают язык максимально интуитивным.
- Пусть настоящие авторы пишут документы.
- Все разработки в мире программного обеспечения анонсируются из одних рук.
Но это утопия и в сегодняшнем мире не будет правдой. Так что же делать программисту? Она должна измениться либо сама, либо отрасль. Как вы можете понять из упомянутой мною утопии, чтобы индустрия изменилась, потребуется много времени, возможно, это будет невозможно. Имея ограниченный срок жизни, разработчик должен развиваться в этих условиях.
Как я сказал в начале, разработка программного обеспечения — скользкая рыба. В первую очередь нужно научиться держать этот инструмент. И если мы хотим или должны сделать эту работу в течение нашей ограниченной жизни. Первое, чему нужно научиться, — это иметь необходимую философию, систему и методы, чтобы сохранить этот инструмент.
Лучший совет, который я могу дать, — специализироваться на постоянных. Это те, которые приходят мне на ум;
- английский язык
- Способность учиться
- Алгоритмы и умение решать проблемы

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































