加快编程环境的速度

时间:2022-12-05 22:57:42

I'm not a full-time software guy. In fact, in the last ten years, 90 % of my work was either on the hardware or doing low-level (embedded) code.

我不是一个全职软件的人。事实上,在过去十年中,我的90%的工作要么是在硬件上,要么是在执行低级(嵌入式)代码。

But the other 10% involves writing shell scripts for development tools, making kernel changes to add special features, and writing GUI applications for end-users.

但另外10%涉及为开发工具编写shell脚本,进行内核更改以添加特殊功能,以及为最终用户编写GUI应用程序。

The problem is that I find myself facing significant holes in my knowledge, often because it's been years since I've done "X", and I've either forgotten, or the environment has changed.

问题是我发现自己在知识方面面临着重大漏洞,通常因为我已经完成“X”已经有好几年了,而且我已经忘记了,或者环境已经改变了。

Every so often, there are threads on TheDailyWTF.com along the lines of "WTF: the guy spent all day writing tons of code, when he could have called foobar() in library baz". I've been there myself, because I don't remember much beyond the #include <stdio.h> stuff (for example), and my quick search somehow missed the right library.

每隔一段时间,TheDailyWTF.com就会出现一些线索:“WTF:那个人花了一整天的时间写了大量的代码,当时他可以在库baz中调用foobar()”。我自己一直在那里,因为我不记得#include 之外的东西(例如),我的快速搜索错过了正确的库。

What methods have you found effective to crash-learn and/or crash-refresh yourself in programming environments that you rarely touch?

您发现哪些方法在您很少接触的编程环境中有效地崩溃 - 学习和/或崩溃 - 自我崩溃?

9 个解决方案

#1


3  

  • Ask developers you know that work in the environment that you are interested in.
  • 向开发人员询问您是否知道在您感兴趣的环境中工作。

  • Search the web a lot.
  • 在网上搜索很多。

  • Ask specific questions in relevant IRC channels (Freenode is great).
  • 在相关的IRC频道中提出具体问题(Freenode很棒)。

  • Ask specific questions on * and other sites.
  • 在*和其他网站上提出具体问题。

There really isn't any substitue for being "in the daily flow" of the programming environment in question. Having a good feel for the current state of the art is something you only get from experience, as I'm sure you can verify in you own areas of expertise.

实际上,在所讨论的编程环境的“日常流程”中没有任何替代品。对现有技术水平有一种良好的感觉是你只能从经验中获得的,因为我相信你可以在自己的专业领域进行验证。

#2


2  

i try to keep up with general news about languages i'm interested in but aren't necessarily using at the moment. being able to follow the general changes helps a lot for when you have to pick it up again.

我试着跟上我感兴趣的语言的一般新闻,但目前不一定正在使用。当你不得不再次拿起它时,能够跟随一般变化有很大帮助。

beyond that, i personally find it easiest to grab an up to date reference book, and code a few basic things to get me used to the environment again, ie as a web programmer i'd make a simple crud app, or a quick web service/client.

除此之外,我个人觉得最简单的方法是获取最新的参考书,并编写一些基本的东西让我习惯环境,即作为一个网络程序员,我会做一个简单的crud应用程序,或者一个快速的网络服务/客户端。

#3


1  

For frameworks/APIs (such as a JavaScript framework or a widget library):

对于框架/ API(例如JavaScript框架或小部件库):

  1. Quickly scan through the entire API documentation; get a glimpse of all that's out there instead of picking the first method that seems to fit your needs.
  2. 快速浏览整个API文档;瞥见那里的一切,而不是选择适合您需求的第一种方法。

  3. If available, glance at the source code of the framework to see how the API was intended to be used. Seeing what's behind the curtain helps. And also some of the methods will have been used internally, showcasing their true intents.
  4. 如果可用,请浏览框架的源代码,以了解如何使用API​​。看到窗帘背后有什么帮助。并且一些方法将在内部使用,展示它们的真实意图。

  5. Don't necessarily always trust existing code (Googled, from co-workers, from books) since not everyone does the due diligence to find out the most proper way to use an API. Sometimes even samples in API documentation can be out-of-date.
  6. 不一定总是信任现有代码(谷歌搜索,来自同事,书籍),因为不是每个人都尽职尽责找到最合适的API使用方式。有时甚至API文档中的样本也可能过时。

#4


1  

In newer full-featured environments like Java, .NET, and Python, there are library solutions to almost every common problem. Don't think "how can I program this in plain C", but "which library solves this problem for me?" It's an attitude shift. As far as resources, the library documentation for the three environments I mentioned are all good.

在Java,.NET和Python等较新的全功能环境中,几乎每个常见问题都有库解决方案。不要想“我怎样才能用普通的C编程”,但是“哪个库为我解决了这个问题?”这是一种态度转变。就资源而言,我提到的三种环境的库文档都很好。

#5


0  

The best solution I think is to get a book on the topic / environment you need to catch up on.

我认为最好的解决方案是获得一本关于您需要了解的主题/环境的书。

Ask questions from developers who you know who have the experience in that area.

向您认识的具有该领域经验的开发人员提问。

You can also check out news groups (Google Groups makes this easy) and forums. You can ask questions, but even reading 10 minutes of the latest popular questions for a particular topic / environment will keep you a little bit "in the know".

您还可以查看新闻组(Google网上论坛使这一切变得简单)和论坛。您可以提出问题,但即使阅读特定主题/环境的最新流行问题10分钟,也会让您“知情”。

The same thing can go for blogs too if you can find a focussed blog. These are pretty rare though and I personally don't look to blogs to keep me "in the know" on a particular environment. (I personally find blogs most popular and interesting in the "here's something neat" or "here's how I failed and you can avoid it" or "general practice" areas.)

如果你能找到一个专注的博客,同样的事情也可以用于博客。这些是非常罕见的,我个人并不期待博客让我在特定环境中“了解”。 (我个人认为博客最受欢迎和有趣的是“这里有一些整洁的东西”或“这里我失败了,你可以避免它”或“一般练习”领域。)

#6


0  

In addition to the answers above, I think what you are asking for will take a significant amount of your time, and you must be willing to spend that time to achieve your goals. My method would be pretty much the same as Owen's answer; get a reference book or tutorial and work through the examples hacking in changes as you go to experiment with how any given thing works. I'd say as a bare minimum, allocate a hour to do this every other day, in a time that you know you won't be interrupted. Any less, and you'll probably continue to struggle.

除了上面的答案,我认为你所要求的将花费大量的时间,你必须愿意花时间来实现你的目标。我的方法与欧文的答案几乎相同;得到一本参考书或教程,并通过实例讨论变更,然后再去试验任何给定的东西是如何工作的。我会说,作为一个最低限度,每隔一天分配一小时来做这件事,在你知道你不会被打断的时候。更少,你可能会继续奋斗。

#7


0  

The best way to crash-learn is simple, simply do it, use google to search for X tutorial, open your favorite browser and start typing away. Once you reached a certain level of feeling with X, do look at other people things, there is lots of open source out there and there must be someboby who has used X before, look at how they solved certain problems and learn from this, this is an easy way to verify that you are 'on the right track' or that you're doing things or thinking in patterns that other people would define as 'common sense'.

崩溃学习的最佳方法很简单,只需这样做,使用谷歌搜索X教程,打开您喜欢的浏览器并开始输入。一旦你达到某种程度的感觉X,看看其他人的东西,那里有很多开源,必须有一些曾经使用过X的人,看看他们是如何解决某些问题并从中学到的,这个这是一种简单的方法,可以验证您是在“正确的轨道上”,还是在做某事或以其他人将其定义为“常识”的模式进行思考。

Crash-refreshing something is much easier since you have a suspended learning curve already, the way I do this is to keep some of the example you did while writing or keep some projects you did. Then you can easily refresh and use your own examples.

因为你已经暂停学习曲线,所以更容易刷新一些东西,我这样做的方法是保留你在写作时所做的一些例子,或者保留你做过的一些项目。然后,您可以轻松刷新并使用自己的示例。

The library issue you mention here well, only improving your search skills will improve that one (although looking on how others solved this will help as well)

你在这里提到的图书馆问题很好,只有提高你的搜索技能才能改善那个(虽然看看其他人如何解决这个也会有所帮助)

#8


0  

Don't try and pick up every environment.

不要试图挑选每个环境。

Focus on the one that's useful and/or interesting, and then pick a few quality blogs to regularly read or podcasts to listen to. You'll pick up the current state of the environment fairly quickly.

专注于有用和/或有趣的,然后选择一些高质量的博客定期阅读或播客收听。您可以相当快地获取当前的环境状态。

Concrete example: I've been out of the Java world for a long time, but I've been put on a Java project in the last few months. Since then I've listened to the Java Posse podcast and read a few blogs, and although I'm far from a Java guru I've got back up to speed without too much trouble.

具体的例子:我已经离开了Java世界很长一段时间,但是在过去的几个月里,我已经开始了Java项目。从那以后,我听了Java Posse的播客并阅读了一些博客,虽然我离Java大师很远,但我已经快速恢复,没有太多麻烦。

#9


0  

Just a though. While we are working on our code we know that we need to work very hard to optimize the critical path, but on non critical path we usually don't spend to much effort to optimize.
From your description you are working 90% on embedded and 10% on rest, lets assume that in 50% of the rest you are spending more time that needed. So according to my calculation you are optimizing about 5% of your work flow ...
Of course the usual google/SO/forums search is useful before you doing something new, but investing more than just that is waste of time for my opinion, unless you want to waste some time just for fun or general education ... :), but this is another story.
By the way I'm in same position and last time i needed some GUI and used MFC (because i used it sometimes 10 years ago :) ) and i perfectly understand that i probably will get better results with C# and friends, but the learning curve just not justify this especially knowing that i need mix the C code with GUI.

只是一个。在我们处理代码时,我们知道我们需要非常努力地优化关键路径,但在非关键路径上,我们通常不会花费太多精力来优化。根据您的描述,您在嵌入式和10%休息时工作率为90%,我们假设在其余50%的时间内您需要花费更多时间。所以根据我的计算,你正在优化大约5%的工作流程...当然,通常的谷歌/ SO /论坛搜索在你做一些新的事情之前是有用的,但投资不仅仅是因为我的意见浪费时间,除非你想浪费一些时间只是为了娱乐或普通教育... :),但这是另一个故事。顺便说一句,我在同一个位置,上次我需要一些GUI并使用MFC(因为我有时在10年前使用它:))我完全明白,我可能会用C#和朋友获得更好的结果,但学习曲线只是不能证明这一点,特别是我知道我需要将C代码与GUI混合。

#1


3  

  • Ask developers you know that work in the environment that you are interested in.
  • 向开发人员询问您是否知道在您感兴趣的环境中工作。

  • Search the web a lot.
  • 在网上搜索很多。

  • Ask specific questions in relevant IRC channels (Freenode is great).
  • 在相关的IRC频道中提出具体问题(Freenode很棒)。

  • Ask specific questions on * and other sites.
  • 在*和其他网站上提出具体问题。

There really isn't any substitue for being "in the daily flow" of the programming environment in question. Having a good feel for the current state of the art is something you only get from experience, as I'm sure you can verify in you own areas of expertise.

实际上,在所讨论的编程环境的“日常流程”中没有任何替代品。对现有技术水平有一种良好的感觉是你只能从经验中获得的,因为我相信你可以在自己的专业领域进行验证。

#2


2  

i try to keep up with general news about languages i'm interested in but aren't necessarily using at the moment. being able to follow the general changes helps a lot for when you have to pick it up again.

我试着跟上我感兴趣的语言的一般新闻,但目前不一定正在使用。当你不得不再次拿起它时,能够跟随一般变化有很大帮助。

beyond that, i personally find it easiest to grab an up to date reference book, and code a few basic things to get me used to the environment again, ie as a web programmer i'd make a simple crud app, or a quick web service/client.

除此之外,我个人觉得最简单的方法是获取最新的参考书,并编写一些基本的东西让我习惯环境,即作为一个网络程序员,我会做一个简单的crud应用程序,或者一个快速的网络服务/客户端。

#3


1  

For frameworks/APIs (such as a JavaScript framework or a widget library):

对于框架/ API(例如JavaScript框架或小部件库):

  1. Quickly scan through the entire API documentation; get a glimpse of all that's out there instead of picking the first method that seems to fit your needs.
  2. 快速浏览整个API文档;瞥见那里的一切,而不是选择适合您需求的第一种方法。

  3. If available, glance at the source code of the framework to see how the API was intended to be used. Seeing what's behind the curtain helps. And also some of the methods will have been used internally, showcasing their true intents.
  4. 如果可用,请浏览框架的源代码,以了解如何使用API​​。看到窗帘背后有什么帮助。并且一些方法将在内部使用,展示它们的真实意图。

  5. Don't necessarily always trust existing code (Googled, from co-workers, from books) since not everyone does the due diligence to find out the most proper way to use an API. Sometimes even samples in API documentation can be out-of-date.
  6. 不一定总是信任现有代码(谷歌搜索,来自同事,书籍),因为不是每个人都尽职尽责找到最合适的API使用方式。有时甚至API文档中的样本也可能过时。

#4


1  

In newer full-featured environments like Java, .NET, and Python, there are library solutions to almost every common problem. Don't think "how can I program this in plain C", but "which library solves this problem for me?" It's an attitude shift. As far as resources, the library documentation for the three environments I mentioned are all good.

在Java,.NET和Python等较新的全功能环境中,几乎每个常见问题都有库解决方案。不要想“我怎样才能用普通的C编程”,但是“哪个库为我解决了这个问题?”这是一种态度转变。就资源而言,我提到的三种环境的库文档都很好。

#5


0  

The best solution I think is to get a book on the topic / environment you need to catch up on.

我认为最好的解决方案是获得一本关于您需要了解的主题/环境的书。

Ask questions from developers who you know who have the experience in that area.

向您认识的具有该领域经验的开发人员提问。

You can also check out news groups (Google Groups makes this easy) and forums. You can ask questions, but even reading 10 minutes of the latest popular questions for a particular topic / environment will keep you a little bit "in the know".

您还可以查看新闻组(Google网上论坛使这一切变得简单)和论坛。您可以提出问题,但即使阅读特定主题/环境的最新流行问题10分钟,也会让您“知情”。

The same thing can go for blogs too if you can find a focussed blog. These are pretty rare though and I personally don't look to blogs to keep me "in the know" on a particular environment. (I personally find blogs most popular and interesting in the "here's something neat" or "here's how I failed and you can avoid it" or "general practice" areas.)

如果你能找到一个专注的博客,同样的事情也可以用于博客。这些是非常罕见的,我个人并不期待博客让我在特定环境中“了解”。 (我个人认为博客最受欢迎和有趣的是“这里有一些整洁的东西”或“这里我失败了,你可以避免它”或“一般练习”领域。)

#6


0  

In addition to the answers above, I think what you are asking for will take a significant amount of your time, and you must be willing to spend that time to achieve your goals. My method would be pretty much the same as Owen's answer; get a reference book or tutorial and work through the examples hacking in changes as you go to experiment with how any given thing works. I'd say as a bare minimum, allocate a hour to do this every other day, in a time that you know you won't be interrupted. Any less, and you'll probably continue to struggle.

除了上面的答案,我认为你所要求的将花费大量的时间,你必须愿意花时间来实现你的目标。我的方法与欧文的答案几乎相同;得到一本参考书或教程,并通过实例讨论变更,然后再去试验任何给定的东西是如何工作的。我会说,作为一个最低限度,每隔一天分配一小时来做这件事,在你知道你不会被打断的时候。更少,你可能会继续奋斗。

#7


0  

The best way to crash-learn is simple, simply do it, use google to search for X tutorial, open your favorite browser and start typing away. Once you reached a certain level of feeling with X, do look at other people things, there is lots of open source out there and there must be someboby who has used X before, look at how they solved certain problems and learn from this, this is an easy way to verify that you are 'on the right track' or that you're doing things or thinking in patterns that other people would define as 'common sense'.

崩溃学习的最佳方法很简单,只需这样做,使用谷歌搜索X教程,打开您喜欢的浏览器并开始输入。一旦你达到某种程度的感觉X,看看其他人的东西,那里有很多开源,必须有一些曾经使用过X的人,看看他们是如何解决某些问题并从中学到的,这个这是一种简单的方法,可以验证您是在“正确的轨道上”,还是在做某事或以其他人将其定义为“常识”的模式进行思考。

Crash-refreshing something is much easier since you have a suspended learning curve already, the way I do this is to keep some of the example you did while writing or keep some projects you did. Then you can easily refresh and use your own examples.

因为你已经暂停学习曲线,所以更容易刷新一些东西,我这样做的方法是保留你在写作时所做的一些例子,或者保留你做过的一些项目。然后,您可以轻松刷新并使用自己的示例。

The library issue you mention here well, only improving your search skills will improve that one (although looking on how others solved this will help as well)

你在这里提到的图书馆问题很好,只有提高你的搜索技能才能改善那个(虽然看看其他人如何解决这个也会有所帮助)

#8


0  

Don't try and pick up every environment.

不要试图挑选每个环境。

Focus on the one that's useful and/or interesting, and then pick a few quality blogs to regularly read or podcasts to listen to. You'll pick up the current state of the environment fairly quickly.

专注于有用和/或有趣的,然后选择一些高质量的博客定期阅读或播客收听。您可以相当快地获取当前的环境状态。

Concrete example: I've been out of the Java world for a long time, but I've been put on a Java project in the last few months. Since then I've listened to the Java Posse podcast and read a few blogs, and although I'm far from a Java guru I've got back up to speed without too much trouble.

具体的例子:我已经离开了Java世界很长一段时间,但是在过去的几个月里,我已经开始了Java项目。从那以后,我听了Java Posse的播客并阅读了一些博客,虽然我离Java大师很远,但我已经快速恢复,没有太多麻烦。

#9


0  

Just a though. While we are working on our code we know that we need to work very hard to optimize the critical path, but on non critical path we usually don't spend to much effort to optimize.
From your description you are working 90% on embedded and 10% on rest, lets assume that in 50% of the rest you are spending more time that needed. So according to my calculation you are optimizing about 5% of your work flow ...
Of course the usual google/SO/forums search is useful before you doing something new, but investing more than just that is waste of time for my opinion, unless you want to waste some time just for fun or general education ... :), but this is another story.
By the way I'm in same position and last time i needed some GUI and used MFC (because i used it sometimes 10 years ago :) ) and i perfectly understand that i probably will get better results with C# and friends, but the learning curve just not justify this especially knowing that i need mix the C code with GUI.

只是一个。在我们处理代码时,我们知道我们需要非常努力地优化关键路径,但在非关键路径上,我们通常不会花费太多精力来优化。根据您的描述,您在嵌入式和10%休息时工作率为90%,我们假设在其余50%的时间内您需要花费更多时间。所以根据我的计算,你正在优化大约5%的工作流程...当然,通常的谷歌/ SO /论坛搜索在你做一些新的事情之前是有用的,但投资不仅仅是因为我的意见浪费时间,除非你想浪费一些时间只是为了娱乐或普通教育... :),但这是另一个故事。顺便说一句,我在同一个位置,上次我需要一些GUI并使用MFC(因为我有时在10年前使用它:))我完全明白,我可能会用C#和朋友获得更好的结果,但学习曲线只是不能证明这一点,特别是我知道我需要将C代码与GUI混合。