池建强:程序员、产品经理和设计师的故事

今天讲三个小故事,三角故事……

小明的故事

小明是一位程序员,或者叫软件工程师,不重要。最初小明的工作并不是编写主程序,而是写单元测试。

写了半年之后,小明和他的主管发生了这样一段对话:

我想换换工作内容。
为什么?
我不想一直写 JUnit。
别人也写单元测试么?
没人愿意写单元测试,只有我写。
……那你想干嘛?
我想写一些真正的程序。
什么是真正的程序?
比如 Java,比如面向对象编程,你总要写一些类和各种各样的方法,而不是一直写 Test Case。
好的。

那一天秋意正浓,橘色的阳光透过玻璃窗打在小明的身上,一切都显得十分虚幻,但是小明知道,真正的编程生涯开始了。他不仅学会了写真正的程序,而且掌握了很多服务器端的编程技巧,他做的产品有很多企业用户在用,小明变得快乐起来,渐渐摆脱了注定孤独一生的阴影。

不止于此。

小明开始学习一种新的编程语言 Objective-C,因为移动互联网时代开始了。他在编译 Web App 的同时构建 IPA,在清晨的微光中调试程序,在每个夜晚与模拟器窃窃私语……他完成了第二个阶段的技术方向选择。到了离开的时候,他要去寻找更大的梦想。小明去了南方某个城市,做了一家公司的 iOS 主程,并且带领团队开发开发出了很多著名的软件,有更多的普通人用到了这些 App,小明实现了自己的一部分梦想。更多程序员故事:www.yangfenzi.com/tag/chengxvyuan

小明是个典型的程序员,聪明,对程序逻辑领悟能力惊人,学习能力强,沉默寡言,冷静,或者说冷酷。经常有产品经理急吼吼的跑过来提需求或报 bug,小明也不会慌神,大多数时候他都会一手插在怀里,另一手托着下巴,看着这个已经完全不知所措的家伙,说,「等我把这个 bug 改完再说」。我想,如果有一天有人跑来告诉小明说有 19 个数据中心被外星人攻击了的话,他的回答也只会是:「为什么他们不攻击 20 个?」

小明比较讨厌的事情有两个,一个是产品经理觉得自己可以从技术上指导程序员,另一个就是需求变更。这两者都会导致代码的改变,这是一件非常让人头痛的事情。小明常说的一句话是:有话好好说,别动代码。不过有一个产品经理,小明是很喜欢的,因为和他配合总是很顺畅,他非常了解程序员。而且,当小明说出「有话好好说,别动代码」的时候,这位产品经理会强硬的回一句「要砍就砍我,别砍需求」。

说出这句话,需要勇气,而勇气是产品经理必备的素质之一。这位产品经理叫做小岳。

小岳的故事

小岳毕业于某科技大学,非少年班。对于后者他常常心有不甘,因为身边总有更牛的天才出没。小岳性格温和,才华横溢,并且胸怀大志,梦想打造改变世界的产品。他有一句名言,「让正确的事,相继发生」,到底发生了没有,目前没人知道。

小岳最初是个程序员,写嵌入式程序,后来发现自己在这个领域才能匮乏,转身做了产品经理,居然做得风生水起。小岳最早在一家大型电商公司任职,是真的大,几万人那种。那么大的公司官僚和繁复的规则难以避免,小岳无法忍受这些束缚,他希望与一群才华横溢的工程师走向成功的巅峰,而不是无所事事的摆流程图,做一些无关紧要的特性。于是小岳放弃了一些看起来虚无的利益,来到了一家创业公司。

很快,前公司上市了。

忘掉了「钱」公司上市的事情,小岳开始全身心的投入到新工作中,他有了自己的产品团队,有时候人多些,有时候人少些,不重要,他牢牢记住自己是个产品经理,做最好的产品才是他应该关注的事。

对于产品经理的定位,他是这么说的:

「让正确的事情相继发生」,就是产品经理的全部工作,如果在这个过程中需要懂技术,就去学技术,需要懂交互,就去学交互,需要懂画图,就去学画图,需要懂公开演讲,就去学公开演讲,需要懂 XX,就去学 XX。团队中,谁都可以说这不是我的职责范围,只有产品经理不行。
觉得冤枉、憋屈、不公平?抓紧时间,赶紧转行。

现在的问题是,小岳会不会转行呢?

说起技术,小岳有程序员背景,和程序员们聊天的时候会顺嘴冒出一些开源技术和架构名词,这时候程序员们(包括小明),就会笑嘻嘻的围上来说,「哇,你很懂技术嘛」,这时候小岳就会一脸无辜的说,「我懂个屁啊,也就知道个概念,我特么连 Hello World 都不会写」,然后小明们就会放下手里的砖头,安心去编程了。更多产品经理故事:www.yangfenzi.com/tag/chanpinjingli

小岳喜欢与最优秀的工程师合作,因为他们总能完成那些看起来不可能实现的需求。还有重要的一点是,当他对优秀的工程师说「要砍就砍我,别砍需求」时,并不会真的被砍。

上次见小岳是在 QCon 的大会上,离开的时候他望着巨大的 QCon 商标若有所思。他可能知道,是时候干一番轰轰烈烈的大事了。那时候,他并不知道自己将要面对的命运是什么。谁知道呢?

上海 QCon 大会 9 折还有最后两天,没报名的赶紧的(为霍老板临时植入一下)

有了程序员和产品经理,就能做出完美的产品了吗?我们还缺一个设计师。

小峰是设计师,他在一家以用户体验为最高追求的公司任职。这家公司常年处于风口浪尖,人们总是讨论它是不是不行了,是不是被收购了……但是这家公司一直在不屈不挠的往前走,也许,梦想就在前面呢?

小峰的故事

小峰是一名快乐的设计师,精力似乎无穷无尽,他的上班时间在上午10点到12点之间,下班时间……没有人知道。因为你经常在凌晨四点钟收到小峰的邮件,邮件的开头一般是这样的:

Dear, All
请查收附件,已经按时按需求输出了设计稿。
有任何问题,随时和我联系。

然后,事了拂衣去,深藏功与名。有时候一个设计交互关联到不同的部门,他还会在邮件中 @ 相关的成员,推进产品进度。

打开附件,你就会看到精美的设计稿和标注清晰的说明。这种邮件常常给程序员们造成极大的心理压力,早上刚爬起来,咣一封设计邮件就砸过来了,打开一看,卧槽上一版设计稿还没做完这一版新的设计又来了,什么时候是个头啊?特别绝望。等你上午去和小峰交流设计实现的时候,你会发现他已经在兴致勃勃的画另一个设计图了……

在这家公司做设计师,工作并不轻松,他们常常要与要求极端严格的老板打交道,而讨论的时间往往是在凌晨,人最容易疲劳的时候。追求完美主义的老板经常会为某一种颜色或一种光影效果纠结很久,设计师们也会被残酷的折磨好几天。当终于调出了那个 damn color 的时候,老板会开心的说好几遍,「就是这个绿色,就是这个绿色!」小峰也会松一口气。

工作富有创意,并且残酷,但是设计师们都很享受这种挑战,他们非常年轻,兴趣广泛,并且使用着最好的设计工具,他们的 iMac 屏幕都像大海一样一眼望不到边际,那种 5K 屏……你没用过真的不知道什么叫大。

