Monday, January 25, 2016

The Productive Programmer - 卓有成效的程序员



https://dzone.com/articles/7-habits-of-super-productive-java-developers

1. Know Your Tools (And Have the Right Ones)

Before kicking off any new project, spend some time thoroughly researching the existing frameworks or libraries that could make your implementation easier. Along with that, have the right IDE and customize it for your project.
Outside of the tools that are specific to your project and language, our developers deploy a veritable battalion of everyday tools to increase their efficiency. Stormpath Java evangelist Micah Silverman shared his list:
  • Zoom It: An on-screen magnifying glass which comes in handy for presentations and webinars
  • Skitch: Multi-feature screen capture (goes beyond the out-of-the-box tool)
  • Private Internet Access: Easy VPN service (great for hotels and public networks)
  • Jumpcut: Indispensable clipboard buffering app
  • RecordIt: Multimedia recorder that turns quick screencasts into animated gifs
  • Alfred: Enhanced Spotlight functionality (and a lot more)
  • Franz: One chat app to rule them all! Franz supports Slack, Hipchat, Facebook Messenger, GChat, Whatsapp, and Telegram (and many others)
  • Menu Meters: Machine health right in the menu bar
  • Bartender: Tame the Mac menu bar
  • Karabiner: Keyboard customizer
  • Be Focused Pro: Pomodoro technique timer for the menu bar
  • Riverflow: Workflow manager that assigns unique two-finger gestures to actions

3. Love That httpie

Forget curl; httpie is where it’s at, so learn to love the command line. This Swiss Army knife for developers is quite possibly the most powerful tool in your arsenal, and the most frequently overlooked

4. Be Proactive About Productivity

If you’re naturally focused and driven you might not need the help, but for the rest of us, productivity can feel like a never-ending battle with a wall. Productivity hacks abound, and we recommend you devote some time to trying a few out to find the one that best suits your workflow. Our team favors the Pomodoro technique, which breaks work down into timed intervals, typically 25 minutes, and separates these intervals with short breaks.
And, about those breaks. Take them. For real. Get up and walk away from your computer, think about something other than work. I regularly use an app called Pause to force my brain to disengage and slow down.

5. Automate Where Possible

Scripts are your friend. Take the time to automate your repetitive tasks, even the simple ones. Those saved seconds add up and can eliminate errors.

6. Don’t Stay Stuck

Start by not being afraid to spike and delete: Try out different approaches and explore not just their impact on your project and interaction with existing code, but also where you get stuck. Then, delete that and write some tests. If that doesn’t work, use the resources around you; ask questions on Stack Overflow or pair up with a friend or colleague. Getting a second set of eyes on your problem can get you unstuck in a fraction of the time.
Along with this one, don’t be afraid to open a book! There are some amazing general and Java-specific reference texts on the Stormpath bookshelves that can, and have, gotten our team unstuck a time or two. These include Effective JavaSimple JavaClean Code, and Design Patterns.

7. Pay It Forward

“Participate (actually code) in some great open source projects. A lot. As much as you can. There is simply nothing in the world that I know of that will expose you to the quantity and quality of great code written by senior developers than participating in multiple solid open source projects. You will learn more by looking at clean code and good design patterns than anything you could do on your own or what you would see by working on a few closed-source projects.”


Keep Your Focus on What Matters
http://blog.coderzh.com/2009/07/18/1526082/

1.加速法则

    关注本质,而非形式
    一个应用程序列表的有用程度与它的长度成反比
    程序员的很多时间都浪费在找东西上
    不要总是重复输入相同的命令
    每天花一点点时间来使每一天都更高效

2.专注法则

    精力越集中,思维越缜密
    排除干扰:隔离策略,关掉不需要的提示,创造安静时间 
    草堆越大,从中找到一根针就越难
    不要问文件树,要搜索
    使用多显示器
    虚拟桌面可以让原本杂乱无章的一大堆窗口变得整洁

3.自动化法则

    不要重新发明轮子
    用Selenium浏览网页
    不要浪费时间动手去做可以被自动化的事情
    用Windows Power Shell替代批处理文件
    驯服Subversion命令行
    以创造性的方式解决问题,有助于在将来解决类似的问题
    是否应该自动化的关键在于投资回报率和缓解风险
    研究性的工作应该放在时间盒里做
    别给牦牛剪毛

4.规范性法则

    对于任何你不自己去构建的东西,只在版本控制中保存一份副本
    使用标准的构建服务器
    通过复制粘贴来复用是邪恶的,不论你复制粘贴的是什么
    利用虚拟平台使项目依赖标准化
    不要让对象 - 关系映射工具(O/R映射器)违反规范原则
    通过扩展。开放类(open class),或者部分类(partial class) 来为生成的代码增加行为
    始终保持代码和数据结构的同步
    过时的文档比没有文档更糟,因为它会主动误导你
    任何需要费劲创造的东西,都让它的创造者欲罢不能
    白板 + 数码相机强过任何CASE工具
    尽量生成所有技术文档
    重复是软件开发中最大的阻力

工具:

    1. FireFox 及其各类插件
    2. Launchy启动加速器
    3. Total Commander
    4. ClipX多重剪切板
    5. EmEditor文本编辑器
    6. Vistual Studio的VA插件
    7. Search And Replace
    8. Everything
    9. Miranda IM

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts