程序员面前的十座大山 - NetSmell



程序员面前的十座大山 - NetSmell

如果是老程序员,那么,他一定会知道,其实软件开发中任务重大的不是代码,而是工作中其他的任务执行。如果你是刚刚进入软件这个行业,想要在这个行业有所发展,那么下面的这些困难你是一定要翻越的十座大山。

1.让别人了解你做的什么

总是有人会问你,软件开发是什么?每次和别人解释这个过程真的很让人头痛。也许在外行人的眼里,我们就是一群傻呆子,只会每天坐在电脑前不停的敲键盘的程序员。

2.可视化解决方案

如果给你一组简单但是考虑不周的一个需求方案,而你所做的就是代码结构、数据储库、算法以及一些解决业务问题就得去完成的各项技术内容。还要你用通俗易懂,让外行人都看明白的方式解释出来,并在客户的要求时间内完成,这些真得很少有人做好。

3.交付时间过于紧迫

这种事情是每个开发人员遇到都会头痛的事情,想一下,如果给你一个以前都没有接触过的任务,还要你马上答复他们用多长时间可以做出来,这是不是难倒你了。

所以这个时候你真的只能靠经验来估时间了,但大多程序员都会把时间少估了,其原因主要是他们没把所以的可能时间都加上。

4.参考别人写的程序

三人行必有我师,写程序也是一样。但是,研究别人的程序,意味着你要完整的了解对方的思路,架构设计。并且,如果当初写程序的人并没有留下清晰详细的注释,或者,只是一个完工的项目,那我们就更困难了。

5.需求不可控

软件开发时,需求不是一成不变的,偶尔客户会心血来潮加一点什么奇葩的功能,你明知这样的结果是错误的,但你没法拒绝客户。当最终失败的结果出现时,客户会责怪你,而不是他自己。

6.不优化和过度优化

追求完美是我们的目标,但事情就远不可能做的完美。我们不可能无限止的改善,这样软件永远没有发布之日,

很多人都有将就能用的心态,只要现在能用就行,以后的事情以后说,这样倒霉的就是那些接手维护这些老代码的人。

7.测试

要想达到百分之百的测试是不可能的,软件的复杂性远远超出你的想像。

软件的输出会因为事到环境的不同而篇千变万化,无法完全掌握。

编写测试代码是一件费力不讨好的事。

团队集体写测试程序时,沟通会成会大问题。

有时用户的想法会让我们莫名其妙,这是用户和软件开发人员之间的差异。

8.写文档

没有程序员愿意做这种事情,费时费力又不讨好。

9.电脑的问题

开发过程中意外出现的死机、蓝屏、数据丢失,这些虽然不是程序员的责任,但也必须我们自己去解决,否则无法工继续工作。

10.不懂装懂的人

我们会发现有很多人不懂装懂,他们从来不会对着飞行员说应该如何驾驶飞机,但会对着电脑屏幕告诉程序员该如何开发软件,想出很多无语的点子。


Read full article from 程序员面前的十座大山 - NetSmell


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts