if (!$mask) { file_put_contents($pathname, $message . "\n", FILE_APPEND);
file_put_contents - [internal], line ??
Cake\Log\Engine\FileLog::log() - CORE/src/Log/Engine/FileLog.php, line 140
Cake\Log\Log::write() - CORE/src/Log/Log.php, line 392
Cake\Log\Log::warning() - CORE/src/Log/Log.php, line 477
DebugKit\ToolbarService::isSuspiciouslyProduction() - ROOT/vendor/cakephp/debug_kit/src/ToolbarService.php, line 169
DebugKit\ToolbarService::isEnabled() - ROOT/vendor/cakephp/debug_kit/src/ToolbarService.php, line 105
DebugKit\Plugin::bootstrap() - ROOT/vendor/cakephp/debug_kit/src/Plugin.php, line 48
Cake\Http\BaseApplication::pluginBootstrap() - CORE/src/Http/BaseApplication.php, line 182
Cake\Http\Server::bootstrap() - CORE/src/Http/Server.php, line 111
Cake\Http\Server::run() - CORE/src/Http/Server.php, line 79
[main] - ROOT/webroot/index.php, line 40
Notice: file_put_contents() [function.file-put-contents]: Write of 1108 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): SplFileObject::fwrite() [<a href='https://secure.php.net/splfileobject.fwrite'>splfileobject.fwrite</a>]: Write of 5131 bytes failed with errno=28 No space left on device [CORE/src/Cache/Engine/FileEngine.php, line 141]
SplFileObject::fwrite() - [internal], line ??
Cake\Cache\Engine\FileEngine::set() - CORE/src/Cache/Engine/FileEngine.php, line 141
Cake\Database\Schema\CachedCollection::describe() - CORE/src/Database/Schema/CachedCollection.php, line 85
Cake\ORM\Table::getSchema() - CORE/src/ORM/Table.php, line 513
Cake\ORM\Query::addDefaultTypes() - CORE/src/ORM/Query.php, line 290
Cake\ORM\Query::__construct() - CORE/src/ORM/Query.php, line 184
Cake\ORM\Table::query() - CORE/src/ORM/Table.php, line 1702
Cake\ORM\Table::find() - CORE/src/ORM/Table.php, line 1263
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6437
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3226
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Notice: file_put_contents() [function.file-put-contents]: Write of 3152 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): SplFileObject::fwrite() [<a href='https://secure.php.net/splfileobject.fwrite'>splfileobject.fwrite</a>]: Write of 5437 bytes failed with errno=28 No space left on device [CORE/src/Cache/Engine/FileEngine.php, line 141]
SplFileObject::fwrite() - [internal], line ??
Cake\Cache\Engine\FileEngine::set() - CORE/src/Cache/Engine/FileEngine.php, line 141
Cake\Database\Schema\CachedCollection::describe() - CORE/src/Database/Schema/CachedCollection.php, line 85
Cake\ORM\Table::getSchema() - CORE/src/ORM/Table.php, line 513
Cake\ORM\Query::addDefaultTypes() - CORE/src/ORM/Query.php, line 290
Cake\ORM\Query::__construct() - CORE/src/ORM/Query.php, line 184
Cake\ORM\Table::query() - CORE/src/ORM/Table.php, line 1702
Cake\ORM\Table::find() - CORE/src/ORM/Table.php, line 1263
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6426
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3436
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Notice: file_put_contents() [function.file-put-contents]: Write of 3152 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): SplFileObject::fwrite() [<a href='https://secure.php.net/splfileobject.fwrite'>splfileobject.fwrite</a>]: Write of 822 bytes failed with errno=28 No space left on device [CORE/src/Cache/Engine/FileEngine.php, line 141]
SplFileObject::fwrite() - [internal], line ??
Cake\Cache\Engine\FileEngine::set() - CORE/src/Cache/Engine/FileEngine.php, line 141
Cake\Database\Schema\CachedCollection::describe() - CORE/src/Database/Schema/CachedCollection.php, line 85
Cake\ORM\Table::getSchema() - CORE/src/ORM/Table.php, line 513
Cake\ORM\Query::addDefaultTypes() - CORE/src/ORM/Query.php, line 290
Cake\ORM\Query::__construct() - CORE/src/ORM/Query.php, line 184
Cake\ORM\Table::query() - CORE/src/ORM/Table.php, line 1702
Cake\ORM\Table::find() - CORE/src/ORM/Table.php, line 1263
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6539
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3436
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Notice: file_put_contents() [function.file-put-contents]: Write of 3151 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): SplFileObject::fwrite() [<a href='https://secure.php.net/splfileobject.fwrite'>splfileobject.fwrite</a>]: Write of 121 bytes failed with errno=28 No space left on device [CORE/src/Cache/Engine/FileEngine.php, line 141]
SplFileObject::fwrite() - [internal], line ??
Cake\Cache\Engine\FileEngine::set() - CORE/src/Cache/Engine/FileEngine.php, line 141
Cake\Cache\Cache::write() - CORE/src/Cache/Cache.php, line 266
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6766
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3634
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Notice: file_put_contents() [function.file-put-contents]: Write of 2791 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Warning (512): long cache was unable to write '381c134966c9a226f59731e5c2618434' to Cake\Cache\Engine\FileEngine cache [CORE/src/Cache/Cache.php, line 275]
Cake\Cache\Cache::write() - CORE/src/Cache/Cache.php, line 275
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6766
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3634
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Http\Middleware\BodyParserMiddleware::process() - CORE/src/Http/Middleware/BodyParserMiddleware.php, line 157
Notice: file_put_contents() [function.file-put-contents]: Write of 2586 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): SplFileObject::fwrite() [<a href='https://secure.php.net/splfileobject.fwrite'>splfileobject.fwrite</a>]: Write of 118 bytes failed with errno=28 No space left on device [CORE/src/Cache/Engine/FileEngine.php, line 141]
SplFileObject::fwrite() - [internal], line ??
Cake\Cache\Engine\FileEngine::set() - CORE/src/Cache/Engine/FileEngine.php, line 141
Cake\Cache\Cache::write() - CORE/src/Cache/Cache.php, line 266
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6766
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3663
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Notice: file_put_contents() [function.file-put-contents]: Write of 2791 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Warning (512): long cache was unable to write '58483a34e77dfec2ef1f32916318b327' to Cake\Cache\Engine\FileEngine cache [CORE/src/Cache/Cache.php, line 275]
Cake\Cache\Cache::write() - CORE/src/Cache/Cache.php, line 275
App\Controller\NewsController::action_() - APP/Controller/NewsController.php, line 6766
App\Controller\NewsController::get_data() - APP/Controller/NewsController.php, line 5701
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5625
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3663
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Http\Middleware\BodyParserMiddleware::process() - CORE/src/Http/Middleware/BodyParserMiddleware.php, line 157
Notice: file_put_contents() [function.file-put-contents]: Write of 2586 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): unserialize() [<a href='https://secure.php.net/function.unserialize'>function.unserialize</a>]: Error at offset 4080 of 4085 bytes [APP/Controller/NewsController.php, line 5571]
unserialize - [internal], line ??
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5571
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3698
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Http\Middleware\BodyParserMiddleware::process() - CORE/src/Http/Middleware/BodyParserMiddleware.php, line 157
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Routing\Middleware\RoutingMiddleware::process() - CORE/src/Routing/Middleware/RoutingMiddleware.php, line 161
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Notice: file_put_contents() [function.file-put-contents]: Write of 2395 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): unserialize() [<a href='https://secure.php.net/function.unserialize'>function.unserialize</a>]: Error at offset 4076 of 4085 bytes [APP/Controller/NewsController.php, line 5571]
unserialize - [internal], line ??
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5571
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::article_show() - APP/Controller/NewsController.php, line 4290
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3822
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Http\Middleware\BodyParserMiddleware::process() - CORE/src/Http/Middleware/BodyParserMiddleware.php, line 157
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Routing\Middleware\RoutingMiddleware::process() - CORE/src/Routing/Middleware/RoutingMiddleware.php, line 161
Notice: file_put_contents() [function.file-put-contents]: Write of 2488 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140
Notice (8): unserialize() [<a href='https://secure.php.net/function.unserialize'>function.unserialize</a>]: Error at offset 4076 of 4085 bytes [APP/Controller/NewsController.php, line 5571]
unserialize - [internal], line ??
App\Controller\NewsController::action_cache() - APP/Controller/NewsController.php, line 5571
App\Controller\NewsController::cache_action() - APP/Controller/NewsController.php, line 5281
App\Controller\NewsController::article_show() - APP/Controller/NewsController.php, line 4310
App\Controller\NewsController::view() - APP/Controller/NewsController.php, line 3822
Cake\Controller\Controller::invokeAction() - CORE/src/Controller/Controller.php, line 539
Cake\Controller\ControllerFactory::handle() - CORE/src/Controller/ControllerFactory.php, line 140
Cake\Controller\ControllerFactory::invoke() - CORE/src/Controller/ControllerFactory.php, line 115
Cake\Http\BaseApplication::handle() - CORE/src/Http/BaseApplication.php, line 317
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 77
Cake\Http\Middleware\CsrfProtectionMiddleware::process() - CORE/src/Http/Middleware/CsrfProtectionMiddleware.php, line 164
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\I18n\Middleware\LocaleSelectorMiddleware::process() - CORE/src/I18n/Middleware/LocaleSelectorMiddleware.php, line 61
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Http\Middleware\BodyParserMiddleware::process() - CORE/src/Http/Middleware/BodyParserMiddleware.php, line 157
Cake\Http\Runner::handle() - CORE/src/Http/Runner.php, line 73
Cake\Routing\Middleware\RoutingMiddleware::process() - CORE/src/Routing/Middleware/RoutingMiddleware.php, line 161
Notice: file_put_contents() [function.file-put-contents]: Write of 2488 bytes failed with errno=28 No space left on device in /www/wwwroot/www.adminso.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 140 和传统IT的沦落 IBM - 站长搜索
传统 IT 厂商沦落已经成为一种趋势。不仅仅是在中国去 IOE 的大背景下,在全球范围内,这些曾经盛极一时的 IT 大鳄也在衰落
传统IT 厂商沦落已经成为一种趋势。不仅仅是在中国去 IOE 的大背景下,在全球范围内,这些曾经盛极一时的 IT 大鳄也在衰落。作为一个在 IBM 服务了将近 14年 的老员工,我想浅谈一下 IBM 以及整个传统 IT 行业的沦落。
很多人把 IBM 的沦落归罪于 Sam Palmisano。在著名的 Luis Gerstner 激流勇退后,是 SAM 为了取悦华尔街,而采用了不提高销售额而提高毛利率的方式运营公司,进而疯狂的压缩成本、降低研发费用,导致 IBM 近些年创新产品不足。虽然 SAM 在任的时候风光无限,借着 HP 的昏招连连而使 IBM 在传统大型计算设备制造商中独占鳌头,但其后果是整个 IBM 沉浸在泡沫式的盲目乐观中。在卸任之前,SAM 又疯狂的提出了所谓的 2015 计划,导致 IBM 延续那个已经导致其创新能力不足的战略。
这一切当然是 SAM 的问题。而我们无法回避的是大型传统 IT 设备制造商现在的日子都不好过。CISCO、HP、HDS、EMC,连这些年光彩照人的 VMWare 也逐渐感到危机。这就不是 Sam 一个人的问题了,而是一个行业的问题。这个行业就是传统企业级 IT 系统产品制造和服务提供商。
如果是一个行业的问题,我们首先要分析的就是这个行业的业务模式、赢利模式。一 IBM 为例,因为 IBM 在这方面可能算是种类最全,综合性最好的一家。IBM 的产品分为软件、硬件、服务。
IBM 的业务种类
IBM 的软件主要是中间件类软件,通俗的讲就是构建一个业务系统所必不可少的支撑类软件,包括数据库及信息管理类软件(Information Management),应用服务器中间件及软件集成类软件(Application &Integration Middleware),软件开发类软件(Rational),协作类软件(Loutus),和系统管理软件(Tivoli)。(这里主要讨论 IBM 沉沦的过程,所以按照 IBM 沉沦之前的组织结构划分)
IBM 的硬件主要包括高端企业级服务器,企业级存储两大类。
IBM 的服务分为两个部门:科技服务部和咨询服务部。科技服务部主要的业务模式为:1、保修:就是所有 IBM 设备的保修,以及基于保修的增值服务;2、系统集成服务;3、IT 基础架构外包。
咨询服务部通俗的说就是搞软件开发的,同时由于其经常涉及一些企业财务、ERP、供应链、客户关系管理等大型企业软件的咨询设计与开发,必不可少的要涉及一些企业战略的咨询,管理咨询,毕竟这些软件的逻辑的相当大部分是基于企业战略和管理策略的。而作为其根基的软件开发大体上分为两大部分:一部分是我们通常意义上的软件开发。就是人家提需求 IBM GBS 帮助代码化。这是比较基础的软件开发。另外一大部分就是商业套件的定制化开发,通常是 SAP、Oracle 等企业商业套件软件生产商的 ERP、SRM、CRM、SCM 等软件的定制。
IBM 还有一些其它的比较小的业务,如 IGF 的金融服务,实验室服务部的基于 IBM 软件的实施服务,研究院的一些创新资产的市场化等等。这些都不构成主流。
IBM 的业务模式
无论是 IBM 的硬件、软件还是服务类业务,都属于相对复杂的业务。有些人可能觉得不明白,举个例子说:“一个保修有什么复杂的?不就是报个续保的价格,客户买完后如果设备坏了再更换一下吗?” 有如此观点的人是不熟悉整个企业级市场。这样说吧:IBM 的所有销售,如果没有工程师的详细计算的话,根本就无法报出价格来,而且不夸张的说连一个固定已知设备的保修价格都报不出来。这就是企业级设备本身的复杂性造成的,这和消费级市场上直接网站在线自动报价的差距是非常大的。
基于这样的一个产品和服务的特点,IBM 以及所有企业级 IT 设备制造商的销售模式很复杂。而这样复杂的销售模式需要一个庞大的销售团队支撑,包括销售和售前工程师队伍,还要借助于渠道也就是代理商的帮助来完成整个销售环节的工作。其结果是,这么复杂而庞大的队伍势必需要庞大的利润来支撑。所以造成了耸人听闻的折扣率:一个标价 1000 万的设备可能 50 万就从 IBM 出货了。
首先看一下硬件:IBM 的大型机、Power 服务器、高端存储无疑是为企业级计算架构服务的;IBM 已经把 X86 服务器卖给了联想;所以 IBM 硬件已经不再有适合当前主流计算发展需求的产品了。有人可能会问:既然这样,IBM 把 X86 服务器卖给联想是不是一个昏招呢?不是,云计算市场虽然是主流,但并不意味着 X86 服务器会产生高利润。IBM 整个营销体系是围绕着企业级销售方式建设的,这个营销体系对于企业级计算需求的销售是很有效的,但对于低端设备来说就过于复杂了,反而会给 X86 服务器带来沉重的管理开销。所以卖掉 X86 是正确的决定,这也符合 IBM 一直以来追求高利润产品和服务的战略。
软件部门是这些年IBM 的主要利润增长点。但我们仔细分析一下 IBM 的软件,可以看到除了大型机软件之外,所有的其它软件都可以在开源市场上找到可替代免费产品。这就意味着那些非主流业务有可能会逐渐抛弃 IBM 的软件。
IBM 的软硬件特点是做应用的支撑架构软硬件。也就是说不做具体应用,也就意味着无法控制用户的最终业务需求,随时可以被替换掉。这是一个好的策略,避免了和 SAP、Oracle ERP 领域的竞争,把业务系统的一个或几个环节做精。但问题是当这个环节的市场需求整体下滑的时候要有足够的研发储备来应对新的需求,而不是在已经下滑的需求上敲骨吸髓。在研发储备上 IBM 这些年作的太差了。
科技服务部的几大业务:保修业务随着软硬件销售的下降自然也无法景气起来;外包业务主要应对相对比较稳定的大型企业核心业务。企业 IT 中变化比较多的非核心业务都无法谈判,因为无法定价。科技服务部的集成业务都是面对比较复杂的企业级系统制定的解决方案。这部分也在减少。
IBM 不缺乏精英,这些问题高级领导们早就认识到了,而且 IBM 早在 2007年 就已经开始了云计算的布局。那为什么还是没有跟上云计算的节奏呢?和每一个帝国的衰落一样,既得利益者的存在和苟延残喘是衰落的根源。IBM 的高级管理层已经被这些既得利益者霸占。他们只有在原有的商业模式下才能够继续存活并赚取利润。他们嘴上冠冕堂皇的拥抱新业务,而实际操作上却根本无法割舍旧有的运行模式。华尔街在这个过程中也扮演了非常恶劣的角色。财务分析师是冷酷的,他们只看报表。于是 IBM 这些没有魄力高管们只能在传统业务上敲骨吸髓,因为新业务的发展不是一蹴而就的,无法立即满足华尔街的胃口。同时这些人也寄希望于能够熬过他们利益兑现的日子,然后拍拍屁股走人。所以,和每一个王朝的衰落一样,大家在英明的决策中走向死亡。
IBM 是如何从 80年 代末 90年 代初那次危机中走出来的?是否有可以借鉴的思路呢?我们回到 80年 代末。在那一次危机中,日立、西门子、NCR、王安……所有的大型机公司倒闭殆尽,IBM 硕果仅存。那一次危机的实质是大型机危机,和这一次危机并没有什么本质的不同。在那个时代,大型机是用来运行企业最核心的业务的,而小型机是用来运行一些非核心业务的。随着小型机的发展,和适应大型机的核心业务的向小型机转移,大型机市场出现了雪崩式的下滑,而所有这些大型机系统制造商都没有准备好接受这一市场需求的转变。为什么最后 IBM 能硕果仅存呢?因为来了一个 Luis Gerstner,他完全不懂 IT,于是他只能按照市场需求办事,他主动拥抱了新的市场需求,IBM AS400/RS6000 及其配套软件的蓬勃发展挽救了 IBM。
Luis Gerstner 作了几件重要的事情:1、卖房子卖地卖名画,改善了一点(只能说一点)IBM 的现金流;2、大规模改组 IBM,软件部门独立,服务部门独立;3、加大 AS400/RS6000 小型机的扶持力度。
这第一条和第三条是好理解的,第二条有点不容量理解。为什么软件部独立和服务部独立会改善 IBM 的经营状况?了解 IBM 历史的人知道,在那个时代,IBM 软件都是依附于 IBM 硬件的软件,主要就是 DB2、CICS、MQ、计算机语言编译器(C、COBOL、RPG)等等。而硬件又是以大型机为主,所以所有软件都是面向 IBM 大型机的,没有任何自己发展的思路。独立以后的软件部有了自己的发展战略,收购了 encina 开发了小型机上的 CICS,还有小型机上的 DB2、MQ 的发展,集成中间件的发展,收购了 Lotus、Tivoli 等软件公司发展企业协作软件和系统管理软件,还有后来收购的 Rational。这些战略使 IBM 软件包成为 IBM 今天最赚钱的部门。服务部门原来也是依附于大型机的保修部门,没有任何自己的话语权。独立之后的服务部在增值业务上有了很好的发展,逐渐发展出了外包服务,集成业务。咨询服务部独立之后开始了企业核心业务 ERP 的咨询实施服务,目前是全球 ERP 类软件实施的前三甲。其实道理很简单,当一个人或部门依附于其他人或部门的时候,他的创造力是无法被发挥出来的。独立之后的软件部和服务部都没有原有的包袱,适应市场的发展成为了市场上的赢家。
IBM 现任 CEO 叫 Ginni Rometty 有没有 Luis Gerstner 的魄力和能力[狂澜呢?这个问题只能交给时间来回答。就我看到的现实情况简单说一下。
Luis Gerstner 上任的时候有个比现在的 Ginni 有利的情况,就是 1993年 的 IBM 已经到了垂死的边缘,整个华尔街都希望 Luis 作的事是将 IBM 分拆,IBM 已经到了不能再坏的地步。这个时候接手 IBM,Luis Gerstner 怎么折腾都行了,而且也没有一帮既得利益者阻挡他的革新举措,已经没有利益了。而 Ginni 面临的情况是不一样的,她接手的是 Sam 留给她的辉煌战绩和 2015 计划,身边还有一堆既得利益者,包括一些 IBM 的高管和华尔街的财阀们。Ginni 即便是有创新的想法也无法有效的施展拳脚。总的来说 Ginni 上任以来的一些举措是不错的:卖掉 X86 服务器以及低端硬件业务;卖掉半导体业务;大举进军云计算,包括收购 SoftLayer,成立独立的云计算部门;按照新的市场需求重新架构 IBM 的组织机构。能不能成功就看她的执行能力了,阻力的一个明显的例子就是 CMS。
互联网上提供服务的玩儿法是:老子产品足够好,你爱来不来,我没精力一个一个伺候。简单说是两条:1、产品绝对标准化,任何人来都一样;2、产品足够有竞争力。企业级系统的销售方法是:客户是上帝,屁都是香的,客户满意度之上,您要什么我都给您做出来。以前那个虚胖的非核心业务需求已经不存在了,继续以对待销售核心业务支撑设备的方式卖非核心业务支撑环境的做法显然是不合适的。不排除 IBM 可以想出不同的销售方式,但绝不是和 IBM 以前一样的传统销售方式。
IBM 另外一个云品牌 Bluemix,是 PaaS 云平台。这是一个很好的想法,IBM 也有足够的技术能力把它做好。但反观一些相关的高管,就有些不太靠谱了。他们已经成为了一种官僚。官僚一般并不想将一个东西做好,而只是想满足 KPI,而把业务做好只是满足 KPI 的一个副产品。于是我们就看到了一些丑恶的嘴脸和决定。
例子不再多举了 IBM 是否还需要到快死的时候才能救回来就让时间去决定吧。其实整个传统 IT 行业都面临着类似的问题。HP 玩儿了几年公有云 Helion,最近也宣布放弃 Helion。其根本原因也是一个传统 IT 销售方式和新的云计算的销售方式完全不一样,需要不同的管理方式和企业文化。老企业需要焕发新青春的时候需要的是变革的能力,这个变革的能力不是仅仅开发一个新产品就可以了,而是需要克服很多难题,企业文化和管理组织内部的障碍可能是最大的。当年IBM 收购 SoftLayer 的时候,我们同事聊天,很多人持有一种观点:IBM 如果像 EMC 管理 VMWare 那样放手让 SoftLayer 自己发展的话 SoftLayer 还是有前途的,如果想自己插手,搞不好要完蛋。果然,SoftLayer CEO Lance Crosby 甚至在被收购还不到两年就离开 IBM。
Ginni 能不能带领 IBM 走出来要看她有没有能力摆脱这些不适应新市场的传统力量。有人曾经说要等过了 2016年,因为大部分主要的既得利益者会在 2016年 兑现利益,之后或许就没有那么多的阻力。2016年 马上就要到了,拭目以待吧。至于整个传统 IT 行业,我只能说,江山待有才人出,各领风骚数几十年。