作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
- Java编程入门类:《Java编程思想》、《Agile Java》中文版;
- Java编程进阶类:《重构 改善既有代码的设计》、《测试驱动开发 by Example》;
- Java架构师之路:《Expert One-on-One J2EE Design and Development》、《Expert One-on-One J2EE Development without EJB》、《企业应用架构模式》、《敏捷软件开发 原则、模式与实践》 ;
- 软件开发过程:《UML精粹》、《解析极限编程 拥抱变化》XP、《统一软件开发过程》UP、《敏捷建模》AM;
- 软件项目管理:《快速软件开发》。
在这份推荐阅读书籍的名单中,没有列举流行的软件框架类学习书籍,例如Struts,Hibernate,Spring之类,也没有列举AJAX方面的书籍。是因为这类书籍容易过时,而上述的大半书籍的生命周期都足够长,值得你去购买和收藏。
一、 不少程序员都会碰到的三个面试题
- 求从10到100中能被3或5整除的数的和
答:解析问题,手工“解决”:(1)对于孩子和成年人而言,这一步对前者来说更困难;(2)然而,如果要求误解了问题的学生来重读这个问题,孩子们的表现会超过成年人。
- 将一个字符串逆序,不要使用反转函数
答:想出一个伪代码算法:(1)在这一步,学生的表现比成年人要好;(2)让人震惊的是,很多成年人不知道如何用他们偏好的编程语言从一个字符串中抽取一个字符。
还有第三个问题请点击小标题查看原文。有很多糟糕的代码编写者,即便你也是其中一个,也别不要害怕。相反,如果你是一个正在努力和“编程谜题”做斗争的成年人:
- 不停练习,直到你能快速且正确地写出小的代码片段。
- 为课本上的每个算法写一个用例列表。
- 至少做一个能逼迫你使用与工作相关的接口/用例的大型项目。
- 让自己接触更优秀的程序员。
二、 程序员保持天天快乐的6个习惯
当我快乐的时候我的状态最好。这的确很不一样。当我心情愉悦,写代码就更有效率,应对问题就更敏捷,并且更容易保持专注。我寻寻觅觅之后总结的几个习惯,和大家分享:
- 早起
- 每天运动
- 适当放松
- 乐于助人
- 学习新技能
- 认真过好每一天
三、 程序员的十大经验和十大教训
十大经验:
- 面向对象比你想象中的还难很多
- 程序设计师最重要的技能:沟通
- 你必须要学会说「不」
- 如果所有的事项都一样重要,那意思是它们都不重要——无论如何必须把先后顺序排出来
- 千万别把事情复杂化
- 深入问题的核心,但是不要被困住了
- 非常清楚的了解其它人在做的事情,无论是营销、设计、客服
- 你的同事就是你最好的老师 (你该试试结对编程)
- 无论如何最后的产品必须是好用的
- 这世界上总会有一些混蛋
十大教训:
- 第一个版本就想做太多功能
- 采用太新的技术平台
- 「复杂的问题,需要复杂的解法…」
- 团队人手不足
- 成员开始隐藏进度落后的事实和原因
- 不断更改、增加的需求
- 不知道客户在哪里
- 2.0 症状群——后继版本非要更大、更强、更美
- 与公司里面另一个很有份量的产品竞争(这在创业团队应该不可能发生)
- 根本从一开始就选了一个你无法解决的大问题
四、 设计师必读的8本书
收集了一些最新的电子书,也算是供给那些设计工作者们的一个小小书单。希望看后可以对你们有所提升:
- The Guide to Wireframing:一本完整的线框图内容,里面指导你通过理论知识到跨越每一个阶段并创建产品开发过程的实践内容,即从概念到推出。
- Pixel Perfect Precision Handbook:这是一本全面手册关于数字化设计内容,里面涵盖了我们所需要的全部知识内容和过程。
- The Creative Aid Handbook:如果你没有了灵感,请翻阅此书,它可以作为一本创意启示录,培养你的创造力和丰富你的想法及灵感,值得一看!
- Designing for the Web:与其他类型的网页设计书籍不同,这本免费的电子书深入讨论了网页领域的研究以及完成的所需工具及内容。
- Graphic Design for Non-profit Organizations:这本书的侧重点在于它的最佳实践,内容就是一个很好的资源,带有指导性,对你一生都非常受益!
- App Marketing Strategy Guide:在移动应用程序的市场里,这是一本免费的指导用书。它将帮助你提交你的应用程序到你的APP Store,然后等待看看会发生什么。
- Define app requirements within 20 minutes:‘20分钟内定义应用程序的要求’。你会发现所有的要求其实是一个易于填写的内容。这种智能型模板应简化应用程序员的工作。
- 3 Reasons to Use Multi-Platform Technology:这本书对于你的操作系统的创建提供了非常好的见解,也是绝对值得一读的好书!
五、 五个程序员求职者的最佳提问
- 在头两三个月里,贵公司希望我做出什么成绩,对我有何期望?
- 贵公司的优秀人才有哪些共同点?
- 什么事情能真正推动公司的业绩?
- 贵公司的员工在他们的业余时间做什么?
- 贵公司打算如何处理……?(技术变革、市场竞争、提高经济效益——即便是小企业也不能幸免。)
六、 最让程序员懊恼的10件事
- 6个月后再看自己的代码
- 与其他程序员的相处
- 含糊不清
- 硬件(总是被当成修电脑的)
- 缺少文档的程序
- 写文档
- 管理层不懂编程
- 范围蔓延
- 各种打搅
- 注释说明“是什么”,而不是“为什么”
- 需求、设计、领导想法总是变更;修改来不及变化;
- 又要开始学习新的语言了,原来的还没搞明白...
- 除了工作,还有公司考试,测试
- 找不到女朋友
- 只会打字不会写字
- 会变胖。(一坐一天,有限的私人时间中,还得留下时间学习、陪孩子,运动明显不够哇)