iPhone Стэнфорда онлайн < sarcasm> Читайте больше в этом статья Guardian о том, как можно уйти c работы и сделать $20 тысяч в день из приложения для iPhone
Сноски: 1. он просто средство моделирования iPhone, которое ограничивается Intel только Mac' s?
It's not true that practice makes perfect.
It's perfect practice that makes perfect.
If all you do is keep repeating the same bad practices again and again, you'll only make it possible to create bad code faster.
By all means keep coding. But at the same time be critical of everything you do. Always have a jaundiced eye that looks for ways to do things better. Read widely to get new ideas. Talk to others about how they do things. Look at other people's code, good and bad.
There's no "sure" way to learn anything that I know of. If there was, anyone could master this.
Одно небольшое дополнение к этим хорошим ответам. Когда я работаю над чужим кодом, обычно беру что-то новое. Если у вас есть возможность поработать с кем-то еще, обладающим такими же или более высокими навыками, наблюдение за его стилем программирования может научить вас многому.
Например, в C ++ и Javascript я больше не использую операторы if () без скобок. Причина в том, что слишком легко ошибиться:
while (true) {
if (a > b)
print a
print b
}
Это очевидная опечатка, но ее очень легко ввести, особенно если вы редактируете существующий код. В уме я просто называю это защитным программированием, но подобные маленькие уловки ценны для того, чтобы сделать вас лучше.
Итак, найдите коллегу или наставника и работайте над их кодом.
Практикуйте индивидуально и коллективно
Сохраняйте непредвзятость, всегда узнавайте новое, не ограничивайте себя тем, что вам знакомо. Не только с технической точки зрения, дизайна пользовательского интерфейса, навыков работы с людьми ... Не бойтесь того, что нового
Экспертная проверка, говорите с людьми о своем коде, позволяйте людям говорить с вами о своем коде, у каждого есть уникальный способ взглянуть на проблему, и вы многому научитесь у сверстников.
Люблю кодировать. Если вам нравится то, чем вы занимаетесь, кажется, что тратить много времени не составит труда. Каждому кодеру нужен привод!
Есть два типа обучения: 1. Неформальный (например, как вы научились функционировать в обществе - через взаимодействие со сверстниками и семьей) 2. Формальный (например, обучение в старшей школе посредством планового обучения)
Если вы хотите получить работу по программированию начального уровня, вам подойдет формальное обучение на уровне бакалавриата в области компьютерных наук / инженерии. Однако, если вы хотите стать разработчиком рок-звезды, лучше всего это сделать с помощью неформального обучения: совершайте непреднамеренные ошибки и заставляйте старших разработчиков ругать вас, изучите шаблон проектирования, потому что приложение, которое вы обновляете, его использует, почти плачьте из-за плохого разработчик написал огромную запутанную программу без документации и передовых практик, и теперь вам нужно как можно скорее внести в нее несколько обновлений; вещь такого характера.
Трудно дать вам список всего, что вам нужно знать. Он варьируется в зависимости от области (например, веб-разработчик или разработчик настольного компьютера) и зависит от компании (например, Microsoft, которая продает программное обеспечение, а не General Motors, которые в основном используют его только в своих автомобилях.) Неформальное обучение и попытки научиться лучше выполнять свою работу и получить повышение по службе, на мой взгляд, ваш лучший выбор.
Чтобы доказать свою точку зрения, у всех здесь есть отличные ответы, но все они разные. Спросите рок-звездного разработчика, как он чему-то научился, когда и почему; они могут не знать - вещи просто случаются.
Помимо просмотра «кода прошлой недели», поговорите с пользователями о вашей работе после доставки - будьте самим собой, если возможно.
Это не моя сумка, а одни из лучших кодировщиков Я знаю, что тратил время на поддержку приложений. Я уверен, что опыт улучшил их продукт.
есть дыхание и мечтать о языке программирования, который вы используете (нет, серьезно, это помогает)
In addition to the rest of the great advice already given here, don't be afraid to read about coding and good practice, but also take everything with a grain of salt and see what works best for you. A lot of advice is opinion.
Good sites to read: -thedailywtf.com -joelonsoftware.com -codinghorror.com -blogs.msdn.com/oldnewthing
A great place to get practice is programming competition websites. Those will help you learn how to write good algorithms, not necessarily maintainable code, but they're still a good place to start for learning. The one I used to use (back when I had time) was: http://uva.onlinejudge.org/
Learn more than one language. One at a time, definitely, but ultimately you should be fluent in a couple. This will give you a better perspective I think, and help you to become an expert at programming, rather than being an expert at a certain language.
Learn the ins and outs of computers at all levels, hardware, os, etc. Ideally you should be able to build your own system, install multiple operating systems on it, and diagnose just about every problem that can arise. I know many programmers who are not "computer tech people" and their failure to understand what is happening at every level becomes a major hindrance in diagnosing and fixing unusual bugs or performance issues.
Sure, strictly speaking, the more you practice programming, the better you become at solving those sorts of problems. But is that what you really want?
Programming is a human activity more than a technological one, at its heart. It's easy to improve your computer skills, not so hard to improve your interpersonal skills.
Read "Journey of the Software Professional" by Hohmann. One of the concepts the concepts Hohmann describes is the "cognitive library," which includes both programming skills and non-programming skills. Expand your cognitive library, and your programming skill will improve too.
Read a lot of non-programming books too, and observe the world around you. Creating useful metaphors is an essential skill for the successful programmer. Why do restaurants do things how they do? What trade-offs is the garbage department making when they pick up the garbage every few days instead of every day? How does scaling affect how a grocery store does business? Be an inquisitive human to be a better programmer.
One you have learned something, try to learn something a little harder. Read and practice a lot about things that seem confusing at first time (lambda functins, threading, array manipulation, etc). It will take its time, but once you have practiced enough, what seemed confusing at first, will be familiar and easy.
The very belief in the roadmap's existence blocks the road to perfection.
You can try learning one thing really well and then expanding out to programming areas that are associated with the things that you have learnt, so that you can offer complete solutions to customers.
At the same time, devote part of your time to explore things outside your comfort zone.
Take time to learn about all sorts of coding techniques, tools and programming wisdom. This I have found to be crucial to my development. It's to easy to just code away and feel productive. What about what could be if you just had some more knowledge / weaponry under your belt to bang out that next widget.
Knowledge/know how is our real currency. The more we know the more we can make a better decision about how something should be done and do it faster.
For example, learn about:
•Development Practices, Software Design, Estimation, Methodologies Business Analysis Database Design (there are a lot of great books out there and online resources)
•Read Code - Open Source Projects are a good place for this. Read Programming blogs
•Try to participate on Open Source Projects.
•Look for programming user groups in your town and/or someone who can mentor you.
And yes, as mentioned practice. Don't just read, do and watch how you will improve. :)
Learning a programming language is in many ways similar to learning a spoken language. The only way to get good at it is to do it as often as possible. In other works
Practice, practice, read and then practice more
В первую очередь напишите код. Пишите как можно больше. Решайте сложные проблемы. Если вы хотите стать действительно хорошим программистом, вам нужно хорошо разбираться в том, что вы делаете. Проведите много времени в отладчиках, наблюдая за тем, как все работает. Если вы хотите быть хорошим программистом, который действительно понимает, что происходит, вам нужно приступить к делу и написать высоко асинхронный код, узнайте, как работают процессоры и почему SSE такой классный. Изучите примитивы многопоточности и уметь их писать, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.
Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.
В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.
Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Изучите примитивы многопоточности и уметь писать их, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.
В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.
Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Изучите примитивы многопоточности и уметь писать их, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.
В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.
Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Во-вторых, найдите того, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.
В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.
Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Во-вторых, найдите того, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.
В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.
Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Помог мне стать лучшим программистом.Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
Помог мне стать лучшим программистом.Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.
All questions are rhetorical and meant to stimulate thought.
Technical parts:
Process parts:
Soft skills:
I would look at improving roughly in this order, in iterations with each building on the previous one:
Find a program that intrigues you, one that solves a problem, or one that would simplify many of your tasks. Try to write something similar. You'll get up to speed very quickly and have fun doing it at the same time.
The trick is knowing what to learn first:
After that the sky is the limit.
Практика, практика, практика.
После того, как вы пройдете базовый уровень умения программировать, вы также можете читать полезные книги (например, Code Complete, Effective Java или эквиваленты и т. Д. .) за идеями о том, как улучшить свой код.
Для меня должна быть причина узнать что-то новое ... то есть, если у меня нет проекта или какой-то проблемы, которую мне нужно решить, надежды нет. Если это предварительное условие выполняется, я обычно пытаюсь заставить работать «Hello, world», и после этого нет предела. В наши дни большая часть разработки - это просто изучение новых API. Иногда происходит какая-то смена парадигмы, которая поражает воображение, но это не так часто, как люди думают, ИМХО.
My main совет: не бойтесь переписывать свой собственный код. Посмотрите на материал, который вы написали еще месяц назад, и вы увидите недостатки и захотите переписать материал.
Убедитесь, что вы понимаете некоторые основы: коллекции, равенство, хэш-коды и т. Д. Они полезны практически для всех современных языков.
В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.
Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!
В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.
Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!
В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.
Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!