高级软件工程pair project工作总结 By 何栋梁

2023-11-05 02:40

本文主要是介绍高级软件工程pair project工作总结 By 何栋梁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       高级软件工程的pair project正式结束了。我和徐海峰同学经过一个星期的努力圆满完成了以下任务:

       1、 修改Academic map中代表各机构的圆圈颜色显示模式,将单调的四种颜色模式改 为按照红橙黄绿青蓝紫的颜色变化顺序表示各个机构。

       2、在各个机构中的中心显示区,根据作者数目排序显示出该机构的前三位的研究领域。

       我们预期我们的实验的结果应该是各个机构按照其规模从大到小的顺序,依次显示出由红色到紫色的渐变。另外,当我们点开一个organization的时候,在中心的大圆上显示出该机构作者数目在前三的domain. 那么我们任务完成后的实际效果怎么样?以下两图略做展示:

clip_image002

对机构重新赋上颜色,按从大到小的顺序依次由红色到紫色渐变

 

clip_image003

按作者数目显示每个机构的前三位的研究领域

 

        我们两个以前从来没有接触过silverlight以及C#。一开始我们组队的时候还是免不了对于结对项目的担忧。我记得,当我们拿到Academic Map的代码的时候,我们两个人都颇觉压力。然而,更加让我们窘迫的事情是,我们总共只有两个星期的时间,而上个周五周六徐同学都有丘成桐杯数学竞赛的面试需要应付,从这个周一到周三,我和他两个人都得参加微软亚洲研究院小学者夏令营活动,我们需要准备面试,需要参与团体的活动,而他在这个周四晚上就得启程去考托福,这也需要时间来准备。这一切让我们两个一开始都有点焦头烂额的感觉。我们各自所在的研究小组还会有一定的任务需要我们去完成,当事务如洪水般涌过来的时候,就看谁能激流勇进了。因此,基于这样的客观情况,一开始,我们两个对于项目任务并不乐观,预期的效果也不是很高,给自己定位的任务也并不太艰巨。我们两个讨论后,一致认为,我们做得不多不要紧,只要我们在这个过程中学到了东西就会有收获。于是,项目任务就在这样的前提下开始了。

      时间是如此的有限,我们拿到代码的第一天下午就开始了讨论。晚饭期间,我们就自己使用Academic Map的切身体会交流了各自的看法,最终商量好做排序,我们决定对机构的domain按作者数排序,以显示出来它比较优势的专业领域。然后我们跟唐敖兄弟确定了这个题目。后来,唐敖说我们这个任务相对的轻松,我们应该再做点别的,正好夏睿同学提出很多很好的idea,我们就掠夺了他其中的一个,那就是根据机构的规模将颜色做成渐变的模式,美化界面。

我们两个决定分头行动,我们的任务被分为了几个小部分,简单得说,一个是如何显示结果,一个是如何获取数据。以下是我们将任务的划分和预期及实际的耗时情况:

Untitled

 

       首先我们一起开始看代码,他注重关注silverlight代码部分关于图形界面的代码,找到关键切入点,以实现我们在界面进行处理的目的;而我,主要负责关注C#代码中关于控件的操控以及如何去获取数据部分。我们把任务分成几个部分,各自行动,然后每天晚餐时候,我们一起去吃饭,在饭桌前讨论我们最近的进展和发现,交换一下各自的意见,饭后回来两个人就一起把不能读懂的代码拿出来共同讨论,通过查MSDN和向同学请教等方式,共同学习。此处插入小图一张~

clip_image005

两人共同探讨学习中

 

       现在,任务完成了,当我回过头来想想,两个人一起工作其实与平时一个人完成一个任务还是有很大的不同的。首先,我想就个人的看法说说其优势。

       首先,两个人一起工作,至少,有个心理依靠。尤其对于两个不熟悉silverlight和C#的合作伙伴来说,刚刚看到Academic map的原始代码的时候,如果只有我一个人,我相信我的信心不会那么的足,但是,现在是两个人,我会觉得也许我不明白的地方队友会知道,我们可以一起讨论,也会相互鼓励。这样,其实信心要足一些。我清楚的记得,在我拿到那一堆代码之初,疑惑的问我的队友我们能否按时完成,他的一句“小伙,年轻没有什么不可以。不问结果,每天都能学到东西就值了!”让我无比的兴奋,那一刻,自己真跟打了鸡血一样。

      另外,我觉得两个人工作的另一个好处在于,两个人一起工作是一种鞭策,谁也不想因为自己的不努力而把对方拉下水,那么,在我们想懈怠的时候,就会有种无形的推力在自我推动着。

      还有,我觉得两个人一起工作,能够学到更多,有时候一个人完成一项任务,当你走入到一个死胡同或者瓶颈的时候,容易走入思维定势的怪圈。然而,有两个人,当你遇到麻烦的时候,你可以让另一个人来想想这个问题。这样,更加容易解决问题,而且还能学到别人在处理问题时的思维方式。

       此处插播一则小故事以作说明:

       当我们做颜色修改的时候,我们用一个在0到1之间的数去衡量机构的规模的大小,然后根据这个数去生成颜色。我们发现各机构的颜色中红色居多(也就是接近1的数太多),于是我们想要做下均衡,让各个颜色的数目尽量的均匀。然而,我站在信号处理的角度首先想到的就是在做图像均衡时候用的的直方图均衡算法。而他,作为一个数学背景的学生,他的第一想法就是做一个位于区间[0,1]的下凸函数f,经过映射,使接近1的数变成更小的数目达到均衡的目的。而这个算法实现的复杂度就比直方图均衡要容易,关键在于下凸函数的设计。最后,我们寻找了一个(ax-1)/(a-1) , (a>1) 这样一个函数。集思广益略见一斑。

      当然,两人结对编程也有一些其他方面的影响,我们需要适应彼此的编程风格,当我们在想法上有冲突的时候,需要商量,讨论,最后一方说服另一方或者找到一个折衷点。这样相对来说耗时要多但是个人觉得不能算浪费,因为学会说服一个人也是种不错技能。

       掰扯了这么多,我想,最后我得好好谢谢大家,感谢唐敖同学和夏睿同学的帮助,感谢邹老师能够给我们提供这么好的机会让我们有所锻炼,感谢国斌跟贝哥,在我们两个参加MSRA夏令营期间,鼓励我们俩从忙碌中survive,也很感激他们对我们的信任与支持。

       跟我的队友徐海峰短暂而愉快的合作过程中,我看到了他许多的优点。他是一个很积极进取的人,跟他的合作让我受到了他迎难而上的生活态度的感染,是他给了我不少的信心和鼓励,在纠结的时候,有他的开导,在迷惘的时候有他的鼓励。另外,他是个很善于思考的人。当面对一个问题的时候,他能很快的从数学的角度,考虑找到一个合适的解。还有,他是一个善于和人沟通和交流的人。如果能有下一次合作的机会,我很乐意和他合作,不过我更希望下一次合作的时候,你不会忙碌于丘成桐杯竞赛的面试,也不会要担心TOEFL的考试,也不用应付summer camp的各种活动,我希望我们能全力以赴,做出更好的成果。当然,我也希望给他提点小小的建议,同样这也是我自己需要加强的地方,那就是,对于C#和silverlight的了解需要继续加强。我想,不仅仅是这个项目,以后的团队项目都需要这两个方面的知识。当然,以你那好学进取的态度,我相信这个不是问题。

       期待下一次的合作,期待从你那学到更多……Cheer up, buddy!

转载于:https://www.cnblogs.com/OMG-Team/archive/2011/08/27/2155624.html

这篇关于高级软件工程pair project工作总结 By 何栋梁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/346859

相关文章

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb