TA的每日心情 | 开心 2023-6-12 15:40 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
工程师们的背后& s7 O/ x6 |& j
. \$ e/ ~5 }3 K: P2 }
& I5 G) w6 I5 F" a在设计过程的最后期限过去以后,最黑暗的时刻,到处都是缺陷,隧道尽头的亮光只是一点点的回忆,编程大师的搜寻工作开始了。1 ~7 H/ o2 |. N C9 q! ^0 E6 I4 m2 l. H9 D
* Y' p' J( s* Z# i0 Q' x
, d2 M, j5 b' R! C- Q% K6 l: y4 C& s# U" X8 B& z1 `0 r
这些虚构的业界奇才可以立即将一个垂死的程序转变为一个具有旺盛生命力的可配置的无缺陷产品。 J& k' N- `3 o+ f; @8 X1 I$ F; V2 P \# Y% @
; A& w! D' x0 P
# A5 w( ^: S& f- W4 }; [/ \) r) s) v
/ y# m$ f/ L+ M% B5 l) O; X那些运气足够好、拥有一两个这种魔术般奇才的设计团队基本体会不到延迟交货、超出预算或缺陷横行的种种痛苦。1 ]6 ~( c3 K* E: n- i" m/ i* d" @, B, ]2 B$ d- J7 V8 g
3 v. H6 `. Z2 f% F# A4 X0 g7 z0 Q- o: Q$ O+ |
1 z! C6 w7 i/ F" y' k熟悉这些奇才的工程师们在背后都想问这样一个问题:“成为编程大师有什么秘诀吗?”这个问题可以通过了解编程大师的性格特点得到圆满回答。( f* o% y# `+ i# z+ |
* O q% P# }8 u, d1 m; G. |2 h' s" U0 t) x c. q. b0 l
* }! W- ]3 w2 _, k j/ n只有这样,工程师才能仿效这些大师的行为,并最终有一天也成为编程大师。9 X8 C+ \5 i( a( L! |
" j8 {7 v7 d7 o# l3 K
* {3 M% n, S r* ^9 H; {6 E$ @ y! F: v# @& ]) \6 A7 H* p9 K5 J" Z
编写结构化、可维护的代码& r! T5 V! c' o _ l% _( c7 O7 F$ h P* U+ j
5 j" S; G8 O# [ H: R任何程序的成功或失败都与程序架构的好坏密切相关。架构不良的程序很快会因为要求的改变和功能的追加而变得混乱不堪。 W, ^5 t5 ?* {" X) Z
3 g0 x1 e1 S7 M: [/ A
3 Q: T4 n6 ]6 V( J+ }6 A; B- m) }; G( m' S/ F. Q1 a: b8 d+ M
编程大师善于开发高度结构化的代码,这些代码能够很好地适应客户不断变化的需求。1 |" W" q5 ^1 p: `+ J' b: D
; z, |1 P# W0 T8 _) w; k+ b3 j! K% q2 A& L, G; L6 Y5 G" G
$ Q0 T. B0 I; y) V- z, Y+ J: F, r1 P+ M% H2 x
9 {: o, d1 ? R5 `5 o X大师们还认识到,尽管他们具有专业的C语言结构知识,但聪明、神秘的代码通常无法被其他开发人员维护,因此他们致力于使程序简单化,让每个人都容易理解。1 l& B4 t. m4 W1 Y3 ]4 m- p* e. R9 l1 ]% i7 f
4 b3 f% t& P2 ?, K
, k9 T# Y" R3 i" w2 E3 m5 X0 b+ A# ?) E6 t& N! P
确定和复用设计模板9 q+ l" @+ G3 b) |: f' S% n* E, P+ ^6 P% ~
2 m/ p5 [4 e7 K! A6 Z( a
开发周期越来越短,预算比以往任何时候都更紧,产品又要包含大量先进的和标准的功能。每个新的开发周期都要从头开始“重复发明车轮”可不是个事。6 m. U9 A5 g/ l* H( l8 Q; f6 N$ m, H3 Z0 e, @9 x& h( ]: d
升级到新的、功能更加强大的微控制器不会造成进度的延迟或预算超出限度。2 `6 m# j" z$ g
2 J+ J. d: W3 ?2 B% F为了节省开发所需的时间和费用,编程大师能够主动察觉问题或检查手头的产品,找出已有解决方案,并把这些模板引入设计。9 z# ?( T3 m; {" D5 l
$ j/ b- `+ l& H- _$ d# f$ x. p3 l' ]" L! E) w9 i
5 |. @9 K& j+ ^& ^
; K7 j1 ` P# C6 ]毕竟谁会去重新发明已经成熟的东西呢?) [7 O, ^2 d7 a$ i$ A0 V3 b; u8 T
1 w! o" R; H5 [, d
5 ~, |8 k1 v% ?0 e( M" k; }% b9 q" w3 i$ m: D" P
6 a* B0 j, n/ J; u以清晰的方式归档他们的代码9 ^+ X' j p$ U) d& C2 K; k
4 k n5 g7 O2 R/ B5 ^8 Y
归档代码以便日后能被维护工程师理解本身就是一件艺术活。# B7 c3 |5 F1 H9 |7 p2 q5 w F& \5 L9 _
9 M9 z% Y6 L% }3 {! B
+ ~2 ?0 }* E, ]' [( z; q: y5 k1 t2 F2 r7 h
确保提供正确的信息、并且清晰、可理解和时时更新是一项艰巨的任务。3 ?0 k2 H5 B: X" Y6 U" W, s; u
6 j1 _! x* L7 I/ |1 `4 a2 Z C! i. G0 G5 p% B- i9 ]
R7 f ?8 [- {8 d1 E" O# l5 s2 t6 ]
它通常要求编程以外的技能,比如掌握英语,能够在程序中正确地表达清晰的意思。* V9 K- S7 W4 d
$ r0 n$ u4 B$ R( Z. g& d
" M ?9 ?7 y1 F$ [( I8 ^8 H( w7 x1 w; ]8 N6 {
编程大师在修改代码时会随时归档,他们不会在最后时刻才返回去给代码增加注释。2 B5 t6 j! t; G# U- C
! m1 V0 W( G0 m1 I# E
. q2 [4 H C" l' G7 I, P2 f
! R0 g. x8 j. a( c U6 K7 [全面测试他们的工作/ w# t% m" ]9 O9 x$ ?, a# S# F
3 I2 M/ o$ C2 K: n- `- M: a9 Q
# c4 D- }6 _- W2 \1 i9 g编程大师非常痛恨向他人提供具有致命缺陷或漏洞的代码。
/ F+ P' K% J' T3 `( q5 M3 v8 `, Y) p9 H- `7 l1 ]) @. H/ Y) U2 |6 |( F
+ P# I2 L) ]- f2 \+ V- E
* G7 u) r- n# J7 X( B. v' b' j' R他们经常以自己能够移交运行流畅的代码为豪。5 s5 p6 [" o& C5 v% ?6 S7 ^, m5 P+ a, k: g
) R% T9 G9 A9 b8 j# J8 \4 @- |+ N& v# q: d" h7 Z: P1 p
6 w3 ?7 @- B/ O, Q: c d. ]. M
0 _/ D" Q; X7 t) x8 j2 ]/ l正因为如此,编程大师能够深入理解如何正确地测试系统、如何迫使缺陷露出真面目。' z) A" }4 _# g, D8 b3 [1 g! j' F; ~/ U+ _
9 p) [9 h2 ?. ]8 j( x- c: R0 S) H: V! \8 K
1 x* i! d6 M% W ^! A
他们是通过全面的静态代码分析、测试甚至与同事进行代码检查来做到这一点的。" R+ s2 x+ V& D4 N. G+ r; V$ r0 p8 b0 v0 i2 h4 ?0 ]
! w! j' i9 s; `7 D" m8 t( @; c! |) X! S* e7 Y! d; P
n: I% T* Y$ H热衷于编写代码! t0 L* H) G) s5 ]- O5 J
, _" D7 Y" K0 |6 u9 B2 C8 v, N, h* b m1 K' p! Y# T9 W+ Q- i
事实上,编程大师都喜欢写代码。他们不介意废寝忘食地写代码,每每工作到深夜甚至凌晨而不知疲倦。# u( A: B7 l* C9 S3 M1 n9 Q, _1 C4 g+ Q4 |! H" O, T( s9 p
$ u! d& c9 t3 m0 j# c9 F( {! d" c: v' b7 M
/ z q. \) }2 p/ b5 X" k* ?* S( _
他们不仅不介意写代码,而且喜欢与其他工程师分享他们的经验,经常在网上花数小时与其他人交流讨论更好的编程技巧。4 j* e9 o# s$ H9 O
' t% v: p2 q5 ~! ]/ m2 X$ T/ X9 j }* f+ x4 ]4 v Z: N, c+ S
1 I; n3 o+ `. q/ l
9 |+ T, Y f. I, J _/ |这份热情有助于发掘编程大师的最大潜力,并成就他们的传奇故事。对他们来说编程至少是一种乐趣!: ]7 k+ x8 _! Y# M
; g- t# H0 m- n6 y& }! C7 y2 _3 t% Z) F5 Z
; e7 O* g- p9 H9 j
永不停止学习和提高他们的技能 [8 A! {0 _9 |/ r0 z7 q4 ~
4 p1 ~! B& e# f0 `& J- n B0 v1 ~( f' O! p# o7 S( ?+ ?- X6 e/ k
由于对动手编程具有浓厚的兴趣,编程大师对知识有着极大的探究欲望。1 i- j$ q2 J0 l3 O7 r
他们经常每周花很多时间来阅读文章、书籍、编写代码并尝试新的技术。, k6 O! x2 s/ R* @- p1 H7 f8 I/ J9 p2 V0 q& C4 Q
{7 B/ ?0 j! @, A8 `7 u8 `; Y# U9 \) o o7 y( W
' A! G/ Q# f% n6 j# ~% ]- A; n8 B他们认识到这个行业在飞速变化,想做弄潮儿必须致力于掌握先进的技能!# o6 I/ Z6 q' ], `
6 c* P% ~' \# |3 z0 F2 W) ^7 W
. y& d3 V4 ~: q5 Z+ O' B9 ~% i$ T: C5 F+ ^4 j4 z
6 u, [" A9 c9 L5 c. T c最简单的做法是充分利用每天的午餐时间或周末时间。! p" \& m5 }9 V, j! |# x
d( U6 S" J& d% K* ?- R. J7 E* a9 U+ y U; Q3 w
' L# \7 ^& I: G+ d6 S( A9 `, ~# N
享受挑战6 J9 F: S# I3 n, c# Q1 O, R! N* {4 J
8 ~. D/ P- M" ~7 ]! V5 w- Q/ a9 _1 ?' V8 N1 Y% a
你很少看到编程大师会知难而退,这是他们立身的根本。他们想要将他们的技能发挥至极致。7 I- e3 A# Y" S6 _) i" T. ?0 |0 _% L8 U
# Q3 Y* l3 ?5 S% g+ X9 {) v2 N' r x, P
) M a) q Q5 j3 a# x5 _/ C- o
; Q; U* p s# Z) q他们善于抓住机会迎接经验欠缺的工程师选择放弃的挑战。1 J6 M. s6 g/ e4 w; A+ y; g2 _; W. W& ~% u7 q+ D6 }7 z
2 o9 w- D+ Q, [! m z, h9 a7 X; i' r# k, N8 J& E! ~
f y1 D# U5 Y2 w2 f
3 j/ s; E1 X" y. g9 z- z# t编程大师不惧失败,因为可以学到教训,而且他们从来不相信失败。他们会千方百计地完成任务,即使看起来是不可能完成的任务。. t! B2 v& d! _ j' [6 ?
# D7 R2 r1 Z# G* M8 U9 S
+ y7 L/ G; g0 {7 P# M( w' |
; _/ G& q' @6 r- @7 x; t j谦虚并且很容易适应变化; j5 R5 S4 Y7 N: C, W# A4 ~7 A3 f2 o) B3 A( `/ R% \
) P, I1 Y }1 |3 T, A& P编程大师很少有骄傲自大的性格特点。主要理由之一是他们能够认识到自己的局限性。
9 V: t5 d1 w: K i
5 `7 k- }' h- H" X1 d2 F! l8 | y3 [1 |, ?. g3 x7 a0 U
/ D' S0 e- N' ?% X$ {) |, B如果认识不到这种局限性,就会导致羞辱的体验,进而促使自省。令人羞辱的体验经常会导致困惑、解释、有缺陷的代码等等。, v; C' ~5 _% L/ ]# w7 F& g1 E2 f1 ~+ o! {: K
! y6 q' D, w2 G& @ v! c8 l( L6 h7 L; l" z" C, ^
编程大师了解技术变化迅速,专业技术不进则退。. H& z7 r' D+ h- _" e D- ~/ ^. c
+ ^, l' O! i; t+ z4 D
. N5 y) Z0 N/ `1 V1 u7 P3 L
: w( }. D- X6 c! F9 K3 T K; N1 x争取完美但知道局限性% \0 l( h. {1 Z( |: M; q! R
: I0 }7 u6 Q0 N6 I! C
* P, {% z: {7 O7 Z编写一个完美、无缺陷的程序是每个编程大师的目标。他们的梦想是创建一个完美的系统来帮助激发他们自己的雄心壮志。; u) }: U2 l4 P3 S
, h% L5 ]& f; _8 L8 c0 R) v( d
2 [* ~7 e0 v; t& ~) \
$ L! j0 D) B7 Y大多数编程人员都有这个梦想,但区别在于编程大师知道哪里会欠缺完美,但仍能提供鲁棒性的无缺陷系统。
/ ~, S* k. o6 b- u- G% A3 R$ X& a" L7 O0 G
& B$ ~7 A& k$ d5 q( M$ M8 v( W$ v# l8 v* P
尽管需要完美,但在设计过程中没有足够的时间来创建并证明系统是完美的。( Q1 ^; ^4 C7 @2 q9 I5 m
* ?1 B. [, k4 ~* d z) W) z+ z. k
S- w# @5 j/ {' i3 ^9 ?7 p4 ~2 g7 I0 U! O
询问正确的问题; @/ U) l+ t- f- _4 E' v
. ~9 S8 A9 ~% V7 r. x1 I( x
通过询问有关系统的问题很容易对系统的工作原理有一个基本的了解。编程大师有着向前看的天赋,能够深入系统内部寻找问题。他们丰富的经验有助于发现被其他人忽视的缺陷和绊脚石。他们能够看清事物的本质,并加以实现!6 d8 c3 O+ h9 X
! S+ Y9 |1 T$ c& q1 [8 R
8 q7 |1 z* ]8 @6 }: q) S+ p4 I5 C+ E5 b" b* @
耐心! V% l& x9 a, {
, R6 G$ }$ s( U8 q5 n9 _& B5 i- g r7 q u! k4 l( a# h
编程大师都非常耐心。他们不是一下子扎进系统并开始匆匆编写代码,他们能抵制这种诱惑,先进行架构设计。
* Q7 A& d6 q: c! W9 h5 b$ n+ h3 e" G* U. d
" x# K; C8 p* j3 [5 a2 ~/ D1 L0 B9 j/ M' \! {! a! ]) l+ C' W; Y y% p- E9 a, I2 I
他们在坐下来创建主要功能之前可能会花数周时间来做调研、设计流程图、状态机。
3 V! c1 t4 H2 c0 t& |/ W! Y, L, M; `! H& Z+ A' S* j9 g; @8 B$ X9 s% C8 i; q2 t
9 i% p$ Y% a5 W A3 n4 g8 x
! b: {, T5 m( U0 k7 D8 f% H$ I当遇到问题和难点时,他们会耐心地静下心来解决问题,他们知道只要有耐心,解决方案最终会自己浮出水面。
2 V) X. ~+ a4 W+ b |
|