×

Loading...

@Vancouver

Topic

  • 工作学习 / 学科技术讨论 / how do you manage complexity (1)
    • "software engineering is all about managing complexity."
      Good point - but I would take out the "all" in the middle.

      I would say software engineering is about (the attempt of) commoditize software development process, about turning it from "art" to "craft", just like any other discipline of engineering.

      One objective of the software engineer is to rid itself of the dependency on "geeks" -- ultimately once the process (or "assembly line") is defined, any project could be carried out by any Joes from the street (in disciplined roles) without much difference on the quality of the end product.

      So far, the said attempt of software "engineeringization" hasn't been completely successful. Software engineering is still not reconized as a first-class engineering discipline -- maybe never will. Software design/development is still both "art and craft".

      Given the above, for now, it's good to possess both skill sets of an architect and an "expert plumber".

      Just my two Fengs.
    • "And they're a lot more valuable than your knowledge about memory pools, or sorting algorithms, or how to print out all subsets of a set. A few hours is probably more than enough to figure out these tricks."
      As much as I am a wincity fan, I take exception of his bias toward solution questions from job interviews.

      The point is not about how much value they would have in realworld software development, or whether one can spend some offline hours to figure/"google" out. Rather, it's about testing one's apetitude/fitness to software design -- which, in the current stage of software engineering maturity, still makes a difference.

      Also, from the money-making perspective, in many niches of today's software world, an "expert plumber" role can be much more lucrative than that of a "templated architect".
      • Having said that, I agree that a heads-down "plumber" without an architecture view is pityful.
        • Totally agree, sadly I have no big picture 'cause I'm not in industry.
          If somebody asked you a question that you never did, you can only accept failure. A good industry is important in your life. Please don't laugh at somebody that they don't have big picture. They are just not luck as you to stay in a job for over 10 years.

          Plus, I'm welcome about any design questions. Hope you could lead me into a door.
          • I'm not laughing at you. I don't laugh at people at all (with exception, of course). I'm only trying to help, trying to persuade people to at least think about design issues.
        • High level design is one of the most important thing I believe. And sometime, it hard to say which one is correct.
          After wincity told me the book's name, I found it and read it. The thing that surprised me is the writer didn't user UML symbols correct. Obviously, he is a very experienced guy in his industry, but he didn't read any book about UML which is kind of standard now.

          And now, I don't have time for the book. I'm preparing some questions in fixed income. About what is duration? What is the relationship between yield and price? Those a much important in the coming interview then composite, aggregation, bright, singleton, observer, command, adaptor, factory......
        • 我再说一个我经历过的故事
          曾经碰到过一个大公司的高层,在面试的时候问我,什么是私有继承?这个难不倒我,bala bala说了一堆,说完了,他就问,那这属于什么pattern?我一下子就傻了。

          然后他说:这个是composite,后来在拒信里,这就是一个fail的原因。
          可是各位啊,私有继承和composite有多少关系啊?当然你不能说没关系。可是composite是has a的关系。是拥有。而私有继承是继承。has a 可以是一个对象拥有很多其他对象。而继承基本上是一对一。一对二都不推荐。这两者有多少相似性?

          Well,有些人就是这么理解的,而你不这么理解就是你的错。越到高层,越模糊。
          • from C++ faq: "private inheritance is a syntactic variant of composition". But this has nothing to do with my point. It's a case of language feature, which I don't care much about.
      • 1). I'm not against digging into things. I had many sleepless nights to prove it.
      • 2).I don't deny that you can make big money to be a deep specialist, but most of us are average Joes, for one reason or another.
      • 3).I'm not talking about "architect" level things, I'm talking about being just a good programmer.
    • just wondering how long C++ you have used and how many C++ interviews you have encountered? seems full of speculation instead of real world observation in your article.
      As far as i know, hiring a junior to senior programmer/software engineer, they do more care about the details-oriented experience such as compiler, algorithm, data structure, and modeling etc. other than high level software engineering or methodology issue.

      they hire people to address concrete issues quickly. not a instructor just bla bla bla...
      • I asked specific technical questions in interviews, but if the guy can give me a big picture answer that made sense, it is fine- tricky questions were asked for a reason - try out your personality and logical thinking process etc.
        • nothing wrong with the big picture,but if you were a candidate of the C++ developer, and don't know the subtle & nuance of the language itself, how do you justify your qualification?
      • (独白:这荒郊野外,竟也有C++大侠?)那位大侠,小的有口无心,多有冒犯,万望大侠息怒。(掩面下。。。)
        • 你不要跑, 我还要找你要咖啡呢 #6123006@0
          大侠的文章本身不错,the big picture本身也很重要, 但潜在认为细节就不重要,是只见树木不见森林,也值得商措;本人 不是C++大侠,没太多经验,但有一堆教训,答不出细节很致命, 影响credibility
          ; 会 被人认为解决实际问题的能力不够;
          • 本人并不反对钻研硬技术。当年俺做C++,细节至少是中上等。俺反对的,是钻牛角尖,是对如何搭好的框架,如何写好的code不闻不问。俺问一个how to manage complexity,除了LZ和如来,竟然没人理睬,旁边算法语法的问题,却是七嘴八舌,寒心啦!
            • 不寒心; 想想英语和TOFEL的关系就知道该怎么做了, 老外想考察不懂英语人的英语水平,发明TOFEL让人去考,结果国人钻研考试技巧,3-4个月考的比懂英语的老外还高, 得到offer就能去留洋了; 找工作也一样,
              先钻研几个面试试题, 搞定工作就能吃香的喝辣的, 买房子,上网灌水当牛哥; 那些high level view ;
              需要时间和机会, 等搞到这些再去找工作? 黄花菜都凉了。。。
              • 那个帖子上发言的,应该都已经“吃香的喝辣的”了吧?不重视design,是心态问题,本人想改变的,正是这种心态。本人认为,掌握基本功应付面试,不难。大多数地方,不会因为你fail一两个tricky问题,就不要你。相反,如果你能在软的东东上有见解,极可能会脱颖而出。
            • 同寒心. No matter big picture or small picture, it's important to get to the point -- and it doesn't seem to be happening there. Wincity takes a higher ground -- 考托出国重要,出国后不必跳楼也重要:-)
          • “big picture”这词,俺用的不好。俺指的,其实是如何写好的code。class design,method design,coding standards,even naming,如何reduce complexity的问题,其实无处不在。
            • I trust that you are right. Just if it possible for you to give us more samples?
              • Many samples in the book I mentioned. But you don't like its UML. UML is just a tool.
                • No, you miss understood me. I won't deny a man only because he didn't use UML correctly. This book is good. I just said that people who hiring people will refuse you because you don't know some small quesitions.
                  But actually, they are living with errors. And they are living pretty good.
                  • UML used in the book may be correct at the time. UML was pretty new and moving then. I doubt people would reject you just because you don't know some small questions.
    • "The ability to create order from chaos is the most important for a good programmer." -- I really like this statement. Can't agree more!
      • 在实际工作中,常遇到这两类Complexity:Technical 和 Political Complexity.它们需要不同的个性和技能。好的程序员无法处理Political Complexity.
      • The computer security expert, Byron Sonne, who got arrested just days before G20, has this line in his LinkedIn summary: "I make order out of chaos."
    • HR问题,不好玩。
    • Some points
      本文发表在 rolia.net 枫下论坛by chance i read some arguments here and learned some good point ...
      in terms of the question, if i were in the interview, my first feeling is that "complexity" is a terminology related to some techs required for this position (cos i was never asked this kind of questions as a programmer ...) Like "polymorphic" is a term of C++
      so i would probably explore its meaning here, by conversation certainly ...
      if it turns out just meaning what it means literally, then it's general "complexity", then i will limit the complexity to the level of being a programmer instead of a director, cos i'm interviewing a programmer position ... right ?
      It's all about logic ..., no matter how many big pictures you have in you mind, right ?
      Go back to how to describe the picture, unfortunately, the effect terribly relies on my poor English, communication skills, personalities ... but people can read people, so you still have chance ... just follow your fate ...
      in regards to the deep digging to the specific tech, i personally think it can't be too important to a really good programmer ... without the profound understanding, you won't have sense, hence you won't have the ability to provide really good solution to specific issue , or to question a bad solution.更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • I will take this as a Communication problem. I interviewed 6 Senior Programmers DEC, 2010 and I found all Chinese (4) had bad communications and the other two (russians) have way better communications. But I still hired one Chinese.
      The reason being is that CHinese DO MORE!
      • 这位应该不是communication problem? * HR问题,不好玩。 -baalinca(12.24_60.1); 2010.6.28 13:57 (#6150911@0) reply more