设计师不怕改设计,也不担心创意匮乏,他们最烦的是心爱的屏幕总是被毛手毛脚的程序员和产品经理们摸的体无完肤。所以,小峰在自己的 iMac 上贴了一个纸条,上面写着:

要摸就摸我,别碰屏幕!

故事讲完了,你喜欢哪种职业呢?

我决定为程序员、产品经理和设计师设计了三种主题的 T恤(卫衣),他们是:

程序员:
中文:有话好好说,别动代码
英文:Keep calm and send a pull request

产品经理:
中文:要砍就砍我,别砍需求
英文:Make thinks right

设计师:
中文:要摸就摸我,别碰屏幕
英文:Keep it simple and stupid

文案创意来自硅谷程序媛朱赟、杭州产品经理邱岳和北京设计师张燕峰,嗯,还有我,在这里感谢他/她们!

效果图是这样的,男女都有,还有卫衣,绒衣等。

说明:
1、本次还是和优定制合作制作衣服。
2、重筹项目,限时不限量,截止日期9月30晚24点。收到衣服的时间在10月12日左右。
3、衣服有质量问题可以免费退换货,初次购买遇到尺码问题也可以免费换货,联系客服。
4、部分颜色、尺码如果不能选择,即为缺货,可以购买其他颜色的相应尺码。
5、产品从棉花、印染到印花均由长期服务一线国际品牌的供应链完成,领口多次穿洗不会变形。

【文/池建强MacTalk(微信号:sagacity-mac)】

氧分子网(www.yangfenzi.com)是关注互联网生态圈的科技新媒体

·氧分子网http://www.yangfenzi.com)延伸阅读:

➤ 程序员的黄金时代 王欣、赖霖枫、邹胜龙、程浩、冯鑫的那些事

➤ 霍炬:和程序员打官司是一种怎样的体验

➤ 程序员,再不减压你会得精神病!

➤ 池建强:历数程序员背过的锅

➤ 北漂程序员边城的幸福生活 Kentzhu:产品经理的贪嗔痴

➤ 监狱开编程课:他出狱后就当上了程序员

➤ Facebook是如何挑选和招募设计师人才的?

➤ Facebook设计总监美籍华人Julie Zhuo:我的产品设计年度总结

➤ 星巴克、耐克、宜家、淡马锡模式…这些商业模式产品经理学不会?

您可能还喜欢…

6 Responses

  1. 摇滚死兔子说道:

    近来看了一首MV《产品经理是条狗》,感觉产品经理好无辜啊,“产品狗”这个帽子怕是摘不掉了,没关系,不是还有“程序猿”陪你么,嫌少还有“工程狮”~
    在DevStore办公室,程序员小李又被叫产品经理叫去修电脑了,由此引发了一场鲜为人知的血案……(请留意结尾彩蛋)
    好了,进入今天的主题——你怎么看程序员与产品经理的关系,不共戴天还是唇齿相依?
    程序员小李(化名)
    热火朝天的办公室,一精壮青年小李一边啃着馒头,一边看着眼前产品,愁眉紧锁的他陷入了沉思:产品下一步应该怎么走?如何保证代码质量?如何缩短项目时间?如何控制项目成本?一个个难题需要他思索,抉择。此时,传来产品经理的吆喝:“小李,先别敲代码了!给我修下电脑……”
    小李心想:要不是家里穷,老子就是美国麻省理工的高材生,尼玛你居然让我去给你修电脑,太不尊重我的工作了吧,居然这样无情践踏我的尊严!
    因为明白你们不懂计算机组成原理,所以容忍去帮你们修几次电脑;因为明白你们不懂操作系统,所以容忍去帮你们重装几次系统;因为明白你们不懂计算机病毒原理,所以容忍去帮你们杀几次毒…… 但是,给你修电脑不是我的义务与责任!产品狗,侮辱之仇不共戴天~
    产品小美(化名)
    产品经理,就应该对产品的功能有决定权,但是如果产品失败了,也要负直接责任。我考虑产品的功能特色、性能,还要考虑老板提的要求,还要考虑市场定位、用户需求,还要为产品市场效果负责,我容易么,所以我是产品的核心,程序员你只管安心实现功能就行了,不需要操心产品上的东东。
    某资深产品
    程序员总是想尽量精简并按照自己的想法来完成一些功能设计,有时候为了完成功能,并不会完全按照最初的产品设计来执行,那么未来就有可能进行返工,产品会指责程序员没有按照设计执行,程序则会以各种功能无法实现为借口进行反驳,“无法做,无法实现”是最佳的刁难理由。
    做产品的时候,总是想一开始就做一个大而全的东西,别人有的我要有,别人没有的我也要有,总是先模仿同类的其他网站,这样很难有自己的特色。程序员做的不是自己想做的,所以他们总是消极怠工,或者是代码考虑不周全,留下了未来的一大堆隐患,或者是本来可以很快完成的任务,他说是很复杂,这个需要做很久,以此来表达自己的不满和抱怨。
    双方交恶的更本质的原因一般不在改需求本身,专业程序员不会反对改需求,一般的原因在于不相信程序员的专业性,举个例子,你要改动一个登录页面的流程,程序员告诉你,这个功能要两周才能做完,你说不行,一周必须做完。这样就没办法沟通了,不写程序的人决定一个程序多少时间写完(注意我说的是决定),这是很荒唐的一件事。一般的结果是闹到老大那里去,最后加班(加班从来也不是一种专业的表现)。
    专业的产品经理不应该用功能的产生原因来说服程序员,这不是程序员应该关心的事,如果程序员关心这事,很好。但这不能起决定作用。同理,程序员认为产品经理需要懂写程序也是算流氓。
    某资深程序
    程序员有产品意识,这点是很好的,你可以提意见,但是不重要。程序员只该关心实现这个功能的成本,并给出这个功能的成本,能不能带来好的体验,和程序员的工作没有关系。当然你可以提意见,但是不起决定作用。
    如果程序员以不能带来更好的体验去反驳产品经理,这就是不专业的体现。
    我们需要专业分工,你可以懂别人领域,提出意见,但是你不能以此来说服对方,因为对方在这个领域才是专业人才,如果搞砸了,是别人要承担责任,不是你。
    产品的体验好与否,和程序员无关。(记住,这里说无关并不是鼓励你不去关心这个问题,事实上一个程序员去了解点产品的知识总是有好处的,但是这个不能拿去当论据,这不是你的工作职责)
    程序员拒绝一个功能的理由有且只有一个:这个功能程序上无法实现,我说的是绝对无法实现。
    DevStore下周专题预告:程序员,产品经理喊你回来改需求,敬请期待~
    DevStore办公室小故事
    程序员甲:怎么给我臃肿不堪的代码找个理由呢?
    程序员乙:你就说产品经理是2B就行了~
    小美:呜呜…
    小胖:无论你们以什么理由发动战争,表打我就行。
    老徐:小胖,赶紧去安慰小美,小美又哭了。
    小胖:又不是我惹哭的,干嘛要我过去挨打……
    小编:程序员离不开产品,产品离不开程序员,你们是唇齿相依的关系,一定要好好相处哦~(终于轮到小编作总结了,以前程序与产品闹矛盾都是CEO出面调解,想到这儿,还有点小激动~)

    1、业务规划。
    传统互联网的做法是,挑一个方向,先做起来,如果错了,改方向,继续走。快速上线、快速试错、快速决策、共同负责。
    传统行业的做法是,开会,讨论,定义清楚方向,然后再讨论,方向实现的细节,然后再讨论,碰到问题怎么做,嗯,这里发现走不通了,好,推翻重来。某个项目,从去年8月开始讨论,至今,居然还没讨论清楚怎么做。嗯,有意思吧?

    2、需求梳理。
    传统互联网:开始拍脑袋,运营一段看数据,从用户、运营、产品、商务各个方面收集需求,产品经理牵头处理。
    传统行业做互联网:拍脑袋——怕负责,看数据——没有或者不懂,所有人在等拍板,没有人出来提需求。

    3、 产品设计。
    传统互联网:需求紧急重要程度来排序。
    传统行业做互联网:这个功能要花多少人天?什么100人天!?那那个呢?哦,10人天啊,好,先做10人天的吧。这个要1000人天?!哪儿来这么多人,砍掉!最后出来的东西,嗯,登录注册功能还没好,CMS已经在跑了,1000人天做的是网关,结果什么都好了,不能付钞票。

    4、运营。
    传统互联网:不管你是拉新、维老,都有一条线穿着,用户怎么来,来了怎么分,分了怎么留。
    传统行业做互联网:划好啊,你们谁也别越线啊,你看,这多清晰啊,你就管流量,你就管销量。嗯?中间怎么衔接?不急,开会讨论吧。

    首先要解读互联网本身,我自己的理解,互联网是信息革命:

    首先是信息生产的革命:所有人,以极低的成本来生产信息。
    接着是信息传播的革命:所有人,以极低的成本参与信息传播。
    最后是信息消费的革命:所有人,将信息的消费越来越多的渗透到自己的生活当中,并且在消费信息的同时,将信息再次进行传播。

    基本上所有的围绕互联网的产品服务都是沿着这三个节点来展开的。此外还有几个要特别强调的特征是:
    1、无视地理属性,信息不再受物理距离的限制;
    2、长期存储,绝大多数信息都会在互联网上半永久保存;
    3、信息的边际存储调取成本趋近零,《长尾理论》里有详细解释;
    4、公共空间和私人空间界限的模糊,比如群体暴力、隐私传播等等……

    用互联网的思路就是发挥互联网的特性,你例子中说到小米,其实小米“软硬结合”、“软件补贴硬件”、“期货玩法”之类的并不算是互联网思路,互联网行业诞生前就有很多企业这么做了,比如吉列、比如任天堂。但小米的营销确实是发挥了互联网的特性:跨区域、引爆事件、全民传播……此外小米社区中用户也参与制作主题、提交BUG等等,也是过去传统企业很少重视的。
    说得不全面,列举两点我认为「用互联网思路」做传统产品的特点:
    1. 让消费者进入到产品的整个生命周期中来。消费者不再是那个只面对销售终端的对象,不是卖完就了事。而是应该让消费者融入到售前,包括需求调研、产品研发、产品改进中来。同时企业应与消费者建立直接的联系,利用新媒体手段与消费者产生情感连接,形成品牌印象。
    2. 有一些传统行业中的小单子,如果用传统的方法去做成本很高,做了和不做没有区别。这时候就可以利用互联网做平台,降低接触客户的成本,使企业能专注在业务的核心。

    互联网思路应该是一个比较多元性的概念,涉及不同的方面,不同的人使用该概念时可能会有不同的侧重点。就我所知应包括这么几个元素:

    1. 快速迭代,用户参与。通过不断地迭代使产品日臻完善,而不是追求一次性做出一个完美的产品。并且,用户的反馈会作为设计决策的部分依据。

    2. 基于海量数据分析进行决策。互联网产品的一大便利是可以实时获得大量用户的行为数据,基于这些数据可进行产品决策。也可以采用AB测试等方法主动比较不同的设计方案。Google是此法宗师。

    3. 病毒式营销,星火燎原。利用互联网的传播特性,促成产品在社交网络、社会化媒体的渗透,并通过制造轰动性事件、争议性话题等(参见雕爷、罗永浩),实现大范围病毒传播,乃至达致引爆点。这是一种无本万利的营销手段。

    4. 小而美,少即是多。互联网产品通常不追求大而全,而是抓住用户某个痛点或价值点,针对性地做出定位明确的产品。在功能上尽量简单明确,即便要做大做复杂也是慢慢地加上去。体验上尽量做到简单易上手,甚至使「界面消失」,仅凭本能和直觉操作(如「摇一摇」)。

    5. 免费策略,平台战争。互联网产品大多不向用户直接收费,而是用免费策略极力争取用户、锁定用户。并且,同时致力于使IM、搜索引擎、浏览器、杀毒软件等从专用产品变成平台产品,凭借庞大的用户基数,推广和兜售其他服务。

    6. 粉丝经济,草根品牌。培育和勾引死忠用户,壮大粉丝规模,营造粉丝文化乃至构建话语体系。同时,必须在品牌中注入草根基因,放低身段,讨好甚至逗弄粉丝,保持高频、全方位的互动,比较成功的互联网品牌包括小米、罗辑思维、梁欢等

    7. 激发用户创造,自组织构筑网络生态。使用户也成为产品的一部分,激励用户进行创造,生成高价值内容;用户在创造的同时还能自组织,自发形成多层次、多样性的网络单元,使互联网产品扩展为一个复杂的生态系统(最典型如豆瓣),自行繁荣壮大。

  2. 朴素的个性是深邃思想的自然结果!说道:

    这个问题的作用其实是填充他 而不是挖掘 你怎么能从土里挖出本来不存在的东西呢?
    实际上他们做这些事情更多的是正常运营业务+营销品牌包装层面的策略
    跟互联网没有半毛钱关系 思维倒是有的
    这里提出的互联网思想做产品其实跟之前提出的降级论属于一个路数的
    即“看起来挺合理且振奋人心”好像一种新的模式被发掘出来了 其实没有
    很有意思的是据我所知 这两种理论都来自于一个品牌的同一个人口中

    比如某品牌经典的停车几式 就是用痛点引发了一系列的营销行为
    但这可不是在做产品 这是一个活动正常的分析-策划-实施的过程
    至于那些品牌的形象等等 无不来自微博和网络的烘托
    当他们管这东西叫社会化营销的时候 我估计高手们就笑了 只是不便说出口而已
    大家可以反驳我 “你行你也来” 对此我无话可说。
    我没法证明什么 我只想说我的直觉告诉我 有些事情没有看起来那么简单。
    这些事件的推行者确实很厉害 演讲到位 想法透 高度够 资源野 起步高 而且能够把一个宣传机会作为一个分享演讲说出来 只是有些东西并不是我们看到的那个样子而已。

    分享一个正好看到的跟停车罚单类似的案例
    其实就是一环一环解决问题然后推进跳到一个包袱的节奏
    不过这个比停车的案例 会让消费者还要更爽一些 并且有足够的传播性
    我最近至少看见四次身边的朋友跟我分享了 这才叫社会化营销

    至于那些运营策略和实际效果
    人艰不拆

    只有在人艰不拆假大空的事情上
    这些品牌倒是顺利的继承了互联网但也不是思想 只是手腕
    就好像最近雷军说 “我打算融资用来招聘人才和其他业务,但谁给钱,给多少我不会说。”一样。
    其实核心思想是 小米要扩张岗位了 你们赶紧来发简历。

    当然我要说,创业确实不容易,很多事情其实仅仅是因为努力和资源,而被作为一种互联网梦包装了出来之后确实对于行业和从业者都很振奋,但同样也为其他创业者埋下了大大小小的坑。为什么说成功无法复制,因为实际上他说他靠A起家实际上他靠的是Q,你去埋头搞A肯定是起不来的。对于宣传自己的时候确实效果很不错,但害苦了其他创业者。

    所以除非你自己达到了一个高度能够把品牌,消费者,商品,营销各个环节跑通,否则不要轻易大家分享的相信案例。
    第一,解构权威话语权,以草根话语权取代。既往公司通过统计抽样了解用户大致需求,然后再凭借专业能力设计产品。而互联网的方式则是让用户参与到产品设计、改进中来。公司通过论坛,社交网络直接与用户沟通。用户也可以通过自己在网络上的影响力,要求或者呼吁产品进行改变。

    第二,从细分市场入手。既往的产品,追求市场规模和普适性。而互联网的思路则是从细分人群入手,为某一类人创造价值。这样做的背后不仅是传统细分市场的思路,其互联网的隐喻在于,互联网渠道的便捷性可以让小众的人聚集在一起,形成可观的用户群,并达到有效的信息传播。而传统模式下,小众需求无法被满足的原因也在于,很难找到这群用户,并将产品信息传播出去。

    第三,从工业时代回归人性。所以我们看到企业变成微博上发段子的大V,其形象拟人化。有血有肉,有喜有乐。从这个角度来看,可以一窥互联网对工业机器生产带来的标准化、冰冷感的破坏。

    1、以用户为中心的产品设计;
    2、快速迭代的试错策略;
    3、口碑营销的推广方式;
    4、令人愉悦的服务体验;
    5、微创新的产品理念;
    6、与用户做朋友。
    1 互联网把使用电脑的人连接起来,构成了一个全球化的相互沟通、交流、参与的互动平台,改变了信息的传播方式,中国网民从08年的2.5亿迅速增长但到12年的5.4亿,互联网的迅速普及是新商业模式的基础。
    2 互联网本身还处于初级阶段,是一个新生儿获取大量信息、技术然后不断进化演变的一个过程,云计算等新技术的逐步成熟,将促使大量新的服务模式和平台诞生,从互联网商业化至今,互联网思路也在随着互联网的成长而不断变化。
    3 传统大企业经营方式是不断扩张企业规模,通过规模扩张实现对采购、渠道、市场、客户的垄断,达到做强做大最终实现垄断达到占有市场的目的。简单来说就是通过市场调研、研发设计、规模采购、模具制造、渠道建设、广告营销、售后服务传统模式把厂家生产出来的产品推销给终端用户。因此普遍具有产品周期长、渠道广告营销成本高、库存占有量大、用户针对性低、用户参与度低等传统模式固有的缺陷。
    4 现阶段随着互联网的普及,互联网企业因为无力在原有传统市场和原有巨头进行资源竞争,因此借助互联网的特性跳开传统资源的束缚,直接通过获取客户来重铸新的商业模式,把商业模式简化为针对特定消费群体设计产品、通过网络让客户直接介入产品设计同时达到营销广告效应、获取订单制造生产、跳过层层渠道通过电商平台直接卖给消费者、售后服务。
    5 任何商业模式的目的都在于获取终端客户,互联网铲平了商家和客户之间的障碍,改变了原有的商业模式。传统的商业模式利益链正在逐步被互联网固有的特性破坏。
    个人认为现阶段的互联网思维就是如何利用新的规则直接赢取客户。
    (^_^)太庞大的话题,不多写了。也不引用小米、360、企鹅、百度、亚马逊的例子了,但上述企业的共性就是利用互联网直接获取客户,构筑各自属性的平台建立赢利模式,在赢利模式建立前都经历过不知路在何方的迷茫!

  3. 呵呵你猜斯基说道:

    1、运用众包理论,让用户参与到产品中来,用户既是消费者也是生产者,如在社区论坛的讨论,销售工程机等
    2、基于反馈,快速迭代,如系统的更新频繁
    3、先预约,后销售,甚至是先付定金,几乎可以准确锁定目标市场
    4、通过微博、官网等开展营销,社交网络口口相传
    5、线上销售,省去渠道等中间环节
    6、粉丝文化

    互联网的发展史就是一部去昧史,反对特权,反对权威,去中心化,那些意图奴役百姓与制造等级都是逆历史潮流而行。

    下面一条我写的微博回答我对余额宝与银行的理解:

    互联网的商业逻辑是得鸟丝者得天下(长尾理论),传统行业的商业逻辑是80/20法则(20%的人贡献80%的收入),银行是不希望那80%的人去网点办业务的,于是用手机银行、网银、ATM引导你,他们希望的是无需排队等候的那20%的VIP大客户,而那80%是阿里需要的,这就是支付宝的机会

    1、用户为本:没有一个行业能把用户体验、用户需求的高度上升到互联网行业怎么高。很多传统企业实际是我出什么你买什么。
    2、数据导向:由数据分析做决策,以及验证最终的结果。
    3、创新性:当然国内c2c也算是一种快速吸取外界的创新方式吧,呵呵。能根据用户需求快速做出改进,也能打破常规做出一些颠覆的东西。

    总是在听着说“用互联网产品思路”来做产品,例如雷军是用互联网产品思路来做手机,那到底什么是互联网产品思路呢?制造业出身,目前就职于IT的我感到貌似终于有了点发言权~
    成本理念
    功能与用户体验
    消费者与用户
    企业与团队
    一:成本
    你如果没在制造业里呆过,也许永远不知道成本在这个行业里是多么重要,重要到大家都有了一个共识(以家电为例):现在家电拼的是什么?不就是一个成本吗?
    他们从来没想过,Panasonic,Philips靠什么来保持市场竞争力。
    互联网企业虽然会核算成本问题,但不会去拼成本,相比来讲,更愿意花高一点的价钱打造一个基因优秀的产品,其实也并不是互联网产品的特性,不过是国内互联网这个行业与从业人员相对年轻,能更好的接受国外的这种产品理念。如同前文所言,Panasonic、Philips、Siemens、Sony均是如此,当然不排除国家防火墙对互联网产品的帮助。
    无论出于什么原因,结论上,传统行业更看重成本,而互联网产品思路则更注重一些其它的东西。
    二:功能与用户体验
    制造业中产品功能很多是竞品分析或是领导拍个脑袋来定的。大型企业虽不缺乏用户调研的过程,但却缺少行之有效的分析手段,这些点与国外差距很大,而互联网天生的计算机、信息传播与数学基因导致用户调研能够以极少的成本投入实现,并且做出有效的数据分析。从功能的定位来讲互联网产品便已然先进了一步。
    用户体验。传统企业面对功能,就要切合之前所讲的成本问题,会选择以最低的成本来实现该功能,而互联网团队则会选择用户体验最优作为第二约束力,而成本至多排在第三。
    目前在这点上国内还极少有团队能够转型,除了小米与魅族这样的“先锋型”的企业,还有些汽车企业做的不错,其它企业也仅仅是随着iPhone与其它智能手机的普及,“用户体验”喊得让聋子都能听见后做出一些转变,但仍不明显。但我相信随着新生代工业设计师的加入,在五年后会有很明显的改观。
    在此赞一句,魅族在几年前就意识到了用户体验的重要性。目前极路由也有点儿这个意思。
    三:消费者与用户
    在制造业企业开会,听到最多的是消费者XX,XX消费者。而在互联网团队中,更多的是听到用户,基本完全取代了消费者。注意二者的区别不仅仅是字面上的。
    消费者,将不会具有消费惯性,不会对你的产品产生感情,也许有人会辩驳说:我使用海尔的产品好多年,我是忠实的海尔粉丝,我已经有了使用惯性,有了感情。那我会说,你不过是在这个产品的使用过程中将自己培养成了一位海尔用户,但海尔仍然未将你们当作用户来培养,而是当作消费者,每次新产品发布,你们都会被刷新一次。
    用户,是具有身份信息的,是具有可识别性的,你在我的产品面前是独一无二的,你可能会享受优惠或是其它福利,即便无惠无利,但你有着独一无二的身份,起码拥有了我企业服务器上几K的存储空间。
    现在越来越多的传统企业意识到需要在这个定位上做出一些改变,比如会收集一些手机号码,或其它个人信息,但企业转身是需要时间的,目前除了魅族与小米还难有其它企业能做到如此成功。当然最成功的还属小米。
    四:企业与团队
    传统行业中的员工,嘴边经常挂着:“我们单位…………”,互联网企业则会是“我们团队…………”这其实从侧面反应出一种文化,矩阵式管理,快速合作开发,井井有条,给人一种“快闪”的感觉。在有需要时扎到一起,通力合作,通过高效的模式尽量降低内耗成本。以个人为单位进行生产机器的组装,而不是以部门为单位。
    互联网产品的思路会更看重速度与激情。针对反馈的问题,快速迭代,争分夺秒,当然也导致了目前业内加班严重的现状,在此对广大研发工程师表示…………
    说到快速迭代就想起Chrome。忘不了08年第一次使用Chrome那满脸补丁的样子,如今已是Version 31.0.1622.0 dev。

    及时性
    所以做产品要能实时反映用户关心的情况,信息沟通要及时。以前我从来不会点产品的“帮助”或者“联系我们”这些按钮,但是现在才发现这些很重要。开发者通过这个渠道能够很好地跟用户沟通并且发现问题以及时更新或提升。当然,收集用户反馈有很多渠道,重点就是能够及时地持续地进行产品改进。
    共享性
    现在互联网产品很多都走向社区化,能更有效地圈住用户。同时,通过一些社会化营销手段比如微博等,能够很好地对产品进行宣传以及扩大影响。
    数据量大
    所以这个对产品的性能要求比较高,特别是一些基于数据分析等方面的产品。
    移动化
    不单单说移动端的应用,大部分的 PC 端的产品也都在相应地开发移动端 APP,这足以证明移动端产品对开发者的吸引力。有调查显示目前移动端广告效果正在逐渐攀升,广告主已经在加大移动端的广告投入。
    其他还有很多,大家都说得很对呀

    1、按传统产业思路做产品
    2、按传统硬件思路做产品
    3、按传统软件思路做产品

    区别在哪里呢?

    个人感觉是以下几点:
    1、整装待发 vs 轻装上阵

    传统行业处于饱和竞争的状态,贸然出击往往会死的很惨。因此往往倾向于详细的准备、规划和分析。而互联网行业由于没有什么成功案例可循,往往是边打边看

    2、自上而下 vs 自下而上

    传统行业注重顶层的决策和管理,中下层就只是执行。而互联网公司更注重个体的能动性,在保持决策效率的前提下,在管理方面做了各种探索。

    3、商业模式 创新

    比如卖服务而不是卖授权,卖广告而不是卖硬件、做平台而不是卖产品等。

    我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的showstopper也有上百。

    分享下我的debug的经验

    1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间。

    2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治。
    比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好了。为什么不根治呢?因为要保持兼容性不能改接口了。Windows系统里就好多这种烂API。
    问下老员工吧,说不定他们都遇到过好多次了。

    3. 放大现象,有些bug现象不太明显,那么就想办法增大它的破坏性,把现象放大。这只是个思路,具体怎么放大只能根据具体的代码来定。
    比如:美剧《豪斯医生》里有一集,怀疑病人心肺有问题,就让病人去跑步机上跑步,加重心肺负担,从而放大症状。

    4. 二分法定位,把程序逻辑一点点注释掉,看看还会不会出问题,类似二分查找的方法,逐步缩小问题范围。

    5. 模拟现场,有时候我会问自己,如果我要实现bug描述的现象我要怎么写代码才行?
    比如:我遇到一个死锁问题,但是检查代码发现所有的锁都是配对的,没有忘记解锁的地方,而且锁很简单就是一个普通的临界段,保护几行赋值语句而已。这样的代码怎么写才能让他死锁呢?
    我想如果让我故意制造这样一个现象,只有在上锁的时候强制杀掉线程了。
    既然这样就可以去看看有谁强杀线程了没有。

    6. 制作工具,针对某些bug编写一些调试辅助工具。
    比如,我那个系统没有完善的崩溃报告,虽然也有dump,但是分析出来的callstack经常不准。于是我为解决崩溃问题编写了个工具,会自动扫描代码,在每个函数入口和出口插入log,以此来定位崩溃点。

    7. 掩盖问题,虽然这样做有点不厚道,但是有时不得不这么做。有些bug找不到真正的root cause,但是又要在规定时间内解决,那么我们就可以治疗症状而不去找病因。比如用try catch掩盖一些奇怪的崩溃。不到万不得已不要这么干,未来可能会付出更大代价。

    我在做这份工作的时候也在追美剧《豪斯医生》,豪斯大叔解决病症的思路和debug差不多,对我很有启发。

  4. 虚晃一枪说道:

    简单说一句“市场供求关系”,还是不能很清楚地解释这个问题。

    展开来解释的话,主要能想到的就是这么几条吧:

    第一,it 行业自打诞生以来,一直是资本的宠儿。所以,这个行业总体上是不缺钱的,有能力给你开高薪。

    第二,跟制造业相比,it 是个轻资产的行业。除了人力成本外,老板和投资人基本不需要负担其他大规模成本。富士康工资是不高,但是算上每年的设备折旧,可就不得了了。

    第三,it 行业的边际成本很低,一套 office 开发出来,卖一套也是卖,卖一百万套,也不过多压一百万张光盘而已,互联网行业就更是如此。这意味着 it 企业雇佣少量员工就能支撑巨大的业务规模。阿里巴巴两万多人,也不过就是一个铁路局的五分之一甚至十分之一。

    第四,it 产业规模一直在高速扩张,但是程序员从根本上说是不能速成的。哪怕是半路转行的程序员,也不能忽视他转行之前多年的教育背景。这是造成供求关系的主因。

    第五,程序员是 it 行业的核心竞争力。这个就不解释了。

    第六,it 行业的生产工具,除了基本的硬件和办公场地外,主要以信息的形式存在,并且免费居多。这意味着 it 企业可以频繁更新生产工具提高生产效率,这一点传统行业基本做不到。

    第七,程序员的薪水并不高。不用纠结那点数额,只需要清楚一个基本规律——一个岗位的薪水和能提供的岗位数量是不可兼得的关系。而程序员岗位显然并不稀有,处于就业量和薪水之间的折衷状态。

    第八,it 行业是人力资源市场化最完全的行业。在同等条件下,程序员比其他人背负了更大的失业风险,这个风险在薪水中有所体现。哪怕在it 行业内部,创业公司的招聘成本也比大公司高,这个成本未必体现在月薪中,也要考虑期权。

    ## 公司提供
    * 1x MacBook Pro w/ retina 13, 2013 年的中配, i5/8G/256G/集显, 不用更高的配置是因为在本地就是写代码跑测试, 再高也没啥意义, 真耗资源的上服务器跑
    * 2x DELL U2412m 的显示器, 1920×1200 分辨率, 其实我想要 4K 的高分屏… 不过这个是 16:10 的高宽比又比一票 16:9 的 4K 强
    * 2x 乐歌 DLB502 显示器支架, 够用, 也不用浪费钱上更好的
    * 1x 桌子 140cm/70cm, 应该还可以更大

    ## 自己带的
    * 1x Noppoo Lolita 国产红轴 87 键机械键盘, 自己用不上数字小键盘, 这样更省空间, 青轴太吵黑轴太重茶轴太无感所以选红轴, 没上 filco 什么的都是因为穷, HHKB 买不起同时也不习惯那个键位 (试用过别人的)
    * 1x 罗技 G1 鼠标, 很早以前买的, 以为自己会打 RTS 游戏的其实也还是拿来办公写代码了
    * 1x 赛睿 (steelseries) QCK+ 鼠标垫, 6mm 厚的大垫子, 真心舒服, 用过就再回不去普通桌面和一般鼠标垫了

    23寸双显示器
    16CPU
    16G内存

    256G的SSD做主硬盘 2T从盘

    家里的是青轴机械键盘
    鼠标是个渣,换来换去后来换了个游戏鼠
    配了个木质音响,音效好棒

    机器配置高点,一两年省下的时间足够思考好长时间的人生了。

    Windows桌面,不知道其他人是不是这样的,以前很多同事包括我都喜欢把任务栏调到顶部,这样就不用整天低头找图标了。

    目前是一名独立软件开发者,自由职业中。

    然没有Linux系统的,来秀一下我的非主流:

    两百八十块钱买来的二手主机,拆掉原有的赛扬E1400换成上台电脑留下的二手酷睿E8500,内存也是二手买来的,因为DDRII很难买到新的了,4G上满。硬盘是上台电脑留下的64G SATA 2 固态硬盘+80G IDE 口机械硬盘,硬盘是以前买的新的,这个不能用二手,不过也用很久了。主板集成显卡,显示器是八年前买的17寸明基液晶显示器,大概还可以再用几年没问题。

    只有键盘还行,是四百多买的凯酷的机械键盘,自己动手装了静音环,算下来主机还没这个键盘贵,显示器恐怕也没有键盘贵,鼠标更惨,是京东打折九块九买的,对,我是键盘流,Intellij也配置了ideaVim插件,加上快捷键基本不需要鼠标。

    系统是Ubuntu + Awesome,主要编程工具是Intellij + vim + 命令行,用wime上QQ,其他软件Linux都有。可能是用了固态硬盘的原因,跑起来很流畅。尤其是Intellij比在公司用的新笔记本还好点,公司里用的笔记本性能全面超过家里的台式机,CPU是i7-4712MQ的,比E8500晚出来7年,跑分是E8500的三倍多,内存DDR III 1600 8G,而且固态硬盘还是SATA3的,但是公司要用RTX要有打印驱动,不得不装了Windows。似乎Intellij在Linux下面表现确实是要比Windows好。

    公司捡的外接显示器。
    14年的Macbook pro 13
    键盘CHERRY G80红轴
    鼠标已换赛钛客R.A.T.5实一般不用外接显示屏,普通的日常开发任务在这 13" 的 RMBP 上足够了,同事经常问我为什么不用大屏显示器,本宝宝是这么回答的:

    方寸之间,挥洒自如。

    其实多用用快捷键和 Alfred 就好了。

    倒是 iOS 在 Storyboard 里 autolayout 布局的时候必须要用大显示器。

    挑一些简单的BUG开始改。

    因为你的使命是熟悉代码而不是改BUG。真是特别复杂的BUG都需要改设计改架构的,BUG不仅仅是逻辑错误,有时是整个设计出的问题。可是你作为新手,不熟悉软件的架构和原来设计者和架构师的用意,要么改错,要么只能轻轻的放一个dirty fix。比如(if xxx!=null) if(xxx is XX) 甚至 catch(Exception)

    所以我建议, 首先找一直重现的BUG. 不能一直重现的BUG, 往往跟好多东西有关(内存, 并发), 还得有经验的人脑子里有整个时序图, 才能"猜"出来哪里可能有问题, 然后用工具去验证. 这个你暂时做不来.
    其次, 找容易找到出问题代码的BUG. 比如UI或者直接crash的BUG. UI的BUG基本都能知道哪里的值不对了, 直接推回去看后台(业务)代码是什么问题. 直接crash你一定有办法看到call stack, 就比较轻松了.
    最后, 找你们组最牛逼的人问问经验, 及常用的问题定位方法. 比如日志. 我理解最牛逼的人很忙, 但是不要去找有时间还热心的人, 那些人的水平根本跟不上, 所以才有时间. 他们要么回答不了你的问题然后跟你研究好几天. 要么提一些tricky的方法. 要学就跟最厉害的人学. 他之所以忙也是因为他最厉害. 他会愿意花几分钟告诉你如何快速并且高效的找到他负责的软件的BUG的.

    至于具体的找逻辑错误, 别人回答的已经很好了. 自己摸索自己最喜欢的方式. TIPS: IDE里有很多很厉害的功能不要小瞧. 我这个小菜鸟就说说VS, 有condition breakpoint, 运行时所有Exception都是是可以配置要不要抛给你并暂停线程的, 可以给变量分配编号 (eclipse可以直接看到地址 – -#), 等等. 可以上网查查相关的, 磨刀不误砍柴工.

  5. 路人甲说道:

    软件工程师年薪超过40万$ 在创业公司里真是相当幸运,很可能是极其资深(不是指职务,而是经验老道)软件工程师/架构师那种。

    能做到下面这几点,我是不会惊讶他们年薪超过40万的。

    头发有些花白。极罕见的例外是少于十年工作经验的。

    令人印象深刻的良好记录。交付软件很有经验,有百万计的人们实际用他做的系统。他的一份简历让我说’哇!此人要么是很幸运还是真的有两下子。‘

    领域内闪光或’顶尖’的知识。在一个领域有非常深厚的经验(我见过的最深的),或在两个或两个以上的领域相当深的经验,并在其他领域还有较浅的经验。

    雄厚的技术和领导技能。技术技能上能够架构宏大设计方案,编写它关键部分。领导力上,能够组织大家做伟大事情,并且正确的做到。

    卓越的沟通技巧。他们在技术讨论中很自信,不会认输的。他们善于解释努力的方向,并且能让从专家到外行,都知道这里面的重要。

    好的人际网络。由于他们的职业生涯的强度和长期持续的时间,他们在很多地方认识很多人。这总是有用的,并且此人是值得保持联系的。

    相信项目能够成功。他们知道的大多数项目取得成功,并且这个也会成。

    聆听的能力。他们不只是嘴上BB,他们更懂得倾听,理解透彻。他们仔细考虑不同意见优缺点,在适当时候也会改变航向。

    假如年薪50万,公司养人差不多是1.5到1.7系数的成本,好歹公司不能白养你,总的赚点,综合说你得为公司创造每年100万的效益。作为以编写软件为生的人,你的主要贡献是代码在产品上能发挥什么作用。概况点,三个作用,别人做不到的你做得到;别人做得到的,你能做的成本更低;别人做的到成本也低,你做的更好。这就是温州商业经验“人无我有,人有我廉,人廉我优,人优我转”。第一个作用参考各种安全类厂商;第二个作用参考各嵌入式厂商;第三个作用参考巨头软企。由于你的作用,公司能够规避各种安全风险避免损失超过100万每年;由于你的作用,公司能在程控芯片上有更大的灵活度,每年成本节省100万;由于你的作用,公司每年比竞争对手多卖100万,你都能拿到年薪50万。
    对于代码而言,任何代码背后的努力比代码本身更多。我曾经花两年时间编写了一个软件,代码不过8000行左右,公司在我身上花费超过40万。问题是8000行的代码,背后的软件设计方案、算法推演仿真、数据分析的工作量换算成文字打印出来估计能有一人高,如果再加上试验检验,人力物力投入更大。这么多工作量,我认为从8000行代码的工作量拿1万块钱就够了,背后的工作该拿39万。再比如黑客,编写病毒不需要多大工作量,因为病毒代码越短小越好。但知道怎么写需要巨大的工作量,你得知道怎么插入到其他程序中去,怎么加壳,怎么规避安全软件等等。明白我的意思没?任何拿高薪的程序员都是披着程序员外皮的其他职业者。比如黑客是黑客,不能因为他的工作需要编程去实现就归为程序员;设计师是设计师,不能因为他要用编程去实现算法、架构之类的就归为程序员;分析师是分析师,不能因为他要用编程去分析数据就归为程序员。
    综上所述,真正意义上的程序员拿不了年薪50万。但是你可以从事披着程序员外皮的其他职业,既满足了兴趣又能拿高薪

    在进入库之前了解一下什么是图形界面(GUI)?

    GUI 是 Graphical User Interface 的简称,即图形用户接口,通常人机交互图形化用户界面设计经常读做“goo-ee”,准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。
    GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。
    说一下学习这个原因:

    之前也一直想学习有关于Python的GUI一直挂在嘴边,但是没有实际学习操作。这次刚好要给公司做一个简单的工具,于是需要学习一遍。

    PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。Qt库是目前最强大的库之一。PyQt是由Phil Thompson 开发。

    PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。
    官网:Qt | Cross-platform software development for embedded & desktop

    开发文档:Qt – 开发者

    成品样例:

    来自用户@吃桔子的攻城狮

    学习地方:

    1、官方社区:Qt Forum

    2、官方博客:Qt Blog – For Developers by Developers

    3、PyQt4 tutorial

    4、Archi – 博客园

    5、PyQt – Woodpecker Wiki for CPUG

    wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的。
    就如同Python和wxWidgets一样,wxPython也是一款开源软件,并且具有非常优秀的跨平台能力,能够支持运行在32 /64位windows、绝大多数的Unix或类Unix系统、Macintosh OS X下

  6. 我就笑笑不说话说道:

    python提供了多个图形开发界面的库,几个常用Python GUI库如下:
    Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
    wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。
    Jython:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用Swing,AWT或者SWT。Jython可以被动态或静态地编译成Java字节码。
    Tkinter 编程
    Tkinter 是Python的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序。
    由于Tkinter是内置到python的安装包中、只要安装好Python之后就能import Tkinter库、而且IDLE也是用Tkinter编写而成、对于简单的图形界面Tkinter还是能应付自如。
    创建一个GUI程序
    1、导入Tkinter模块
    2、创建控件
    3、指定这个控件的master, 即这个控件属于哪一个
    4、告诉GM(geometry manager)有一个控件产生了。
    实例:
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-

    import Tkinter
    top = Tkinter.Tk()
    # 进入消息循环
    top.mainloop()
    以上代码执行结果如下图:
    tkwindow
    实例2:
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-

    from Tkinter import * # 导入 Tkinter 库
    root = Tk() # 创建窗口对象的背景色
    # 创建两个列表
    li = [‘C’,’python’,’php’,’html’,’SQL’,’java’]
    movie = [‘CSS’,’jQuery’,’Bootstrap’]
    listb = Listbox(root) # 创建两个列表组件
    listb2 = Listbox(root)
    for item in li: # 第一个小部件插入数据
    listb.insert(0,item)

    for item in movie: # 第二个小部件插入数据
    listb2.insert(0,item)

    listb.pack() # 将小部件放置到主窗口中
    listb2.pack()
    root.mainloop() # 进入消息循环
    以上代码执行结果如下图:

    Tkinter 组件
    Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
    目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
    控件 描述
    Button 按钮控件;在程序中显示按钮。
    Canvas 画布控件;显示图形元素如线条或文本
    Checkbutton 多选框控件;用于在程序中提供多项选择框
    Entry 输入控件;用于显示简单的文本内容
    Frame 框架控件;在屏幕上显示一个矩形区域,多用来作为容器
    Label 标签控件;可以显示文本和位图
    Listbox 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
    Menubutton 菜单按钮控件,由于显示菜单项。
    Menu 菜单控件;显示菜单栏,下拉菜单和弹出菜单
    Message 消息控件;用来显示多行文本,与label比较类似
    Radiobutton 单选按钮控件;显示一个单选的按钮状态
    Scale 范围控件;显示一个数值刻度,为输出限定范围的数字区间
    Scrollbar 滚动条控件,当内容超过可视化区域时使用,如列表框。.
    Text 文本控件;用于显示多行文本
    Toplevel 容器控件;用来提供一个单独的对话框,和Frame比较类似
    Spinbox 输入控件;与Entry类似,但是可以指定输入范围值
    PanedWindow PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。
    LabelFrame labelframe 是一个简单的容器控件。常用与复杂的窗口布局。
    tkMessageBox 用于显示你应用程序的消息框。
    标准属性
    标准属性也就是所有控件的共同属性,如大小,字体和颜色等等。
    属性 描述
    Dimension 控件大小;
    Color 控件颜色;
    Font 控件字体;
    Anchor 锚点;
    Relief 控件样式;
    Bitmap 位图;
    Cursor 光标;
    几何管理
    Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,一下是Tkinter公开的几何管理类:包、网格、位置
    几何方法 描述
    pack() 包装;
    grid() 网格;
    place() 位置;

    ython提供了开发图形用户界面(GUI)的各种方案。下面列出了最重要的。
    Python提供了开发图形用户界面(GUI)的各种方案。下面列出最重要如下:

    Tkinter: Tkinter的是Tk的GUI工具包,与Python附带的Python接口。在本教程中我们将看看这个选项.

    wxPython: 这是一个开源的Python接口的wxWindows http://wxpython.org.

    JPython: JPython的是一个用于Java的Python端口,

    这使得Python脚本在本地机器上的无缝接入到Java类库http://www.jython.org.

    有很多可用它,我这里没有列出的其他接口。您可以通过网络找到它们.

    Tkinter 编程:

    TkInter是标准的Python GUI库。的Python与Tkinter的结合提供了一个快速和容易的方法来创建GUI应用程序。 Tkinter的提供了一个强大的面向对象的接口Tk的GUI工具包.

    使用Tkinter创建一个GUI应用程序是一件容易的事。所有你需要做的是执行以下步骤:

    导入Tkinter模块.

    创建GUI应用程序的主窗口.

    添加上述部件之一或更多的GUI应用程序.

    进入主事件循环的由用户触发每个事件响应.

    例子:
    #!/usr/bin/python

    import Tkinter
    top = Tkinter.Tk()
    # Code to add widgets will go here…
    top.mainloop()
    这将创建一个下面的窗口:

    Tkinter的部件:

    Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为部件.

    目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:

    Operator Description
    Button The Button widget is used to display buttons in your application.
    Canvas The Canvas widget is used to draw shapes, such as lines, ovals, polygons, and rectangles, in your application.
    Checkbutton The Checkbutton widget is used to display a number of options as checkboxes. The user can select multiple options at a time.
    Entry The Entry widget is used to display a single-line text field for accepting values from a user.
    Frame The Frame widget is used as a container widget to organize other widgets.
    Label The Label widget is used to provide a single-line caption for other widgets. It can also contain images.
    Listbox The Listbox widget is used to provide a list of options to a user.
    Menubutton The Menubutton widget is used to display menus in your application.
    Menu The Menu widget is used to provide various commands to a user. These commands are contained inside Menubutton.
    Message The Message widget is used to display multiline text fields for accepting values from a user.
    Radiobutton The Radiobutton widget is used to display a number of options as radio buttons. The user can select only one option at a time.
    Scale The Scale widget is used to provide a slider widget.
    Scrollbar The Scrollbar widget is used to add scrolling capability to various widgets, such as list boxes.
    Text The Text widget is used to display text in multiple lines.
    Toplevel The Toplevel widget is used to provide a separate window container.
    Spinbox The Spinbox widget is a variant of the standard Tkinter Entry widget, which can be used to select from a fixed number of values.
    PanedWindow A PanedWindow is a container widget that may contain any number of panes, arranged horizontally or vertically.
    LabelFrame A labelframe is a simple container widget. Its primary purpose is to act as a spacer or container for complex window layouts.
    tkMessageBox This module is used to display message boxes in your applications.
    标准属性:

    让我们来看看如何他们的一些共同的属性。如大小,颜色和字体指定.

    Dimensions

    Colors

    Fonts

    Anchors

    Relief styles

    Bitmaps

    Cursors

    几何管理:

    Tkinter的部件有特定几何形状的管理方法,整个小部件父控件区域组织的目的。 Tkinter的公开以下几何经理类:包装,网格,位置.

    pack()方法 – 这个的几何管理器组织之前,将其放置在他们的父widget块部件.

    grid()方法 – 这的几何管理器组织表状结构中的小部件的父部件.

    place()方法 – 这个的几何管理器组织放置在一个特定的位置,在他们的父widget部件.

    tackoverflow.com/)这个网站我几乎可以不用介绍了,就算你们不常用,就算每次你都用搜索引擎去找编程相关问题都有很大可能跳入此网站。此网站用途:当你碰到任何编程问题,就去搜索该问题,如果没有解决方法就提问吧。(大多时候都是有你的问题的解决办法的)

    (https://github.com/) 如果你是一名程序员,千万别和别人说你不知道github,那你会被鄙视的。各式各样的开源类库、软件、代码统统都有。不管你是入门、中级还是高级程序员,你都应该学会使用它,另外推荐一下国内的(Coding | 代码托管,项目管理,WebIDE,演示部署,开启云端开发模式,让开发更简单)

    作为开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法

    (http://www.csdn.net/以及http://www.oschina.net/)我一开始写博客的时候是在CSDN上面写的,后来逐渐转移到了osc上面。我选择社区的标准是内容不要太杂乱。这两个国内最大的同性交友网站是比较全面生态的程序员社区,各种教程、资源、工具、书籍都是可以找到的。在社区里,你可以尽情的写博客,发动态,激烈的讨论问题,只有在这种环境下才能激起你学习的热情。

    (http://www.w3school.com.cn/) 对于刚学习编程的人来说,这儿无疑是天堂,几乎囊括了所有可以帮助你入门的编程的教程。在 w3school,你可以找到你所需要的所有的网站建设教程。从基础的 HTML 到 CSS,乃至进阶的XML、SQL、JS、PHP 和 ASP.NET。你甚至可以一边学习一边练习。这是一种多么理想的学习状态。

    InfoQ(Information Queue)是一个在线新闻/社区网站,旨在通过促进软件开发领域知识与创新的传播,为软件开发者提供帮助。
    (http://www.infoq.com/cn/)这是一个神奇的网站,他们的内容比较有技术深度,很多大公司的架构上面都有介绍,很多实战经验非常值得借鉴,他们有一个公众号(infoqchina)每天早晨都会推送一篇文章,非常有深度值得学习每天提升自己。

    (https://www.zhihu.com)可以说这个社区部满了程序员,或许你对编程学习路线有问题、或许你想要找些资料,这个社区都能毫无保留的满足你。各类各样的程序员问题只有你想不到,没有你找不到。

    (http://www.jikexueyuan.com)(http://www.imooc.com)如果你比较喜欢看视频这种比较有带入式的学习,这两个网站没有错误。海量的教学视频、以及比较全面的学习路线wiki等可以帮助在学习编程路上的你。活到老、学到老。用心去学习吧。感谢用户@蓬朵儿 的提醒,添加一下有关内容:各种世界名校公开课,有三大:edx,coursera,udacity。我国有果壳mooc,中国mooc,中国大学mooc,学堂在线,网易公开课,慕课网……等等。

    (http://gold.xitu.io/welcome)最后不得不推荐朋友的一个高逼格网站。掘金是一个高质量的技术社区,从 Swift 到 React Native,性能优化到开源类库,让你不错过互联网开发的每一个技术干货。当然你可以选择下载他们的app:点击链接或者各大应用市场搜索「掘金」,技术干货尽在掌握中。赶紧去看看吧。

发表评论

邮箱地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>