Дорожная карта лучшему [закрытому] программисту

  1. у Вас должна быть Intel Mac 1 глоток> и iPhone (или iPod Touch)
  2. , Вам нужно к , применяются к программе разработчика iPhone для запущения программы на iPhone. Вам просто нужно к [1 115] регистр на сайте, чтобы загрузить SDK и выполнить вещи в средстве моделирования.
  3. Когда-то принятый к программе разработчика или зарегистрированный, загрузите iPhone SDK, который включает XCode (среда разработки Mac). XCode прибывает в Ваши диски установки ОС, но это будет старой версией и не будет иметь библиотек iPhone.
  4. Изучают объективный C.
  5. Следуют за некоторым iPhone определенные учебные руководства или класс .
  6. iPhone Стэнфорда онлайн < sarcasm> Читайте больше в этом статья Guardian о том, как можно уйти c работы и сделать $20 тысяч в день из приложения для iPhone

    Сноски: 1. он просто средство моделирования iPhone, которое ограничивается Intel только Mac' s?

21
задан Josh Lee 9 October 2009 в 21:36
поделиться

21 ответ

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.

39
ответ дан 29 November 2019 в 06:07
поделиться

Одно небольшое дополнение к этим хорошим ответам. Когда я работаю над чужим кодом, обычно беру что-то новое. Если у вас есть возможность поработать с кем-то еще, обладающим такими же или более высокими навыками, наблюдение за его стилем программирования может научить вас многому.

Например, в C ++ и Javascript я больше не использую операторы if () без скобок. Причина в том, что слишком легко ошибиться:

while (true) {
    if (a > b)
        print a
        print b
}

Это очевидная опечатка, но ее очень легко ввести, особенно если вы редактируете существующий код. В уме я просто называю это защитным программированием, но подобные маленькие уловки ценны для того, чтобы сделать вас лучше.

Итак, найдите коллегу или наставника и работайте над их кодом.

2
ответ дан 29 November 2019 в 06:07
поделиться
  • Практикуйте индивидуально и коллективно

  • Сохраняйте непредвзятость, всегда узнавайте новое, не ограничивайте себя тем, что вам знакомо. Не только с технической точки зрения, дизайна пользовательского интерфейса, навыков работы с людьми ... Не бойтесь того, что нового

  • Экспертная проверка, говорите с людьми о своем коде, позволяйте людям говорить с вами о своем коде, у каждого есть уникальный способ взглянуть на проблему, и вы многому научитесь у сверстников.

  • Люблю кодировать. Если вам нравится то, чем вы занимаетесь, кажется, что тратить много времени не составит труда. Каждому кодеру нужен привод!

2
ответ дан 29 November 2019 в 06:07
поделиться

Есть два типа обучения: 1. Неформальный (например, как вы научились функционировать в обществе - через взаимодействие со сверстниками и семьей) 2. Формальный (например, обучение в старшей школе посредством планового обучения)

Если вы хотите получить работу по программированию начального уровня, вам подойдет формальное обучение на уровне бакалавриата в области компьютерных наук / инженерии. Однако, если вы хотите стать разработчиком рок-звезды, лучше всего это сделать с помощью неформального обучения: совершайте непреднамеренные ошибки и заставляйте старших разработчиков ругать вас, изучите шаблон проектирования, потому что приложение, которое вы обновляете, его использует, почти плачьте из-за плохого разработчик написал огромную запутанную программу без документации и передовых практик, и теперь вам нужно как можно скорее внести в нее несколько обновлений; вещь такого характера.

Трудно дать вам список всего, что вам нужно знать. Он варьируется в зависимости от области (например, веб-разработчик или разработчик настольного компьютера) и зависит от компании (например, Microsoft, которая продает программное обеспечение, а не General Motors, которые в основном используют его только в своих автомобилях.) Неформальное обучение и попытки научиться лучше выполнять свою работу и получить повышение по службе, на мой взгляд, ваш лучший выбор.

Чтобы доказать свою точку зрения, у всех здесь есть отличные ответы, но все они разные. Спросите рок-звездного разработчика, как он чему-то научился, когда и почему; они могут не знать - вещи просто случаются.

2
ответ дан 29 November 2019 в 06:07
поделиться

Помимо просмотра «кода прошлой недели», поговорите с пользователями о вашей работе после доставки - будьте самим собой, если возможно.

Это не моя сумка, а одни из лучших кодировщиков Я знаю, что тратил время на поддержку приложений. Я уверен, что опыт улучшил их продукт.

2
ответ дан 29 November 2019 в 06:07
поделиться

есть дыхание и мечтать о языке программирования, который вы используете (нет, серьезно, это помогает)

2
ответ дан 29 November 2019 в 06:07
поделиться

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.

2
ответ дан 29 November 2019 в 06:07
поделиться

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.

2
ответ дан 29 November 2019 в 06:07
поделиться

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.

2
ответ дан 29 November 2019 в 06:07
поделиться

The very belief in the roadmap's existence blocks the road to perfection.

1
ответ дан 29 November 2019 в 06:07
поделиться

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.

2
ответ дан 29 November 2019 в 06:07
поделиться

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. :)

3
ответ дан 29 November 2019 в 06:07
поделиться

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

2
ответ дан 29 November 2019 в 06:07
поделиться

В первую очередь напишите код. Пишите как можно больше. Решайте сложные проблемы. Если вы хотите стать действительно хорошим программистом, вам нужно хорошо разбираться в том, что вы делаете. Проведите много времени в отладчиках, наблюдая за тем, как все работает. Если вы хотите быть хорошим программистом, который действительно понимает, что происходит, вам нужно приступить к делу и написать высоко асинхронный код, узнайте, как работают процессоры и почему SSE такой классный. Изучите примитивы многопоточности и уметь их писать, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.

Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.

В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Изучите примитивы многопоточности и уметь писать их, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.

Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.

В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Изучите примитивы многопоточности и уметь писать их, а также описывать, что на самом деле происходит в процессоре. Я мог бы продолжать идти сюда, но вы уловили идею.

Во-вторых, найдите кого-нибудь, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.

В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Во-вторых, найдите того, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.

В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Во-вторых, найдите того, кто знает намного больше, чем вы, и научитесь. Эти отношения будут работать лучше, если вы уже глубоко погрузились в написание большого количества кода.

В-третьих, потратьте некоторое время на большую базу высококачественного открытого исходного кода. Я многому научился из кода Quake I и Quake II. Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

Помог мне стать лучшим программистом.

Четвертый подход к решению сложных проблем. Расширьте свои пределы. Создавайте вещи, которые вы считали невозможными. Прямо сейчас пишу специализированный компилятор. Я так многому научился, работая над этим последние пару месяцев.

2
ответ дан 29 November 2019 в 06:07
поделиться

All questions are rhetorical and meant to stimulate thought.

Technical parts:

  • Design Patterns - There are probably some specific to a domain but generally these are useful ways of starting parts of an application. Do you know MVC or MVP?
  • Basic algorithm starting points - Divide and conquer, dynamic programming, recursion, creating special data types like a heap, being greedy, etc.
  • Problem solving skills - How easily can you jump in and find where a bug is? Can you think of multiple solutions to the problem?
  • Abstract modelling - How well can you picture things in your head in terms of code or classes when someone is describing a problem?
  • High level versus low level - How well do you understand when one wants something high or low? This is just something I'd toss out there as these terms get through around a lot, like a high level view of something or a low level language.

Process parts:

  • Agile - Do you know Scrum, XP, and other new approaches to managing software projects? How about principles like YAGNI, DRY and KISS? Or principles like SOLID? Ideas like Broken Windows?
  • Developer Environment - How well do you know the IDE you use? Source Control? Continuous Integration? Do you know the bottle necks on your machine in terms of being productive?
  • xDD - Do you know of TDD, BDD, and other developments driven from a paradigm?
  • Refactoring - Do you go back over your old code and make it better or do you tend to write once and then abandon your code?

Soft skills:

  • Emotional Intelligence - Can be useful for presentations and working with others mostly.
  • Passions/Motivation - Do you know what gets your juices flowing and just kick butt in terms of being productive? Do you know what you would like to do for many many years?
28
ответ дан 29 November 2019 в 06:07
поделиться

I would look at improving roughly in this order, in iterations with each building on the previous one:

  • Programming concepts. Understand things like memory management, pointers, stacks, variable scope, etc.
  • Languages. Work on mastering several modern languages.
  • Design concepts. Learn about design patterns. Practice using them.
  • Communication. Often-overlooked. You can only become a highly valued Software Engineer if you can communicate effectively with non-tech people. Learn to listen and understand the needs that people are expressing, translate that into a set of requirements and a technical design, but then explain what you understood (and designed) back to them, in terms they can understand, for validation before you code. This is not an easy one to master, but it is essential.
  • Architectural concepts. Learn to understand the big picture of large, complex systems.
3
ответ дан 29 November 2019 в 06:07
поделиться

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.

2
ответ дан 29 November 2019 в 06:07
поделиться
  1. Learn your 1st programming language a new programming paradigm or a
  2. find a mentor you can learn from
  3. Apply what you've learnt in a real world project
  4. Learn from your mistakes and successes and goto step one

The trick is knowing what to learn first:

  • Programming languages - this is the place to start bcause you cannot write software without knowing at least one of these. After you've mastered one language try learning another.
  • Programming paradigm - i.e. object oriented, dynamic/functional programming etc. Try to learn a new one with each new language.
  • Design concepts - S.O.L.I.D, design patterns as well as architectural concepts.
  • People skills - learn to communicate your ideas.
  • Team leadership - learn how to sweep others and how to become a team or technological lead.

After that the sky is the limit.

5
ответ дан 29 November 2019 в 06:07
поделиться

Практика, практика, практика.

После того, как вы пройдете базовый уровень умения программировать, вы также можете читать полезные книги (например, Code Complete, Effective Java или эквиваленты и т. Д. .) за идеями о том, как улучшить свой код.

3
ответ дан 29 November 2019 в 06:07
поделиться

Для меня должна быть причина узнать что-то новое ... то есть, если у меня нет проекта или какой-то проблемы, которую мне нужно решить, надежды нет. Если это предварительное условие выполняется, я обычно пытаюсь заставить работать «Hello, world», и после этого нет предела. В наши дни большая часть разработки - это просто изучение новых API. Иногда происходит какая-то смена парадигмы, которая поражает воображение, но это не так часто, как люди думают, ИМХО.

2
ответ дан 29 November 2019 в 06:07
поделиться

My main совет: не бойтесь переписывать свой собственный код. Посмотрите на материал, который вы написали еще месяц назад, и вы увидите недостатки и захотите переписать материал.

Убедитесь, что вы понимаете некоторые основы: коллекции, равенство, хэш-коды и т. Д. Они полезны практически для всех современных языков.

В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.

Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!

В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.

Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!

В зависимости от используемого вами языка - используйте инструменты lint и metric и запускайте их поверх своего кода. Не все их предложения будут применимы, но изучение того, что важно, а что нет, важно. Например, FindBugs, PMD и т. Д. Для Java.

Прежде всего, улучшайте и продолжайте улучшать свою работу. Не относитесь к своей работе как к брошюре!

12
ответ дан 29 November 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: