存档

2012年5月 的存档

浅谈公司的规划运营管理之我见

2012年5月31日 1 条评论

作为公司的经营管理者,首先要为企业制定一个中长期的目标(为期三年左右)。这个目标决定了企业的方向,发展的节奏和每个时期运营管理的侧重点。此目标需具备以下几个特性:

第一:它必须要有挑战性。也就是说不需要努力就能顺势而为达成的结果,不能激发团队的斗志,挖掘团队的潜力,是种综合资源的浪费。

第二:它必须具备可实现性,也就是说该目标是大家通过一致努力有可能达到或达成的。因为看似完美而永远不可企及的目标没有以企业的现状作为基点,没有可操作性,对企业的发展毫无指导意义。

第三:它还要具备可量度性。意指该目标能用时间,能用各种数据来描述和考量。这样人人都清楚我们的目标是什么。完成度如何也有个清晰的标准,避免团队成员认知上的偏差导致方向上的偏离;

第四:它必须是企业的所有者和经营者的共识。因为核心层的重大分歧会在公司经营的许多实施环节被无限放大,严重降低公司的效率,背离大家最初勾画的美好愿景。

第五:目标的制定要讲究效率。因为一个制定的再完美的计划,当它依托的经济环境、政策背景、行业变迁等因素发生变化时,都会被修正,并导致组织架构、管理流程等一系列的调整。所以与其我们冥思苦想花费大量时间停下来制定完美计划,不如制定个相对稳定、比较实用、又有些前瞻性的行动纲领。把更多的精力放在实施过程,并灵活地随机修正和调整目标,不让企业的效率输在第一环节。

目标制定好后,接下来该考虑的是公司需要怎样的运营模式。也就是要着眼于企业的经营现状,结合经营者在短期内对公司的定位及公司近期的发展趋势来确定公司的架构。部门的设置要考虑的重点是公司的业务类型、产值规模、还有近期公司治理的侧重点。设置的基本思路是切忌生搬硬套,搞形式化。坚决撤掉那些不能准确描述职责、授权范围模糊、无具体事务可做的部门和职位,合并功能近似的部门,拆分那些方向已有分化要求的部门。不能想当然地脱离企业自身实际、脱离业务的基本特点来设立。所以重点的不是我们已有了什么样的职能部门,而是任何一件事一个状况的发生,管理者都能清楚的知道该由什么部门的什么人来负责处置。并且处置的结果如何,公司的回馈通道是顺畅的,讯息是真实及时的。故而公司架构的设置最重要的原则是实用。职位的设立也贵在精而不在多。并且每年都要根据企业的发展状况进行调整、合并和拆分。当然,若有大型业务出现时,还可以从不同的部门抽调人员来组成临时项目小组,分工司职。每个人都对部分的结果负责,且一个人同时可以在不同的任务小组分担相似的任务。这样不但在公司日常事务上做到人人各司其职,事事有人执行监管,避免重叠浪费。而且在业务推动过程中又能清晰的体现出不同部门不同人员对该项目的负责部分。如此,不但提高了人员的使用率,提升了公司整体效率,同时也为管理者提供了人员考核、奖惩的部分依据。

基本框架搭建起来后,下一环节要考虑的是我们要用什么样的人来实现企业的目标?这些人应该具备何种性格特点、综合素质、专业技能和培养潜质?人才的选拔来源和渠道是否够广泛?我们参与选拔的人员是否提前跟经营者就选拔条件达成共识?该人员是否具备筛选鉴别人才的眼光?那么我们需要对每一个岗位有准确的职位描述:包括职责范围、技能要求、职场经验等。这个准备过程又一次全面考量了我们在公司架构、具体职位设置上有没有遗漏和重叠的部分。在人员的选拔使用上,我认为也有如下几点基本原则:

第一:在重要的岗位乃至所有的岗位上都要做到任人唯贤,以该职位的客观要求来进行选择。在满足了基本的道德品质和价值观要求后,允许性格的多样性和做事方法多样性存在。这样避免因为经营者的性格偏好招收同一类型的人才。须知相同的性格必有相同的盲点,不利于企业的均衡发展。其实企业的发展高度最开始是成形于核心领导人的思路和思维模式中的,其次才是把思维成果执行和变现的问题。思路的前瞻性决定企业发展的高度,团队的综合作战力限制了企业发展的速度。所以任人唯贤的思路应该贯彻在企业经营的每一个时期。

第二:企业所有者切忌因为过于仁慈或过于自负把所有的风险、责任、压力一肩挑。不让适合的人参与协作分担,不懂得授权,不懂得阶梯式地培养人才,没有真正把市场竞争的残酷性部分地引入公司,搞什么“世外桃源”。这样部分员工因危机感的缺乏和忽略了自我能力的主动提升,不但在当时当刻降低了公司的整体战斗力,而且未来的某个时间段内,企业会呈现出人才断裂带,随之带来业务上管理上的青黄不接。而且最终,这些被过度呵护的人会在真实的竞争环境中丧失生存和竞争能力。所以企业要有勇气让大家来共同面对和分担经营中的压力和风险,也要有胸襟敢于培养和授权合适的人参与公司的决策和经营。

第三:切忌用同一标准来要求和使用所有的员工。因为我们本来就是在用若干个不完美的人,通过合理安排、相互协作共同实现一个相对完美的目标。不能以对自己的要求标准来衡量他人。我们应理性的根据他所在的职位要求,根据每个人的年龄、经历、背景、自我定位、价值观、可持续成长性等因素来区别实施领导。用人所长,非原则性问题上也要能容人所短。更多指正而不是指责,更多就事论事而非上升到人格层面的打击。须知肯定和鼓励永远是所有人努力奋进的重要推动力。公司员工的绩效考核标准也要客观公正,可被描述和检测,并且当事人也要清晰明白。人员的调整要稳步渐变,要沟通到位,不能引发公司的动荡。公司要逐步完善落实对于员工综合能力的辅导和培养,建立内部的员工成长通道。因为企业发展壮大的基础之一是单兵作战能力的增强,团队责任意识协作意识的增强,这是个长期的课题。

第四:经营者也要善用好自己。掌握好事务性工作参与的分寸和度,通晓授权协作的范围、监督的方式。在领导公司过程中,经营者更多的工作是体现在对内对外和各种层面的人就不同的问题进行沟通交流。那么永远要注意,最重要的是懂得倾听,善于观察,能够从大量繁复的信息中筛选到有用的讯息作为决策依据。一定要保持一个对人对事的敏感度。因为任何状况的发生,结果的出现在过程中都是有预兆的,它是渐变过程,而非突变。那么我们能否预测趋势、发现趋势、调整趋势从而控制趋势是非常考验经营者功力的。故而经营者要注重自身综合素质的提升。有选择性的多看书,多结交有识之士,多进行交流和思想碰撞,多参与适合的外部培训,并随时调整好自己的心态和状态,保证自己有鉴别的眼光。也要有足够的空间,来接收消化新知识并转化成新的能力,做到既不盲从,也不流于自以为是。

接下来要考虑的是我们要怎样实现既定的业务目标。它大致包括几个方面:我们的业务来源现状,各种类型业务的比重,工程实施过程的监管,财务目标的达成度,客户满意度的评价体系的建立健全。需要分别进行分析。例如:就业务来源而言,公司在行业内的辨识度高不高,是否具独特性?我们业务的核心竞争力体现在哪些方面?我们有没有足够分量的样板工程或核心技术?现在已有的业务量所占目标业务量的比重怎样?它是由何种行业或部门带来的?不确定性强不强?业务的延伸性有还有多长?我们与这些行业、部门的关系深度如何?由谁在维护这些关系?维护方式、代价和维护频率如何?因为政策变化,部门变迁,主管领导的去留,我们既有业务的保证度如何?当上述任一情况发生时,我们有没有应对策略和相应的实施人?企业有没有专门的部门和人员来拓展新的行业,推广新的业务类型?多长时间内新旧业务能共同保障业务量的动态平衡甚至增长?为此我们预备付出怎样的成本和综合代价?这些问题的答案会让经营者合理安排资源和精力,以推动业务的发展。而工程实施过程中的监督管理大致也要考虑如下一些问题:公司的综合能力值与该业务实施的要求是否匹配?若有欠缺我们应该采取何种方式来弥补?例如,解决方案、专业施工能力欠缺我们是否需要借用外脑或施工部分外包?如果说外包,我们对于合作的施工队伍有没有更多样的选择性?选择标准有哪些?他们的水平在同行业中相比究竟如何?他们的工作责任心是否满足我们对客户的承诺?我们与之签订的合作协议有没有需要补充和重新界定的部分?他们的质量价格比有没有竞争力?因为这也部分决定了我公司的利润率和客户满意度。在他们实施的过程中我方人员的监督协调有效水平如何?因为在企业中,包括财务、业务、工程实施的所有环节,执行力度和监督力度一定是并重的。还有因为本行业有大量的维护维修工作,一定要建立一个客户满意度评价流程和系统。这些直观的数据化的回馈,确保经营者得到的反馈信息是真实的及时的,它也是公司的策略调整的重要依据之一。在这一过程,财务部门的穿插工作也很重要。它既要了解和熟悉对方的支付流程,知道何时以何种方式催收账款,也要清楚合同条款中对我方的要求:即施工进度和质量达成度是否具备收款条件?这要求我们各个部门的信息共享是畅通的。并且管理者还能从财务数据中看到我们的采购成本、付款方式是否合理?施工进度、施工人员的配置是否合理?企业现金流向是否合理和安全?各部门是否在授权范围内合理开销,局部成本还有没有降低的可能性?另外客户满意度评价系统的建立,还可以减少我们与客户沟通的随意性,把它变成常态和一贯性,以提升我们判断未来业务延伸性的准确度。

此外,新行业新业务的拓展是个需要慎重对待的问题。它绝不是公司的主线,但一定是对未来发展非常重要的部分。所以经营者要多关心行业动态和经济发展趋势,在拓展过程中要考虑如何降低进入成本和投入产出比值合理性的问题,应在决策层面多讨论多商量。

另外,公司的顺畅经营要在尽可能多的方面和环节设置预警系统,设置监督保障体系。例如:就财务部分而言,公司的年度、季度预算在分部分段执行时,当资金的使用金额接近上限时,要分析是预算的制度与实际支出偏差较大,还是实施过程失控。这些都要对应的从经营行为上进行调整。就员工的定期考核数据来看,如果大多数人的成绩较差,我们要看是目标要求与员工的普遍素质脱节,还是公司在培训、辅导员工成长的部分力度太差,需待加强。如果在一个短时期内,员工的离职率超过一定比例,我们要分析的是由于公司的氛围、文化不被认同,还是薪资待遇在同行业中失去竞争力,不足的吸引和留住优秀人才,亦或是公司的人才发展上升通道不畅通,都需要对症下药。还有一些事件的发生也是一种预警,例如合作条款的不恰当让我方蒙受经济损失,因为档案管理的漏洞、商业行为的不规范性,让我们没有足够的凭据去维护自身的正当权益,我们需考虑如下一些问题:公司有没有各个方面的标准合同?或是有具备相当专业素质的人可以对别人提供的合同进行审核和评价,并提出修改意见?我们所有档案是否都有备份?档案是否有不同级别的保密权限和调用规定?调用记录是否完整?这些能让我们在任何情况下都得到具体、完整、系统的资料来作为参考,作出决策。大多数公司注重钱、物、人的管理,比较忽略档案管理的重要性,也没有什么保密意识和保密制度,这是公司系统化运营中需要一贯性完整执行的部分。另外公司的所有事务、所有项目实施、大大小小的目标达成也必须有同步完善的监督体系,因为经营者永远只能部分参与不同层面的企业行为,但又必须知晓公司的每个事件进展的真实程度。如果了解的程度不够,认知上有盲区,势必导致决策上的偏差。

此外,经营者一定要在公司建立相应的决策制度。也就是指什么样的问题应该在什么样的层面进行讨论决定?然后需知会哪些层面的员工。这点至关重要。因为对公司来说,现在存在的问题是什么?解决问题的先后顺序、轻重缓急的原则是什么?我们需要花什么样的代价来解决问题?结果好坏有没有评判标准?公司有没有业绩考核机制?有没有自动淘汰机制?这些重要的问题不是人人都可以并有能力参与讨论的。所以,相应的会议制度一定要有不同功效的会议类型描述,参与的人员、参会目的、会议召开的形式都应作相应的规定和要求。还有账务处理,税务管理,法律事物的处理就不在此一一论述了。

总之,企业的治理就像个人的修炼一样,是个永无止境的优化过程。企业经营者必须在务实和务虚上结合得非常恰当,在对内对外人际关系的协调和平衡上也应具备相当的能力。


在Android应用中调用RESTful服务

2012年5月14日 没有评论

REST是一个被广泛采用的架构模式,尤其在API、Web Services、云计算流行的大环境下,所有主流的互联网厂商都提供了其服务的REST接口,用户可采用JSON、XML格式使用HTTP进行方法调用和数据传输。

RESTful已成为主流客户-服务器编程模式,在手机端与后端系统的交互中也被普遍采用。

现在我们就来分析下Android环境下的RESTful编程模式和一般方法。

错误的实现方式

这个做法会导致:

  • 操作系统shutdown这个进程;
  • 数据不能持久化保存。

而正确处理REST方法通常有三种设计模式:

  • 使用 Service API
  • 使用 ContentProvider API
  • 使用 ContentProvider API 和 SyncAdapter

其中,Service Helper的作用是:

以单体(Singleton)的方式暴露一个简单的异步API给用户接口使用。

• 准备和发送服务请求

– 检测方法是否已经被挂起

– 创建请求意图

– 添加操作类型和一个唯一的请求id号

– 添加方法的特殊属性值

– 添加binder回调

– 调用startService(意图)

– 返回请求id号

• 处理从服务返回的回调

– 将回调分发给用户接口监听器

实战一下:

An attempt at implementing a RESTful Android application 开始RESTful Android应用的尝试

git clone https://github.com/jeremyhaberman/restful-android.git

在 eclipse > file > import >  Existing Projects into Workspace

Debug As Android Application,这里使用了Simple OAuth library for Java第三方库

如通过Twitter API使用OAuth验证

import com.jeremyhaberman.restfulandroid.rest.Request;

// RESTful Android Twitter app settings

private static final String TWITTER_API_KEY = “ssdfiwKoedslVjUsngtow”;

private static final String TWITTER_API_SECRET = “sdfsIkkmIKLFDvzaLdnBeLAVkwPFUxxZ9Ulf8fkY”;

private static final String TWITTER_CALLBACK_URL = “restful-android://callback”;

总结:

  • 不要在Activities里实现REST方法;
  • 从一个服务中启动长时间运行的操作;
  • 持久要早、要经常(Persist early & persist often)
  • 最大限度的减少网络使用(Minimize the network usage);
  • 是不是在关键时刻使用同步适配器执行后台操作(Use a sync adapter to execute background operations which are not time critical),使用Android Cloud to Device Messaging。

参考:


分类: Java, Mobile & Embedded 标签: ,

试用ArcGIS Runtime SDK for iOS

2012年5月9日 没有评论

首先下载 ArcGIS Runtime SDK for iOS ,需注册ArcGIS账号。

安装后的路径信息:

The ArcGIS Runtime SDK for iOS has successfully installed content into the following folders located in your profile (~/Library):

~/Library/SDKs/ArcGIS/ArcGIS.framework

~/Library/SDKs/ArcGIS/Samples

~/Library/Developer/Shared/Documentation/DocSets

~/Library/Application Support/AGSiOSSDK/

To uninstall the API and remove all content from your computer run uninstallAGSiOSSDK at:

~/Library/Application Support/AGSiOSSDK

打开Xcode,你会发现已有ArcGIS项目的向导。

或下载ArcGIS for iOS Developer Samples直接调试已有的iOS例子,加速你对这块知识的学习。

这是GPS功能演示,它能显示设备在地图上的位置。


分类: Mobile & Embedded 标签: ,

【Android】制作appwidget桌面相册幻灯片

2012年5月2日 没有评论

最近在学习android的appwidget,看了一些文章,决定做一个相册幻灯片来练手,下面写写过程来给大家共享:

  1. 在项目的res/xml/下建立一个appwidget_info.xml文件,内容如下:
    <?xml version=”1.0″ encoding=”utf-8″?>
    <appwidget-provider xmlns:android=”http://schemas.android.com/apk/res/android”
    android:initialLayout
    =”@layout/appwidget”
    android:minHeight
    =”800dp”
    android:minWidth
    =”240dp”
    android:updatePeriodMillis
    =”300000″ >

    </appwidget-provider>

    在这里定义appwidget的基本信息,宽度,高度,以及刷新的频率等

  2. 在layout/下建立appwidget的layout文件
    <?xml version=”1.0″ encoding=”utf-8″?>
    <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
    android:layout_width
    =”match_parent”
    android:layout_height
    =”match_parent”
    android:gravity
    =”center”
    android:orientation
    =”vertical”
    android:padding
    =”20dp” >

    <Button
    android:id=”@+id/button1″
    android:layout_width
    =”120dp”
    android:layout_height
    =”wrap_content”
    android:layout_gravity
    =”center_horizontal”
    android:text
    =”播放图片” />

    <ImageView
    android:id=”@+id/imageView1″
    android:layout_width
    =”fill_parent”
    android:layout_height
    =”fill_parent”
    android:background
    =”#FFFF”
    android:padding
    =”2dp”
    android:scaleType
    =”fitXY”
    android:src
    =”@drawable/p1″ />

    </LinearLayout>

    这个layout比较简单,里面仅仅包含一个button和一个imageview,设置 android:padding=”2dp”来让图片有一个简单的边框样式

  3. 建立MyAppWidgetProvider继承AppWidgetProvider,重写父类的生命周期函数,这里的原理google一下有很多,就不多写了。首先重写onUpdate,这个方法在appwidget第一次加载时会被调用,在这里我们主要使用ContentResolver查询出本机所有图片;接下来新建一个PendingIntent将图片路径的集合封装到其中,最后将pendingIntent设置给button
    Intent intent = new Intent(“com.jaredluo.appwidget.change”);
    intent.putExtra(
    “path”, pathStrArr);for (int j = 0; j < appWidgetIds.length; j++由于appwidget与主程序处于不同的进程中,所以通讯都需要依靠PendingIntent。

    ) {
    //RemoteView是appwidget中很重要的一个类,基本上对appwidget中
    //所有控件的操作都要基于RemoteView来操作

    RemoteViews remoteView
    = new RemoteViews(context.getPackageName(),
    R.layout.appwidget);
    remoteView.setOnClickPendingIntent(R.id.button1, pIntent);
    appWidgetManager.updateAppWidget(appWidgetIds[j], remoteView);
    remoteView
    = null;
    }

    //设置pending,发送广播,注意设置
    //PendingIntent.FLAG_UPDATE_CURRENT
    //否则onRecieve函数中接收不到intent中的数据
    PendingIntent pIntent = PendingIntent.getBroadcast(context, 0

    , intent,PendingIntent.FLAG_UPDATE_CURRENT);
  4. 接下来在onReceive中接收我们刚才设置给button的广播,首先新开一个线程控制图片的播放,接下来在Handler中为ImageView设置图片源
    final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidget);
    String path
    = paths[msg.getData().getInt(“i”)];
    remoteViews.setImageViewBitmap(R.id.imageView1,BitmapUtil.getBitmap(path,
    200, 200));
    appWidgetManager.updateAppWidget(componentName,remoteViews);

    这里需要注意一个问题,我在把图片设置给appwidget时,跑不了几张图片就会出现!!! FAILED BINDER TRANSACTION !!!这个错误,最先以为是图片太大造成的,结果压缩图片也无果;后面在网上搜索一番发现:Binder data size limit is 512K 由于传输图片到appwidget进程中的Binder最大数据量是512k,并且RemoteView也不会每次清理,所以如果每次都使用同一个RemoteView进行传输会因为溢出而报错。最后每次都新建一个RemoteView问题才解决掉。

看看最后的效果,点击播放图片按钮,图片就开始更替:

代码还有很多问题和不完善,接下来有空会继续修改。


分类: Java, Mobile & Embedded 标签: