程序员为什么不靠自己的项目谋生?而必须为他人打工,996?

程序员为啥不自己单干?想过,但是 偶尔被问,程序员都能开发公司的软件了,为啥不做个软件自己卖。作为写了近10年代码的程序员,来分享一下这个话题。据了解,每个程序员都想过去做一款自己的产品去赚钱,包括我。有人只是想过,有人去做过了,也有很多人做成功了。根据目前软件行业,大概可分3个方向,分别是销售软件产品、运营软件产品、定制开发软件。我根据这3个方向去分析一下程序员单干的可行性与困难。 阅读详情

见字如面,我是军哥!

这几天逛知乎,看到今天主题的热贴,我觉得真是直击灵魂啊,我相信很多程序员也问过自己或者被问过这个问题吧。

作为一个从业 15年的 IT 老炮,自己也算轻创业 4 年,还是有资格来聊聊这个话题的。

我觉得呀,这本质上有三个原因:

1、骨子里就是找个公司上班

我觉得除了浙江人,广东人少部分之外,大多数从小就被教育,考个好高中上个好大学然后找好工作,就这样过完这一生。我反正从小就是这么被教育的,我相信看到这篇文章的人绝对多数人跟我一样。

2、很多程序员开发经验确实丰富,但是并不管用

为什么呢?

我们大多数是应用开发程序员,并且大家开发的系统,虽然可能高并发,大流量或者超级业务复杂,但是呢,很多时候我们只是按照产品经理设计好的需求开发而已,离开他们的设计或者让我们自己去设计一款产品,大多数程序员开发的东西都没有什么意义,大多数是自嗨。

这就如隔行如隔山一样的存在~

3、就算产品设计挺不错,但是市场推广是文盲

就算我们程序员牛逼,开发能力满级,有产品思维也能设计产品,这在程序员中也算佼佼者了。

但是,还不够,一款软件的成功,还需要做产品营销和市场推广(其他财务,行政HR等等就不说了),这些东西需要资金(至少百万以上吧) + 需要专业的营销和推广经验。

这些对于天天在 office 写大代码的程序员几乎比登天还难。

有人说,程序员可以雇佣那些专业的营销或推广人员呀,那我想说作为 CEO 你至少要懂一些吧,有句话说的好,CEO不可能什么都懂,但是都要懂一些,不然你开公司就是给人家发工资,然后倒闭~~

另外,前些年可能还行,最近这几年想推广新的 APP 或者小程序那就更难了,为什么呢?用户手机的 APP 几乎被现在各大公司霸占了,你能想到的需求也几乎都被满足了。

并且比如新东老俞,红衣教主,雷军都得靠自媒体平台的流量来壮大自己的公司业务,为什么呢?因为他们自己搞自己平台的流量也难。

所以,我说,程序员不是不想卖自己项目或者产品,是真心没这个能力呀!欢迎评论区说说你的看法。。。

今天的文章就写到这里了哈,觉得真实的话点个赞,或者在看吧!

最后,最近好几位读者朋友说要么简历都是已读不回,要么面试老是一面挂, 每个人问题还不一样,另外最近还在给多位程序员朋友,做 1 对 1 模拟面试,发现了很多共性的问题,感觉很有意思。

于是,我决定本周末晚上开直播分享简历不回,面试不过的可能性原因来分析分析,欢迎点击下方预约,我们不见不散~

以往热文推荐:

每个程序员都要有 3 份收入!


更多精彩,关注我公号,一起学习、成长

417695a8dc086c331f099919315a340c.png

基于TI C2000的CCS安装与工程创建完整示例 手把手演示基于TI C2000系列的CCS安装过程及首个工程创建步骤,涵盖环境配置与常见问题处理,助力快速上手嵌入式开发,ccs安装和工程搭建不再难。 阅读详情

相关推荐

PSOC Creator 入门教程超详细

最近工作原因需要使用到赛普拉斯的一款芯片,奈何以前没有用过,所以趁这次也学习了一些简单的用法,总结一下,希望能帮到有需要朋友,因为网上关于这方面的文章少的可怜,详细点的更是少之又少!废话少说,正文开始.

qm_mq的博客 5746

你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?

和亲戚聊天,他提出的一个问题:你们程序员会写代码,自己做个软件卖钱,赚钱,岂不比打工、被剥削好很多?这个问题真是震撼人心,直指灵魂啊!不由得让我们思考一下这个行业的一些重要的、本质的问题。靠自己的项目谋生,这是完全可能的,但是我觉得至少满足两个条件。第一,成为先行者。在互联网早期,给公司做个简单的HomePage 就能轻松赚好几万。周奕号称中国共享软件走出国门赚取美元的...

码农翻身 2541

Autodesk全家桶:从AutoCAD到Maya,设计师必备的7款神器全解析

本文全面解析Autodesk全家桶中的7款设计师必备软件,包括AutoCAD、Revit、Inventor、Fusion 360、Maya和3ds Max等。从二维制图到三维建模,从建筑信息模型(BIM)到影视动画制作,这些工具在工程设计、建筑可视化和数字创意领域展现出强大的协同效应。通过实战案例展示如何整合工作流,显著提升设计效率与项目质量。

weixin_29237635的博客 461

你们程序员有了AI,为什么还不敢出来单干? 还必须为别人打工?

相比英美澳加,现在新西兰身份更容易、更快就能拿到。如果是对海外市场,可以发到Hacker News,Reddit之类的网站去宣传,有了AI翻译,语言还是小事,关键是那里的氛围/文化和国内截然不同,有些热门的“梗”国内的人很难理解,融入很难。记得原来码农翻身群有个人神秘兮兮地说,他想到一个非常好的点子,开发出来也许能改变世界,我们问他是啥,他就是不愿意分享,像宝贝一样藏着,怕自己的想法被偷了去。我自己也有过惨痛的经历,在大众创业,万众创新如火如荼的时候,脑子一热,和朋友一起搞了个家校互动平台,

码农翻身 503

【博弈论基础与几大经典模型】古诺模型、斯塔克尔伯格模型Stackelberg Game、价格领导模型、Bertrand模型、Sweezy模型

博弈论中经典模型☞古诺模型、斯塔克尔伯格模型、价格领导模型等

学习记录 3万+

机器学习面试笔试求职必背!八股文(1/5)

算法工程师,技术软件类求职机器学习必背八股文 更多算法/业务/HR面等笔试题面试题 —— >个性签名自取! 1. 特征工程: 1.1 为什么要对特征做归一化处理: Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术。特征间的单位(尺度)可能不同,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[ 1000 , 10000 ] [1000, 10000][1000,10000],另一个特征的变化范围可能是[ −.

大厂offer宝典 1万+

如何看待 “程序员下班后不想学习”

996后没有时间、精力学习怎么办?那就好好玩、好好休息。不追求高绩效,因为高绩效还跟公司经营状况相关,这是我们程序员无法左右的。即使被裁员,也能随时找到工作的能力即使不工作,也能谋生的能力能够提高我们技术影响力的能够提高我们技术能力的。

weixin_45727472的博客 671

Python | KS检验以及其余非参数检验的实现

Python | KS检验以及其余非参数检验的实现1 什么是KS检验2 KS检验分类?3 KS检验的Python实现3.1 检验指定的数列是否服从正态分布3.2 检验指定的两个数列是否服从相同分布4 其余的非参数检验4.1 Wilcoxon符号秩检验(t检验的非参数版本)4.2 Kruskal-Wallis H检验(方差分析的非参数版本)4.3 Mann-Whitney秩检验5 参考 1 什么是KS检验 定义:检验一个分布f(x)与理论分布g(x)【比如正态分布】是否一致,或两个观测值分布是否有显著差异的检

RUC_Lee的博客 1万+

上班修Bug、下班去带货,副业收入是我做程序员的2倍!

“996”、“格子衫”、与技术水平成反比的发量似乎一直是程序员的代名词。 终于!就连90后程序员们纷纷打响头发“保卫战”,国内最大的电商平台数据显示——618期间,比游戏、键盘、鼠标更受程序员欢迎的是进口防脱产品…… 为了保护所剩无几的秀发,不少程序员开始另谋出路。当然很多人选择尽快离开一线,往管理方向发展。 不过manager跟普通IC的比例通常都是1:10甚至更高,不是所有人都能晋升的。要么你得技术过硬,要么你得具备出色的跟PM打交道的能力,能推动项目落地…… 其实撇开“程序员”这层枷锁,很多人都有

九章算法的博客 309

深入解析Panfrost驱动:Mali-GPU开源驱动的架构与实现

本文深入解析了Panfrost驱动作为Mali-GPU开源驱动的架构与实现。从诞生背景到硬件架构演进,详细介绍了Panfrost如何突破ARM闭源策略,实现全栈支持。文章还探讨了驱动设计中的关键技术挑战与性能优化策略,为开发者提供了实用的编译部署指南和性能调优方法。

weixin_30790841的博客 552

《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录

本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。

图形/计算GPU的驱动与虚拟化技术分享园地 3734

副业收入是做程序员的2倍,副业 “钱”景太香了

副业收入是做程序员的2倍,副业 “钱”景太香了

DEVELOPERAA的博客 1055

基于STM32L4XX、HAL库的IP101GRI以太网收发器(PHY)驱动程序设计

define IP101GRI_PHY_ADDRESS 0x01 // 根据硬件设计设置PHY地址。#define IP101GRI_PHYSTS 0x10 // PHY状态寄存器。#define IP101GRI_PHYINIR 0x12 // PHY中断寄存器。#define IP101GRI_PHYCR 0x14 // PHY控制寄存器。#define IP101GRI_PHYID2 0x03 // PHY标识符2。

zhusl6688的博客 721

程序员凭本事赚钱被没收所得,是否体现了“重刑主义”?

我们不否认翻墙行为的不合规性,但是直接因为其途径的形式不妥,就完全否定他获取报酬的合法性,是否有待商榷?所以,在公众社会里,在法律面前,对翻墙处以行政处罚,是对社会行为的规范。亦有网友戏称,“我读研/读博的时候,常用网络代理使用谷歌学术看论文,也经常上github学习代码,是不是毕业以来工作的收入都得上交……对于,包括程序员在内的劳动群众,要学会规避风险。其次,回归事情本质,该程序员的目的只是想凭自己的本事多赚点钱,好养家糊口。如若因此完全否定他的劳动、他的心血,我想寒的不仅是他一个人心,更是大众的心。

Mr_HelloWorldx的博客 596

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

副业收入是我做程序员的2倍,副业这么有 “钱”景,我要考虑转行吗?

撇开“程序员”这层枷锁,很多人都有个生动又有趣灵魂,把简单的爱好发展成正经的副业,最后副业转正 “钱”景更加光明 。

pythonhy的博客 255

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

45岁程序员因陪娃辞职,半年后找不到工作:中年危机该如何自救?

前几天看到一张令人心酸的截图,是一个网民在政府网站上的留言: 这老哥是一名45岁的程序员,因为要陪小孩辞职了半年,然后就很难找到工作了。 最初看见这个信息是在洋哥的读者群,大家也展开了激烈的讨论,有读者朋友也在怀疑真实性。 我倾向于认为信息是真的,这里讲一个曾经的小故事:2017年洋哥第二次创业之际,面试过一个44岁清华电子专业毕业的老哥,他在日本工作20多年,技术挺牛但技术栈严重落后。 当时他的薪资要求只有2.5万,因为他的年纪和技术栈,最终没有录用他。 可能大家也会不相信:一个清华毕业的人,一个创业小

findyi的博客 7649

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

程序员搞什么副业才有性价比?

选择一份合适副业的重要性,不亚于当初苦苦寻来的一份主业。当然,副业固然不错,也还是希望大家在不影响主业的情况下,在循序渐进地另辟蹊径。以上副业,难度不等、效果因人而异。不过,个人最推荐第一个接单,更大众化、难度系数也更低一点。好啦~希望,大家天天有钱赚,日日有钱花~暴富暴富!!!如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!#学习资源推荐零基础Python学习资源介绍👉Python学习路线汇总👈。

2301_82000445的博客 1313
上一篇: 每个程序员都要有 3 份收入!
下一篇: 工作能力差的人,都有这 3 个特征!
军哥手记
军哥手记 业界专家认证 业界专家认证
博客等级 码龄21年 661粉丝 608原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值