注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

我发现很多程序员都不会打日志。。

大家好,我是程序员鱼皮。我发现很多程序员都不打日志,有的是 不想 打、有的是 意识不到 要打、还有的是 真不会 打日志啊! 前段时间的模拟面试中,我问了几位应届的 Java 开发同学 “你在项目中是怎么打日志的”,得到的答案竟然是 “支支吾吾”、“阿巴阿巴”,...
继续阅读 »

大家好,我是程序员鱼皮。我发现很多程序员都不打日志,有的是 不想 打、有的是 意识不到 要打、还有的是 真不会 打日志啊!


前段时间的模拟面试中,我问了几位应届的 Java 开发同学 “你在项目中是怎么打日志的”,得到的答案竟然是 “支支吾吾”、“阿巴阿巴”,更有甚者,竟然表示:直接用 System.out.println() 打印一下吧。。。



要知道,日志是我们系统出现错误时,最快速有效的定位工具,没有日志给出的错误信息,遇到报错你就会一脸懵逼;而且日志还可以用来记录业务信息,比如记录用户执行的每个操作,不仅可以用于分析改进系统,同时在遇到非法操作时,也能很快找到凶手。


因此,对于程序员来说,日志记录是重要的基本功。但很多同学并没有系统学习过日志操作、缺乏经验,所以我写下这篇文章,分享自己在开发项目中记录日志的方法和最佳实践,希望对大家有帮助~


一、日志记录的方法


日志框架选型


有很多 Java 的日志框架和工具库,可以帮我们用一行代码快速完成日志记录。


在学习日志记录之前,很多同学应该是通过 System.out.println 输出信息来调试程序的,简单方便。


但是,System.out.println 存在很严重的问题!



首先,System.out.println 是一个同步方法,每次调用都会导致 I/O 操作,比较耗时,频繁使用甚至会严重影响应用程序的性能,所以不建议在生产环境使用。此外,它只能输出简单的信息到标准控制台,无法灵活设置日志级别、格式、输出位置等。


所以我们一般会选择专业的 Java 日志框架或工具库,比如经典的 Apache Log4j 和它的升级版 Log4j 2,还有 Spring Boot 默认集成的 Logback 库。不仅可以帮我们用一行代码更快地完成日志记录,还能灵活调整格式、设置日志级别、将日志写入到文件中、压缩日志等。


可能还有同学听说过 SLF4J(Simple Logging Facade for Java),看英文名就知道了,这玩意并不是一个具体的日志实现,而是为各种日志框架提供简单统一接口的日志门面(抽象层)。


啥是门面?


举个例子,现在我们要记录日志了,先联系到前台接待人员 SLF4J,它说必须要让我们选择日志的级别(debug / info / warn / error),然后要提供日志的内容。确认之后,SLF4J 自己不干活,屁颠屁颠儿地去找具体的日志实现框架,比如 Logback,然后由 Logback 进行日志写入。



这样做有什么好处呢?无论我们选择哪套日志框架、或者后期要切换日志框架,调用的方法始终是相同的,不用再去更改日志调用代码,比如将 log.info 改为 log.printInfo。


既然 SLF4J 只是玩抽象,那么 Log4j、Log4j 2 和 Logback 应该选择哪一个呢?



值得一提的是,SLF4J、Log4j 和 Logback 竟然都是同一个作者(俄罗斯程序员 Ceki Gülcü)。



首先,Log4j 已经停止维护,直接排除。Log4j 2 和 Logback 基本都能满足功能需求,那么就看性能、稳定性和易用性。



  • 从性能来说,Log4j 2 和 Logback 虽然都支持异步日志,但是 Log4j 基于 LMAX Disruptor 高性能异步处理库实现,性能更高。

  • 从稳定性来说,虽然这些日志库都被曝出过漏洞,但 Log4j 2 的漏洞更为致命,姑且算是 Logback 得一分。

  • 从易用性来说,二者差不多,但 Logback 是 SLF4J 的原生实现、Log4j2 需要额外使用 SLF4J 绑定器实现。


再加上 Spring Boot 默认集成了 Logback,如果没有特殊的性能需求,我会更推荐初学者选择 Logback,都不用引入额外的库了~


使用日志框架


日志框架的使用非常简单,一般需要先获取到 Logger 日志对象,然后调用 logger.xxx(比如 logger.info)就能输出日志了。


最传统的方法就是通过 LoggerFactory 手动获取 Logger,示例代码如下:


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyService {
   private static final Logger logger = LoggerFactory.getLogger(MyService.class);

   public void doSomething() {
       logger.info("执行了一些操作");
  }
}

上述代码中,我们通过调用日志工厂并传入当前类,创建了一个 logger。但由于每个类的类名都不同,我们又经常复制这行代码到不同的类中,就很容易忘记修改类名。


所以我们可以使用 this.getClass 动态获取当前类的实例,来创建 Logger 对象:


public class MyService {
   private final Logger logger = LoggerFactory.getLogger(this.getClass());

   public void doSomething() {
       logger.info("执行了一些操作");
  }
}

给每个类都复制一遍这行代码,就能愉快地打日志了。


但我觉得这样做还是有点麻烦,我连复制粘贴都懒得做,怎么办?


还有更简单的方式,使用 Lombok 工具库提供的 @Slf4j 注解,可以自动为当前类生成一个名为 log 的 SLF4J Logger 对象,简化了 Logger 的定义过程。示例代码如下:


import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyService {
   public void doSomething() {
       log.info("执行了一些操作");
  }
}

这也是我比较推荐的方式,效率杠杠的。



此外,你可以通过修改日志配置文件(比如 logback.xmllogback-spring.xml)来设置日志输出的格式、级别、输出路径等。日志配置文件比较复杂,不建议大家去记忆语法,随用随查即可。



二、日志记录的最佳实践


学习完日志记录的方法后,再分享一些我个人记录日志的经验。内容较多,大家可以先了解一下,实际开发中按需运用。


1、合理选择日志级别


日志级别的作用是标识日志的重要程度,常见的级别有:



  • TRACE:最细粒度的信息,通常只在开发过程中使用,用于跟踪程序的执行路径。

  • DEBUG:调试信息,记录程序运行时的内部状态和变量值。

  • INFO:一般信息,记录系统的关键运行状态和业务流程。

  • WARN:警告信息,表示可能存在潜在问题,但系统仍可继续运行。

  • ERROR:错误信息,表示出现了影响系统功能的问题,需要及时处理。

  • FATAL:致命错误,表示系统可能无法继续运行,需要立即关注。


其中,用的最多的当属 DEBUG、INFO、WARN 和 ERROR 了。


建议在开发环境使用低级别日志(比如 DEBUG),以获取详细的信息;生产环境使用高级别日志(比如 INFO 或 WARN),减少日志量,降低性能开销的同时,防止重要信息被无用日志淹没。


注意一点,日志级别未必是一成不变的,假如有一天你的程序出错了,但是看日志找不到任何有效信息,可能就需要降低下日志输出级别了。


2、正确记录日志信息


当要输出的日志内容中存在变量时,建议使用参数化日志,也就是在日志信息中使用占位符(比如 {}),由日志框架在运行时替换为实际参数值。


比如输出一行用户登录日志:


// 不推荐
logger.debug("用户ID:" + userId + " 登录成功。");

// 推荐
logger.debug("用户ID:{} 登录成功。", userId);

这样做不仅让日志清晰易读;而且在日志级别低于当前记录级别时,不会执行字符串拼接,从而避免了字符串拼接带来的性能开销、以及潜在的 NullPointerException 问题。所以建议在所有日志记录中,使用参数化的方式替代字符串拼接。


此外,在输出异常信息时,建议同时记录上下文信息、以及完整的异常堆栈信息,便于排查问题:


try {
   // 业务逻辑
catch (Exception e) {
logger.error("处理用户ID:{} 时发生异常:", userId, e);
}

3、控制日志输出量


过多的日志不仅会占用更多的磁盘空间,还会增加系统的 I/O 负担,影响系统性能。


因此,除了根据环境设置合适的日志级别外,还要尽量避免在循环中输出日志。


可以添加条件来控制,比如在批量处理时,每处理 1000 条数据时才记录一次:


if (index % 1000 == 0) {
   logger.info("已处理 {} 条记录", index);
}

或者在循环中利用 StringBuilder 进行字符串拼接,循环结束后统一输出:


StringBuilder logBuilder = new StringBuilder("处理结果:");
for (Item item : items) {
   try {
       processItem(item);
       logBuilder.append(String.format("成功[ID=%s], ", item.getId()));
  } catch (Exception e) {
       logBuilder.append(String.format("失败[ID=%s, 原因=%s], ", item.getId(), e.getMessage()));
  }
}
logger.info(logBuilder.toString());

如果参数的计算开销较大,且当前日志级别不需要输出,应该在记录前进行级别检查,从而避免多余的参数计算:


if (logger.isDebugEnabled()) {
   logger.debug("复杂对象信息:{}"expensiveToComputeObject());
}

此外,还可以通过更改日志配置文件整体过滤掉特定级别的日志,来防止日志刷屏:


<!-- Logback 示例 -->
<appender name="LIMITED" class="ch.qos.logback.classic.AsyncAppender">
<!-- 只允许 INFO 级别及以上的日志通过 -->
   <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>INFO</level>
   </filter>
   <!-- 配置其他属性 -->
</appender>

4、把控时机和内容


很多开发者(尤其是线上经验不丰富的开发者)并没有养成记录日志的习惯,觉得记录日志不重要,等到出了问题无法排查的时候才追悔莫及。


一般情况下,需要在系统的关键流程和重要业务节点记录日志,比如用户登录、订单处理、支付等都是关键业务,建议多记录日志。


对于重要的方法,建议在入口和出口记录重要的参数和返回值,便于快速还原现场、复现问题。


对于调用链较长的操作,确保在每个环节都有日志,以便追踪到问题所在的环节。


如果你不想区分上面这些情况,我的建议是尽量在前期多记录一些日志,后面再慢慢移除掉不需要的日志。比如可以利用 AOP 切面编程在每个业务方法执行前输出执行信息:


@Aspect
@Component
public class LoggingAspect {

   @Before("execution(* com.example.service..*(..))")
   public void logBeforeMethod(JoinPoint joinPoint) {
       Logger logger = LoggerFactory.getLogger(joinPoint.getTarget().getClass());
       logger.info("方法 {} 开始执行", joinPoint.getSignature().getName());
  }
}

利用 AOP,还可以自动打印每个 Controller 接口的请求参数和返回值,这样就不会错过任何一次调用信息了。


不过这样做也有一个很重要的点,注意不要在日志中记录了敏感信息,比如用户密码。万一你的日志不小心泄露出去,就相当于泄露了大量用户的信息。



5、日志管理


随着日志文件的持续增长,会导致磁盘空间耗尽,影响系统正常运行,所以我们需要一些策略来对日志进行管理。


首先是设置日志的滚动策略,可以根据文件大小或日期,自动对日志文件进行切分。比如按文件大小滚动:


<!-- 按大小滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedRollingPolicy">
   <maxFileSize>10MB</maxFileSize>
</rollingPolicy>

如果日志文件大小达到 10MB,Logback 会将当前日志文件重命名为 app.log.1 或其他命名模式(具体由文件名模式决定),然后创建新的 app.log 文件继续写入日志。


还有按照时间日期滚动:


<!-- 按时间滚动 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>

上述配置表示每天创建一个新的日志文件,%d{yyyy-MM-dd} 表示按照日期命名日志文件,例如 app-2024-11-21.log


还可以通过 maxHistory 属性,限制保留的历史日志文件数量或天数:


<maxHistory>30</maxHistory>

这样一来,我们就可以按照天数查看指定的日志,单个日志文件也不会很大,提高了日志检索效率。


对于用户较多的企业级项目,日志的增长是飞快的,因此建议开启日志压缩功能,节省磁盘空间。


<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log.gz</fileNamePattern>
</rollingPolicy>

上述配置表示:每天生成一个新的日志文件,旧的日志文件会被压缩存储。


除了配置日志切分和压缩外,我们还需要定期审查日志,查看日志的有效性和空间占用情况,从日志中发现系统的问题、清理无用的日志信息等。


如果你想偷懒,也可以写个自动化清理脚本,定期清理过期的日志文件,释放磁盘空间。比如:


# 每月清理一次超过 90 天的日志文件
find /var/log/myapp/ -type f -mtime +90 -exec rm {} ;

6、统一日志格式


统一的日志格式有助于日志的解析、搜索和分析,特别是在分布式系统中。


我举个例子大家就能感受到这么做的重要性了。


统一的日志格式:


2024-11-21 14:30:15.123 [main] INFO com.example.service.UserService - 用户ID:12345 登录成功
2024-11-21 14:30:16.789 [main] ERROR com.example.service.UserService - 用户ID:12345 登录失败,原因:密码错误
2024-11-21 14:30:17.456 [main] DEBUG com.example.dao.UserDao - 执行SQL:[SELECT * FROM users WHERE id=12345]
2024-11-21 14:30:18.654 [main] WARN com.example.config.AppConfig - 配置项 `timeout` 使用默认值:3000ms
2024-11-21 14:30:19.001 [main] INFO com.example.Main - 应用启动成功,耗时:2.34秒

这段日志整齐清晰,支持按照时间、线程、级别、类名和内容搜索。


不统一的日志格式:


2024/11/21 14:30 登录成功 用户ID: 12345
2024-11-21 14:30:16 错误 用户12345登录失败!密码不对
DEBUG 执行SQL SELECT * FROM users WHERE id=12345
Timeout = default
应用启动成功

emm,看到这种日志我直接原地爆炸!



建议每个项目都要明确约定和配置一套日志输出规范,确保日志中包含时间戳、日志级别、线程、类名、方法名、消息等关键信息。


<!-- 控制台日志输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
   <encoder>
       <!-- 日志格式 -->
       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
   </encoder>
</appender>

也可以直接使用标准化格式,比如 JSON,确保所有日志遵循相同的结构,便于后续对日志进行分析处理:


<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
   <!-- 配置 JSON 编码器 -->
</encoder>

此外,你还可以通过 MDC(Mapped Diagnostic Context)给日志添加额外的上下文信息,比如用户 ID、请求 ID 等,方便追踪。在 Java 代码中,可以为 MDC 变量设置值:


MDC.put("requestId""666");
MDC.put("userId""yupi");
logger.info("用户请求处理完成");
MDC.clear();

对应的日志配置如下:


<!-- 文件日志配置 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
   <encoder>
       <!-- 包含 MDC 信息 -->
       <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%X{requestId}] [%X{userId}] %msg%n</pattern>
   </encoder>
</appender>

这样,每个请求、每个用户的操作一目了然。


7、使用异步日志


对于追求性能的操作,可以使用异步日志,将日志的写入操作放在单独的线程中,减少对主线程的阻塞,从而提升系统性能。


除了自己开线程去执行 log 操作之外,还可以直接修改配置来开启 Logback 的异步日志功能:


<!-- 异步 Appender -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
   <queueSize>500</queueSize> <!-- 队列大小 -->
   <discardingThreshold>0</discardingThreshold> <!-- 丢弃阈值,0 表示不丢弃 -->
   <neverBlock>true</neverBlock> <!-- 队列满时是否阻塞主线程,true 表示不阻塞 -->
   <appender-ref ref="CONSOLE" /> <!-- 生效的日志目标 -->
   <appender-ref ref="FILE" />
</appender>

上述配置的关键是配置缓冲队列,要设置合适的队列大小和丢弃策略,防止日志积压或丢失。


8、集成日志收集系统


在比较成熟的公司中,我们可能会使用更专业的日志管理和分析系统,比如 ELK(Elasticsearch、Logstash、Kibana)。不仅不用每次都登录到服务器上查看日志文件,还可以更灵活地搜索日志。


但是搭建和运维 ELK 的成本还是比较大的,对于小团队,我的建议是不要急着搞这一套。




OK,就分享到这里,洋洋洒洒 4000 多字,希望这篇文章能帮助大家意识到日志记录的重要性,并养成良好的日志记录习惯。学会的话给鱼皮点个赞吧~


日志不是写给机器看的,是写给未来的你和你的队友看的!


更多


💻 编程学习交流:编程导航

📃 简历快速制作:老鱼简历

✏️ 面试刷题神器:面试鸭


作者:程序员鱼皮
来源:juejin.cn/post/7439785794917072896
收起阅读 »

一封写给离职小伙伴的信

前言 亲爱的小伙伴,当你看到这封信的时候,相信你大概率也是离职浪潮中的一员了,不管是被裁还是主动离职,相信在接下来的日子里,求职路上必定不会一帆风顺,势必要经历一番波折与挑战。 也许你才刚开始,此刻意气风发信心满满;也许你正在经历,此时彻底怀疑自我,将要放弃底...
继续阅读 »

前言


亲爱的小伙伴,当你看到这封信的时候,相信你大概率也是离职浪潮中的一员了,不管是被裁还是主动离职,相信在接下来的日子里,求职路上必定不会一帆风顺,势必要经历一番波折与挑战。


也许你才刚开始,此刻意气风发信心满满;也许你正在经历,此时彻底怀疑自我,将要放弃底线;也许你已经历过了,此时已是遍体鳞伤体无完肤,彻底摆烂……


不管屏幕前的你是哪一种,但请记住,这是每个人入世时社会老师要给我们上的第一节课。


在这里,我先分享一段平凡普通又心酸的求职历程,也希望通过这篇文章能给你一些启发和帮助,也衷心地希望你能够重拾信心,一路披荆斩棘!




关于我


我是双非一本毕业,计算机专业,目前毕业已有九年了,一直在远离家乡的北漂之地工作。由于母校没啥名气且名字中带有的小众地域性,非本省的人很少知道它,所以在外省找工作经常会被问你是不是本科毕业(尴尬😅),学历这一块姑且算是杂牌吧,起码在筛选简历时不具备任何优势。


其次,简历也没有太多的亮眼经历,没有大厂背景,基本都是中小厂的工作经历,普通到不能再普通了。


其三,关于年龄这一块,本人目前很接近35岁的“退休”年龄,属于被重点劝退互联网的年纪,触碰到了互联网年龄红线。


最后,这还不算最糟糕,还有更糟糕的面试门槛。


什么是糟糕的面试门槛?接着往下看。


由于去年家里出事了,辞职回了老家,之后也没着急出来找工作,期间闲来无事,顺便考了个公(原本辞职也不是为了考公),结果可想而知,也没考上,所以也没当回事,该玩玩,该旅游就旅游,彻底放飞自我~(没有房贷车贷毫无顾忌)


等我再次出来找工作的时候,已经离上一份工作的间隔有一年多了(准确的说是一年零两个月),也就是说我已经 Gap 一年多了,我还丝毫没意识到这将成为我求职路上的一个障碍。




面试的准备


7月初,我正式开始准备面试。首先更新了简历,回顾之前的项目并总结,梳理项目架构、流程图、负责的模块以及技术难点。同时看了看八股文复习基础知识,刷刷leetcode,时间过得很快,大概三周后开始投简历。




面试的门槛


Gap一年多的经历,让我在求职中非常被动,一线大厂全都因为这段 Gap 经历被 HR 前期的电话沟通中直接否掉,连一面的面试机会都没有。


只有一家公司例外,那就是字节,也是我面试的第一家公司。首先不得不表扬一下这家公司的用人态度,只是我准备不足仓促应付,以为刷了算法题就没啥大问题,结果人家来了一个手撕题(非算法),当场把我给整懵了,结果可想而知……其实本质上还是综合能力不够,但起码人家给了你面试的机会。


不管最终结果如何,单凭这种不问出身来者不拒,招人包容的胸襟与态度就值得点赞👍


因此,后面我能接到面试的机会只有中小厂,一间大厂都没有,这也许就是 Gap 太久要付出的代价之一吧。




面试的过程


求职的过程比较曲折,毕竟离开岗位已经一年多了,很多零零碎碎的知识要整理起来也不是一蹴而就的,因此求职期间,一边面试,一边不断总结经验,把之前做过的东西以及面试的空白知识慢慢梳理出来,并整理成博客。通过系统化的梳理与表达,自己的思路也开始有了更清晰的脉络和方向。


经过三个多月的面试,期间共投了三十多家公司的简历,排除一线大厂以及被其他公司pass掉的简历,其实真正接到面试机会的一共只有二十家左右。


期间有一段是没有面试的空白期,那段时间真的怀疑自己,很彷徨,是不是真的该投外包和od,这里没有贬低的意思,只是目前自己还没有养老的打算,同时也有自己的职业规划和方向,外包暂时还不在考虑范围之内。


从刚开始投的高薪大中厂,到后来的中小厂,虽然姿态一直在放低,但终归守住了自己的底线——那就是行业方向和薪资待遇。




面试中的奇葩


面试过程中也会遇到各种各样的面试官,结合自己曾经也做过面试官的经验,一些常规的套路基本是熟悉的,幸运的是遇到的绝大多数面试官都非常的nice,当然也遇到个别的奇葩。


比如这次遇到了一个思路清奇的二面面试官,一面聊得还挺好的,本以为二面面缘应该也不会差,没想到上来他就开始板着脸,似乎人人都欠他八百万似的,之所以如此,直到后来我才知道,原来他在怀疑我简历造假。等我介绍完项目,没问技术实现细节,而是开始扣字眼,这个项目公司内部的名字叫什么?为什么简历中没提这个项目的内部名字?xxx公司有海外方向吗?我全程耐心地解释,一度怀疑他才是我前司的员工,而我不是。


最后问了我那个项目的域名地址,那个项目我也只跟进了一期,没有太深的记忆,当时没有找出来,后来就草草结束了。


这里也怪我,由于离开前司一年多,项目域名早变了,而自己在整理项目时没有及时跟进,才导致如此尴尬局面,后来我才知道那个项目的域名早已换成了官网域名,把它整合进海外官网了。


其实我也非常理解他的这种行为,换成是我,遇到这种情况,我也会对面试者产生怀疑。然而从逆向思维的角度分析,像我这种非大厂背景,学历看着又像渣本的简历,怎么造,简历都不会好到哪里去吧,何况还有背调,我又何必费那个心思。想想都觉得有点滑稽~


这里也给自己总结两点经验:



  • 凡是可能涉及到的点,都要一一回顾,有备无患,但说实话经历过那么多年的面试,不管是我面别人还是别人面我,问项目域名的我还是头一次遇到。

  • 怀疑一旦开始,罪名就已经成立。不管你后面如何辩白,结局其实早已注定,还不如趁早结束。即使你有幸通过面试,将来在一位不信任你的领导下干活,也是一件非常心累的事。


面试的结果


经过将近20家公司的轮番摩擦,终于在10月底的时候,陆陆续续有了口头offer,又经过银行流水、背调、体检,最终拿到了3家公司的正式offer,两家小公司和一家独角兽。


那家独角兽公司我很早就知道,其实也一直是我想进的一家公司,因此毫无悬念,我最终选择了那家中厂独角兽,总包降了一点点,但总算还是属于平跳,这个结果在当下的环境,对我来说已经很难得了。


面试经验分享


这里不提供什么面经,因为每面的问题几乎都不一样,几乎没有碰到任何相同的一个问题(自我介绍、项目介绍和HR面除外)。


面了这么多公司,印象中只有一道题是重复的,所以即使给出各家公司的面经,真正轮到你面时,出的题也会因人而异。面经并不是圣经,只是可以作为一个难度级别的参考罢了,所以面经意义其实并不大。


这里我想分享更多的是个人职业的规划与成长。


其实面试的过程本身就是一个提升自我认知的过程。


面对如此困境,我想分享一下我是如何破局的。


作为一个普通、大龄、又gap一年多的普通程序猿,我首先做的便是潜下心来扪心自问,在这么激烈的竞争环境中,与其他人相比,我的优势在哪?





  • 首先是职业稳定性,我虽然没有大厂背景,但还算稳定,总共经历3家公司,只有中间一家是因疫情原因而不满一年,八年时间里没有频繁跳槽还算稳定。

  • 其次是职业方向,个人之前从事的行业一直与电商领域相关,前几段工作经历一直是从事海外电商方向。因此,在海外电商这个领域中我有天然的行业经验优势,从最终拿到的3家offer公司的结果来看,也反向证明了这一点。

  • 其三,投简历时我只会挑选特定的领域方向,我不会进行海投,更不会盲投,因为那没有什么意义,因为人家没看上你的,即便投了也不会有什么结果,最多只会礼貌地给你回访,并不会真正进入面试流程。


    这是我在脉脉上得出的结论,因为对你发起的沟通是系统推荐,是系统发起的并不是他们本人,因此他们并不一定对你感兴趣(当然你若是那种天之骄子又有大厂背书,就请忽略我们这种平凡人的经历)。


    因此,投简历时我一般只在boss上,并且是被动投简历,也就是别人先发起的简历请求。底层逻辑是因为只有人家对你感兴趣,你才会有更大的可能获得面试机会


  • 其四,珍惜每一次面试的机会,看清楚JD里的要求和公司从事的方向,对JD中描述的职位要求和职责,有针对性地准备面试,面试时遇到自己知识盲区要诚实表示不会,不要试图与面试官产生争论,因为即便你是对的,也会对你产生不利。坦然接受任何结果,放松心态。

  • 其五,放低姿态,降低期望,期望越高,失望越高。由于我已经离职并 Gap 太久,没有任何骑驴找马的依仗,谈薪资时显得非常被动,这便是 Gap 太久的代价之二。


    之前也面过几个到终面的公司,谈薪时过高而被Pass掉,我的诉求也很简单,就是期望能平薪而跳,也没指望能涨薪,也愿意接受适度降薪。


    期间,有遇到过很爽快的,也有遇到拼命压你薪的,面了很多小公司都有这样一个相同的经历,到谈薪阶段,他们会故意冷淡你不跟你谈,而是经过多轮对比候选人,看看哪个性价比更高。其实也非常理解,毕竟当前的环境下,哪个老板不希望用低薪招到一个综合能力更强的人呢?


    而有的会比较爽快,他们急着大量招人,流程会很快,也不会过分压薪,碰到这种公司那么恭喜你,你中奖了,这种基本在经济行情好(公司盈利大好)的时候才会出现。


    放低姿态不意味着放弃原则反而要有更清晰的底线,它的底层逻辑是降低期望值,期望值是心理学上一个很巧妙东西,期望锚点值越低,才有更大的可能获得惊喜。


  • 最后,主动沉淀和总结经验,对面试中经常问到的同一类问题进行总结和思考,进而纳入自己的脑海中,逐渐形成自己的知识体系。


    比如,你为什么会从上一家公司离职?问这个问题的背后动机是什么?HR为什么会压你薪资?这些问题的背后原理一定要思考清楚,只有理解底层逻辑,才能应对自如。


    当然,搞清楚这些问题的背后逻辑不是为了让你去说谎,面试时可以结合自身的实际,美化用词,但不要试图说谎。





总结


以上就是一个平凡普通又Gap一年多的打工人自我总结与分享,也希望它能给你带来一些启发和帮助,哪怕只有一点点,那也是我莫大的荣幸!


眼下的就业形势确实不容乐观,招聘越来越挑剔,要找到心仪的工作实属不易,但请不要因此而对生活失去信心,要相信好好总结与反思,总有一个位置属于你。


愿屏幕前的你能渡过难关、顺利上岸!加油!


一封来自远方陌生人的信


作者:九幽归墟
来源:juejin.cn/post/7444773769242116111
收起阅读 »

如果你没有必须要离职的原因,我建议你在忍忍

自述 本人成都,由于一些原因我在八月离职了,因为我终于脱离了那个压抑的环境,我没有自己想象中的那么开心,我离职的那天,甚至后面很长的一段时间;离职后的我回了一趟家,刚好在最热的那几天,在家躺了几天,然后又出去逛了逛,玩了差不多一个月吧!我觉得心情逐渐恢复了;然...
继续阅读 »

自述


本人成都,由于一些原因我在八月离职了,因为我终于脱离了那个压抑的环境,我没有自己想象中的那么开心,我离职的那天,甚至后面很长的一段时间;离职后的我回了一趟家,刚好在最热的那几天,在家躺了几天,然后又出去逛了逛,玩了差不多一个月吧!我觉得心情逐渐恢复了;然后开始慢慢的投递简历。


前期


刚投递简历那会,基本上每天都是耍耍哒哒的投递;有面试就去面试,没有面试就在家刷抖音也不看看面试题,可能我找工作的状态还在几年前或者还没从上家公司的状态中走出来,也有可能我目前有一点存款不是特别焦虑,所以也没认真的找。


就这样刷刷哒哒的又过了半月,然后有许多朋友跟我说他们被裁员了,问他们的打算是怎么样的:有的人休息了两三天就开始了找工作当中,而有的人就玩几个月再说。


休息两三天就开始找工作的人基本上都是有家庭有小孩的,反之基本上都是单身。


在跟他们聊天的过程中发现,有些人半年没找到工作了,也有一些人一年都没有找到工作了。可能是年级大了、也可能是工资不想要的太低吧!但是工作机会确实比原来少很多。


在听了大家的话以后,我觉得我差不多也该认真找工作了,我开始逐渐投递简历。


疯狂投递简历


我在9月的下旬开始了简历的修改以及各大招聘App的下载,拉钩、智联、boos以及一下小程序的招聘软件(记不住名字了,因为没啥效果);在我疯狂的投递了几天以后我迎来了第一家面试,是一个线上面试;刚一来就给了我迎头一棒,或许我只忙着修改简历和投递简历去了,没有去背面试题吧(网上说现在都问场景题,所以没准备);


具体的问题我记不全了,但是我记得这么一个问题,面试官问:“深克隆有哪些方法”,我回答的是递归,然后他说还有吗?我直接呆住说不知道了。然后我们就结束了面试,最后他跟我说了这么一句话:“现在的市场行情跟原来没法比,现在的中级基本上要原来的高级的水平,现在的初级也就是原来的中级的水平,所以问的问题会比原来难很多,你可以在学习一下,看你的简历是很不错的;至少简历是这样的。”


当这个面试结束以后我想了想发现是这样的,不知是我还没有接受或者说还没有进入一个面试的状态,还是因为我不想上班的原因,导致我连一些基本的八股文都不清楚,所以我决定开始学习。


给准备离职或者已经离职的朋友们一个忠告:“做任何事情都需提前准备,至少在找工作上是这样的。”


学习


我去看了招聘网站的技术要求(想了解下企业需要的一些技术),不看不知道一看吓一跳,真的奇葩层出不穷,大概给大家概述一下:



  • 开发三班倒:分为早中晚班

  • 要你会vue+react+php+java等技术(工资8-12)

  • 要你会基本的绘画(UI)以及会后端的一些工作,目前这些都需要你一个人完成

  • 要你会vue+react+fluter;了解electron以及3d等

  • 还有就是你的项目跟我们的项目不一致的。


我看到这些稀奇古怪的玩意有点失望,最终我选择了fabricjs进行学习,最开始的时候就是在canvas上画了几个矩形,感觉挺不错的;然后我就想这不是马上快要国庆了吗?我就想用fabric做一个制作头像的这么一个工具插件,在经过两天的开发成功将其制作了出来,并且发布到了网站上(插件tools),发布第一天就有使用的小伙伴给我提一些宝贵的建议了,然后又开始了调整,现在功能也越来越多;


fabricjs在国内的资料很少,基本上就那么几篇文章,没有办法的我就跑去扒拉他们的源码看,然后拷贝需要的代码在修修改改(毕竟比较菜只能这样....);然后在学习fabric的时候也会去学习一些基本知识,比如:js内置方法、手写防抖节流、eventloop、闭包(一些原理逻辑)、深拷贝、内存回收机制等等。


在学习的过程中很难受,感觉每天都是煎熬;每次都想在床上躺着,但是想想还是放弃了,毕竟没有谁会喜欢一个懒惰的人...


在战面试(HR像是刷KPI)


在有所准备的情况下再去面试时就得心应手了,基本上没有太多的胆怯,基本上问啥都知道一些,然后就在面试的时候随机应变即可,10月我基本上接到的面试邀请大概有10多家,然后有几家感觉工资低了就没去面试,去面试了的应该有7/8家的样子,最终只要一家录取。


说说其中一家吧(很像刷KPI的一家):这是一家做ai相关的公司,公司很大,看资料显示时一家中外合资的企业,进去以后先开始了一轮笔试题(3/4页纸),我大概做了50分钟的样子;我基本上8层都答对了(因为他的笔试题很多我都知道嘛,然后有一些还写了几个解决方案的),笔试完了以后,叫我去机试;机试写接口;而且还是在规定的一个网站写(就给我一个网站,然后说写一个接口返回正确结果就行;那个网站我都不会用);我在哪儿磨磨蹭蹭了10多分钟以后,根据node写了一个接口给了hr;然后HR说你这个在我们网站上不能运行。我站起来就走了...


其实我走的原因还有一个,就是他们另一个HR对带我进来的这个HR说:你都没有协调好研发是否有时间,就到处招面试...


是否离职


如果你在你现在这公司还能呆下去的情况下,我建议你还是先呆呆看吧!目前这个市场行情很差,你看到我有10来个面试,但是你知道嘛?我沟通了多少:



  • boos沟通了差不多800-900家公司,邀请我投递简历的只有100家左右。邀请我面试的只有8/9家。

  • 智联招聘我投递了400-600家,邀请我面试的只有1家。

  • 拉钩这个不说了基本上没有招聘的公司(反反复复就那几家);投递了一个月后有一家叫我去面试的,面试了差不多50来分钟;交谈的很开心,他说周一周二给我回复,结果没有回复,我发消息问;也没有回复;看招聘信息发现(邀约面试800+)


我离职情非得已,愿诸君与我不同;如若您已离职,愿您早日找到属于自己的路,不一定是打工的路;若你在职,请在坚持坚持;在坚持的同时去做一些对未来有用的事情,比如:副业、耍个男女朋友、拓展一下圈子等等。


后续的规划


在经历了这次离职以后,我觉得我的人生应该进行好好的规划了;不能为原有的事物所影响,不能为过去所迷茫;未来还很长,望诸君互勉;


未来的计划大致分为几个方向:



  • 拓展自己的圈子(早日脱单)

  • 学习开发鸿蒙(我已经在做了,目前开发的app在审核),发布几款工具类app(也算是为国内唯一的系统贡献一些微弱的力量吧!)

  • 持续更新我在utools上的绘图插件

  • 学习投资理财(最近一月炒股:目前赚了4000多了)

  • 持续更新公众号(前端雾恋)、掘金等网站技术文章


结尾


我们的生活终将回归正轨,所有的昨天也将是历史,不必遗憾昨天,吸取教训继续前进。再见了...


作者:雾恋
来源:juejin.cn/post/7435289649273569334
收起阅读 »

大学生编程第一人,一人抵一城!

就在上个月底,领域内知名的自动驾驶公司小马智行在纳斯达克成功挂牌上市,成为自动驾驶领域新焦点,这个新闻相信不少同学都看到了。 提到小马智行这个公司,可能有些同学还不是很了解。 但是提到小马智行公司的CTO,那相信不少同学就耳熟能详了。 没错,他就是那个神一...
继续阅读 »

就在上个月底,领域内知名的自动驾驶公司小马智行在纳斯达克成功挂牌上市,成为自动驾驶领域新焦点,这个新闻相信不少同学都看到了。



提到小马智行这个公司,可能有些同学还不是很了解。



但是提到小马智行公司的CTO,那相信不少同学就耳熟能详了。


没错,他就是那个神一般的男人,有着「中国大学生计算机编程第一人」称号,并且江湖人尊称为「楼教主」的计算机编程大牛:


楼天城博士



2016年底,楼天城和他的合伙人创立了小马智行,致力于提供安全、先进、可靠的全栈式自动驾驶技术。



不过在此之前,楼天城就以比赛ID “ACRush” 为计算机编程界所熟知。


楼教主毕业于清华,曾连续11年蝉联TopCoder中国区冠军,并且两次获得谷歌全球编程挑战赛冠军。他的职业生涯开始于谷歌,并且在创立小马智行之前,也曾是百度历史上最年轻的T10工程师。


2024年,楼天城以60亿元人民币财富登上《2024年·胡润百富榜》第875位。



从某一程度上也实现了靠写代码,登上了胡润财富榜!


看到这里,相信大家也都好奇这位编程大佬的的成长经历和成神之路。


究竟是怎样一个环境和经历才能造就今天的楼教主呢,今天这篇文章我们就来好好聊一聊。


0x01


1986年,楼天城出生于一个知识分子家庭,父母均为教育工作者,这样的家庭环境为他提供了良好的学习氛围。


尽管童年时期的他并未直接接触到计算机编程,但楼天城却展现出了对数学和逻辑的浓厚兴趣。


楼天城的理科思维十分敏捷,甚至在踢球时,也会计算战术中的各种概率,展现了他对细节的极致追求,这也为他日后的编程之路奠定了坚实的基础。


楼天城高中毕业于杭十四中。


众所周知,这是一所具有悠久历史的百年名校,位于美丽的西子湖畔,同时也是浙江省一级重点中学。



在进入杭十四中后,一次偶然的机会,楼天城加入了学校的计算机兴趣小组,从此开启了与编程的不解之缘。


在短短三个月内,他凭借自学,就在全国青少年信息学联赛(浙江赛区)中脱颖而出,荣获一等奖,这标志着他在编程领域的初步成功,也点燃了他对计算机和编程的巨大热情。


而这,只是他成绩的开端。


0x02


高中时期的楼天城由于竞赛成绩十分优秀,因此也成功保送进入清华大学计算机系,并在后来加入由图灵奖得主姚期智院士领导的清华计算机科学实验班(俗称“姚班”),并成为姚班的首届学生之一。



姚期智先生是世界著名的计算机科学家,唯一的图灵奖华人得奖者;而姚班则是中国乃至全球顶尖的计算机科学人才培养基地。


在这里,楼天城不仅系统学习了计算机科学的基础理论,更是参加了各类编程竞赛,成为校园内的传奇人物。


本科期间,楼天城以其深厚的编程功底和卓越的思维能力在各类竞赛中大放异彩,经常以一人单挑一个队,并且曾多次带领团队获得国内外编程竞赛的冠军,在ACM等编程竞赛界可谓是无人不知、无人不晓,因此也获得了“楼教主”的称号。


本科毕业以后,楼天城选择继续留校读博,并且继续师从姚期智院士。


在这个阶段,楼天城接受了更为严格的学术训练和前沿的科研指导。


在博士阶段,楼天城前期做的偏向theoretical computer science(理论计算机科学),后期偏向Social Network。


这个阶段的积累,为他日后的科研和创业之路打下了坚实的基础。


从高中到本科到读研,回顾楼天城的竞赛经历,可以说堪称传奇。
从高中开始,他几乎每一年都能拿到有关数学或者计算机方面的奖。


而且楼天城的竞赛经历几乎囊括了国内外所有重要的编程赛事,每一次参赛都留下了令人瞩目的成绩。


从高中时期的全国青少年信息学竞赛,到国际信息学奥林匹克竞赛(IOI)金牌,再到Google全球编程挑战赛冠军,楼天城用一次次胜利证明了自己的实力。


尤其是TopCoder,楼天城曾连续11年蝉联TopCoder中国区冠军,并且两次获得谷歌全球编程挑战赛冠军。


这些竞赛经历不仅锻炼了楼天城的编程能力和团队协作能力,更为他日后的职业发展奠定了坚实的基础。


0x03


毕业后的楼天城,职业生涯开始于谷歌,曾在谷歌总部从事社交网络和机器学习相关问题的研究。



2016年,楼天城受邀加入了百度美国研发中心,并且与当时的百度自动驾驶部门首席架构师彭军一起参与百度无人车和自动驾驶技术的研发。



在百度的工作期间,楼天城致力于自动驾驶相关技术的研究,同时他凭借卓越的技术实力和丰富的经验,也成为了百度历史上最年轻的T10工程师。
这段经历不仅加深了他对自动驾驶技术的理解,也让他看到了自动驾驶技术改变未来出行的巨大潜力,更是为即将到来的创业埋下了伏笔。


在百度工作了一段时间后,楼天城选择了从百度离职,并且与同时离职百度的首席架构师彭军一起创业,创立了自动驾驶创业公司小马智行。


至此,小马智行正式诞生



公司成立以后,彭军担任小马智行首席执行官,负责公司总体事务,而热爱技术和编程的楼天城则担任小马智行首席技术官,主要负责技术研发。


而且小马智行的初创团队成员不少都是楼天城曾经在竞赛中认识的朋友,或者是因其名气而慕名加入的。


楼天城作为公司的CTO,亲自参与了自动驾驶相关技术的设计与测试,带领团队攻克了一个个技术难题,推动小马智行的自动驾驶技术不断向前发展。



小马智行自成立之日起,就以其技术实力和前瞻性市场布局迅速成为了自动驾驶领域的佼佼者。而经过这几年的发展,如今的小马智行已经成为自动驾驶领域的领军企业之一。



0x04


回顾楼天城一路走来的成长经历:


从中学时期对编程的兴趣出露,到大学成为一个顶尖算法竞赛选手,再到研究生期间从事理论计算机等研究,最后再到走向业界与创业。


虽说这个过程充满了传奇色彩,但其中也不乏兴趣务实长期主义,以及坚持


楼教主曾说:


要学习认识你自己,了解什么样的事情会让自己开心,爱好就像一个多臂老虎机,要每个臂多拉几下才能知道自己的兴趣所在。


的确,像楼教主这样,在前行的路上找到自己所热爱的事业,并为之全力奔赴,这是一件何其幸运的事情。



注:本文在GitHub开源仓库「编程之路」 github.com/rd2coding/R… 中已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。



作者:CodeSheep
来源:juejin.cn/post/7447103424360349732
收起阅读 »

87年,37岁,脱下孔乙己的长衫,我开了家一人公司。

你好, 我是微笑哥。在职场做了 10 年的程序员,从 Java 开发做到研发副总,离职前带领着100+的研发队伍。19年开启自由职业,全世界一边旅行一边工作,2020年回西安创业,换了3个客厅2个办公楼走到今天。这中间,真的是脱了几层皮,从一名少年成为现在的沧...
继续阅读 »

你好, 我是微笑哥。
在职场做了 10 年的程序员,从 Java 开发做到研发副总,离职前带领着100+的研发队伍。
19年开启自由职业,全世界一边旅行一边工作,2020年回西安创业,换了3个客厅2个办公楼走到今天。
这中间,真的是脱了几层皮,从一名少年成为现在的沧桑大叔。借着这个日子,和大家聊聊我的经历。


1


毕业即失业

去流水线感悟人生


我大学学的是信息与科学,是一个没有对口就业的专业,我的同学各凭本事分布在各行各业。

大学玩了4年,到大四我慌了,我没背景也没能力,真不知道未来怎么走,只能疯狂去面试。

当时在宝鸡上的大学,大四上半年全部时间都去西安面试,2个月时间面试了几十上百家,最后入职了一家炒股软件公司。

说是储备干部,其实就是销售,去各个证券交易所里面找人要电话号码,然后邀请去公司做活动买软件。

这不是我想要的工作,年前快放寒假的时候辞职了,没有底薪只有提成,一分钱没有拿到回学校了。

临近过年,更着急了。

那个时候老大在比亚迪工厂,于是想去深圳看看有没有就业机会,于是坐了20多个小时火车来到深圳。

求职无果后,入职了比亚迪流水线车间,车间里面做了一周时间,差点和车间主任干起来了,工作是给硬纸板打孔很危险,墙上到处是事故照片,没有指头的那种,想了想还是辞了。

我在富士康工厂,周边环境

临近过年总不能空手回家吧,又去了富士康观澜的物流部,不说有多辛苦好歹扎扎实实工作了2个月。

人生真的很神奇,我去的那个厂子就是富士康当年十几跳的第一跳,我刚去就有工友给我说前几天有人跳楼了。

那是09年,我人生第二次在外地过春节;第一次是06年被我兄弟骗到传销组织安徽阜阳,被限制自由了28天。

而最夸张的是,我有个很铁的朋友,妹妹被骗到传销组织中,中间我竟然还请了2周假,想办法把他妹妹从传销组织搞了出来,不过那就是另外一个故事了。

总感觉大四那一年,经历了很多事情,很混乱很懵懂也很迷茫,就像青春少年本身就是迷茫一样

我在流水线挥汗如雨的时候,我就只想了一件事情,我一个大学生要在这流水线干一辈子吗,我这大学不是白读了。

于是3月份春暖花开的时候,又回陕西了。



2


误入程序员


人生有时候就是需要一个契机,刚经历的时候没觉得有啥,当把这些都串起来的时候,就成为了人生。

我在大三的时候,突然感觉大学白读了,不学点啥好像又对不起这4年,上课感觉毫无意义工作又不用(我们是数学专业,天天玩高数、微积分)

刚好听说有数学建模竞赛,我就报名了,玩命的学了3个月,我是小组负责编程的那位也是组长,把C语言玩的贼溜。

没想到几个月后也获奖了,好像是省级二等奖,上图左下方那个人就是我,在学校宾馆小组3天3夜写一份论文出来。

让我对程序有了启蒙,毕业的时候也不是没有找过程序员岗位,但都是简历投递出去没有人回复的状态。

但也一直有关注,知道程序员有培训这么一回事,也知道程序员工资蛮高的,但有一定的门槛。

从深圳回来后,我下定了决心学软件开发,计划做一名程序员。

本来去咨询培训C语言、C++的,结果跑了一圈都说 Java 好就业,就最后选择了培训 Java。

找我姐借了1万元(我大学四年,学费也是借的)。

去银行取钱的那一天,我抱着1万元在柜台业务员的注视下,数了好多遍,那是我第一次见这么钱(09年)

培训班的事情就不说了,从刚开始的二指禅敲键盘,以及对 Java 一无所知,不过培训班氛围不错都是大四学生,有不会的大家都相互帮助。

培训班期间某次团建

我在编程这方面还是有点天赋的,很快到毕业的时候,已经给同班其他人讲编程了。



3


入职2周就被辞退了。


培训班会推荐几个公司,我是第一批推荐名单里的,很快就拿到入职的 Offer 了。

对比了一下,选择当时李嘉诚儿子的一家公司,是港企。

确实不一样,入职先培训一个月再上岗,那一批入职了18个人,其中就有我们培训中的5个人。

当时心态还是学生状态, 做出成果之后也不主动汇报,一个人坐在角落里面瞎捣鼓。

2周后,我被辞退了。

给我姐打电话的时候,我姐说,关键18个人里面仅仅辞退了2个人,就有你


可能当时也不服气吧,憋着一股劲投了几十家公司,最后被华为的外包公司录取了,人力外包直接到华为公司上班。

一个月工资,1800元。

当时华为比较正规,平时加班有加班费,周末加班双倍工资,于是我疯狂加班,一个月工资3000+。

外包是学不到东西的,虽然领导对我都很不错,入职几个月竟然又搞起了C++编程。

第一份工作,小巴组集体去团建

我一想花1万学的Java不就白费了,而且 Java 未来的就业更广阔一点,我不能就这样走弯了。

9个月后,离职,又找了一家港资,做电信业务,工资4000。

在这家公司,我遇到了人生最好的几个朋友,Jerry、鸽子、不会笑,我们四个人一起入职。

Flyever户外组织,秦岭某个地方

在这家公司和鸽子、不会笑,还创建了一个户外组织 Flyever,其实就是组织一群年轻人去山里玩。

几乎每周都有活动,不是吃饭喝酒唱歌通宵,就是半夜4、5起床去爬山游水,度过了人生中最快乐的一个阶段。

也和Jerry、鸽子、不会笑建立起来了革命友谊,我们四个后来在创业的路上有过多次交集。

在这家公司工作了1年半,从一个初级Java工程师开始做起,走的时候已经可以独立负责一个项目了。

当时又有一个契机

我妈要在老家盖房,我给了2万还不够,又借了亲戚大概十几万,我想了想我这4000的工资。

除去日常花销,要还多少年呀?

听说我们一个同事去了北京工资1万,我同事说那个人技术水平还没有我高,说者无心听者有意。

当年 Jeryy 也要去北漂,他想创业,我说那一起吧。

一起就一起。



4


北漂7年。


他比我早一周到北京,找了一家做 OA 的公司。

那个时候,北京的分钟寺还没拆,一个巨大无比的城中村,我当时拿了3000元,租房一个月1000。

刚去北京第二天,在鸟巢留念

我用了一周时间,拿到了4个Offer。

印象中北京的风是真大,能把我吹上天,当时还用的是小米1,一接电话就死机,耽搁了我好多事。

最高的一家给了1.3万,不过我当时目标很明确,只进互联网公司,1万的月薪入职了一家第三方支付公司。

其实我北漂7年,几乎可以说就在这一家公司干了。


2013年,那真是一个波澜壮阔的时代,也是移动互联网的时代,更是万众创业的时候。

我们公司就在中关村创业一条街附近,当时还叫海淀图书街,因为创业氛围太过浓烈,后面才改名叫做创业街。

Jeryy想创业,我们几乎跑遍了这条街的所有咖啡馆,车库咖啡、3W咖啡等等,周末点上一本咖啡坐上一整天。

一起想创业的点子,一起开发程序做Demo,写商业策划书去融资,刚去的1年,我几乎没有任何空余时间。

失败是必然的。

Flyever,被我带到了北京

组建了一个叫做陕西人在北京的

继续组织爬山、吃饭、唱歌、喝酒

不过,我工作的那家支付公司1年后迎来了一个契机。

当时互联网金融大行其道,我们作为第三方支付公司,董事长旗下还有不少其它业务需要融资。

于是决定要做一个互联网借贷平台,当时称P2P,我们的模式是B2P,企业向用户借钱,给用户利息。

刚开始是一个百度过来的高管负责,也是清华大学毕业的,结果干了半年后,这名高管自己创业了。

团队也被带走了,技术开发就剩了一个人。


我的领导的领导的领导,临危受命要把这项目接下来,但是找不到合适的人选来负责落地。

我们那一批来不少人,但大部分技术高手1年后都离职了,我其实也刚好找到了外部的工作。

领导说让我接手,我说可以呀,得涨工资,领导说行,那就我干了。

领导说,可以让我在部门调两个人过去,我选择了一个实习生,一名年轻有潜力的程序员。

就这样把这个项目接了起来。


一个月后项目上线,当天融资了1000万;但没过多久,一天的融资能力就变成了好几个亿。

项目成了,从一个项目组变成集团的一个子公司。

3年时间,

我就从一个项目组长,变成了技术经理、部门经理(测试、运维都管),再到公司的技术负责人。

2015年,北戴河团建
生命不息,奋斗不止!

互联网金融真是一个疯狂的年代,是我人生中最忙的一个阶段,也是我成长最为迅速的一个阶段

早上第一个来公司,晚上也几乎是最晚离开,23点之前没有离开过公司,有一次下班出车祸也就隔了一天又去上班了。

因为所有的事儿,都是必须我来扛。


16年,

也就是那个时候,我觉得应该把我段人生经历记录下来,特别是在互联网金融公司工作的那些事。

太好玩了。

高并发、大数据、微服务、分布式、黑客攻击、黑客勒索等等,我们又用的是市面上最新的技术栈,遇到了很多很多问题,也解决了很多很多问题。

我想要有一个窗口和技术人交流。

就到博客园写文章,没想到写一篇火上一篇,1年的时间,我就成为博客园推荐博客排名前10。

老版博客园的推荐博客列表

也写了一些开源项目,Github关注数量中国排名前50。

1年后,开通了个人公众号纯洁的微笑。


2017年,因为母公司要上市,我们被卖给了海淀国资委,公司的风格一下子就变了。

于是,我离职又重新去了母公司。

从这个互联网金融公司离开时

团队瞒着我,送了一个全体签名的短袖


从一名架构师开始做起,负责公司新支付系统的大数据平台建设,处理每天几十亿交易数据。

半年后,连跳3级被提拔为研发副总,当时研发事业部已经有超过100+的研发人员。

我只负责一个事情,把公司研发的第四代收单平台,推动上线迁移替换旧的收单系统。

中间又是遇到了 N 多的事情,除了技术问题之后,在高管的位置上自然有其它是非在其中。

有时候,你不站队也是一种站队。


18年,萌生去意,但老领导们提拔我不容易,至少要有知遇之恩,又咬着牙坚持了1年。

2018年,上海出差

19年,研发中心出现一次事故,借此就离开了。

19年离职的时候,我的副业自媒体收入早已经超过了主业,收入这方面倒也不是很在乎。

只是那个时候,也有别的互联网公司开出年薪百万工资挖我去做技术总监,当然了也是和支付相关的。

那我就面临人生一个最重要的选择,继续在北京互联网公司做高管,还是尝试一个人做点事情。

其实也没太多纠结,因为上班确实上够了。

从09年开始培训到19年离职,我的每一份工作和上一份工作都是连着的,10年时间没休息过。

HR劝我的时候,我说你觉得我现在创业风险大,还是几年后创业风险大,HR说应该是几年后吧。

我说,那就对了。



5


自由职业


离职之后,我就成为自由职业了。

那个时候,我还不敢对外说是创业,毕竟在我的印象中,创业应该是一件蛮大的事情了。

那个时候,我只能养活自己。

在离职之前,公司在美国有一个业务,需要派别人过去,我当时也申请了,顺势办理了美国10年签证。

于是,离职第一件事,搬家。

从三环边搬到五环旁,先改变自己的居住环境,毕竟自由职业要在家里上班的。

第二件事情,就是到处溜达,当然也包括美国。

现实自驾草原天路,再是北海道那一带,然后就是环京大环线,还在深圳附近自驾来半个月。

感觉还是不过瘾,又去美国旅游了一个月,从东海岸到西西海岸,从黄石公园到约书亚树国家公园。

2019年,纽约时代广场

所以,自由职业的头一年,大概就是不断的旅游,不断的折腾自媒体事业。


不过,从美国回来之后,让我意识到了一件事。

好像出国旅游花不了多少钱,既然是这样,何不计划一下环游世界,我从来都是一个说干就干的人。

要环游世界,那就要把英语学好,也要把北京的房子退了(一个月租金6500,几乎一半时间都空着)。

当时的计划是这样的。

第一步,把北京房子退了,东西都打包回老家。

第二步,在菲律宾报了一个语言学校,3个月先把英语给学扎实了,并且要拿到托福证书。

第三步,西安去亚洲,再去新西兰澳洲,最后环游欧洲,欧洲走完了再说后面的人生计划。


如果不是当初的那一场疫情,还不知道现在我在世界的哪个角落呆着,不知道从事着什么样的工作?

谋事在人,成事在天!



6


回到西安,创业


2019年,春节。

行李均已经邮寄到了老家,我从北京回到西安,准备在西安待上几天见见老朋友回家过春节。

当时菲律宾签证已经搞定,菲律宾当地的学校也联系好了,就连定金也给学校交了。

同时日本、新西兰的签证也办理好了。

一切静等在老家过完春节,开启自己环游世界的人生。


我在西安计划住5天,到了第3天就从新闻上传出,武汉那边好像出了一点事情,而且有蔓延的趋势。

到第3天,我看趋势不太对,没有坐班车,就打车直接回老家了。

在老家整整呆了6个月,这应该是我毕业以后,在老家呆过最久的一段时间了。

在老家的年轻人,也都陆陆续续回城市工作了,村里面的老大爷老大哥问我,你怎么还不走。

我是闲不住的人,既然环球旅游无望了,那就踏踏实实创业。

到西安后,就申请创建了公司。

在淘宝上,花了 600 元买了一个很大的黑色桌子,放在了客厅,作为办公桌,我坐这边,不会笑青年坐对面。

就这样开启创业了。


1月后,又搬到了不会笑青年家的客厅。

2020年,不会笑青年家的客厅

在他们小区可以打乒乓球,于是每天下午3点,无论夏日还是寒冬,我们都准时下去和老大爷抢场地打乒乓球。

1年后(2022年),不会笑青年要结婚,又搬到我新装修的房子客厅办公,顺势又把团队从2个人扩展到4个人。

公司变成了4个人。

集团活动从乒乓球又变成了羽毛球,于是4个人每天下午3点,又准时去小区打羽毛球。

这一打又是1年。


到了2023年,AI爆发。

我们觉得这是未来的大趋势,公司的整体发展方向全部转向AI,于是创建了 AI 俱乐部星球。

AI俱乐部用户已高达800人,AI俱乐部社群的推出

代表公司全部转向AI创业,后面的业务都和AI有关系。

2023年7月,又把公司从西安东北角搬到了西南角的高新区,终于有了一个相对正式的办公室。

搬家有两方面的原因:

一方面,不会笑青年当时住高新,来回通勤的压力很大;另一方面,想找一个办公楼方便后续招聘扩张。


搬家1个月后(2023年9月),掩体来西安旅游。

带来了AI变现训练营这个项目,我们当时测试了一下,一个月的时间80%的人可以月入过万。

那还有什么说的,全力 All in 继续搞!

又1年后,这个项目越做越大,团队规模又翻了一倍,从最初的4个人变成了8个人。

原来的办公司又坐不下了。

2023年,第一次搬到写字楼办公,在这个小办公室里面,加了N多次班。

今年7月,又重新租下了现在的办公室,也就是视频开头我拍摄的那个办公环境,可以容纳12人。

现在的这个办公室,才真正有点像一家公司的样子,在这之前我们都是草根游击队。

未来,公司能够发展多大,能够赚多少钱?已经不是我第一关心的事情了,更关心的是有没有更享受创业的这个过程。

从来没有想过要做多大的一个公司,一直想的是怎么做一个小而美的公司,有激情有奋斗有冲劲但又不是那么忙。

当然了,现在还差很远,还在既苦逼又享受的那个阶段。


人必有痴,而后有成,痴于物,而成于心。

09年到24年,

眨眼间,已经过去了15年,最大的感慨就是,人如果真要做成一件事,是不容易的。

特别对于我们这种出身贫穷的普通人。

每一步都不能错,错了就没有回头路能走,能够帮你的人永远只有你自己而已。

当然除了下苦功夫努力,也需要机缘更需要运气和贵人,才能让努力可以开花结果。

我特别喜欢一段话,作为这篇文章的结尾:

北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也,怒而飞,其翼若垂天之云


作者:纯洁的微笑
来源:mp.weixin.qq.com/s/TBlJdOfzDCYDZ9NQVcTneQ
收起阅读 »

极狐 GitLab 双重风波,Git 私服该如何选择?

极狐 GitLab 的双重风波 (一)间谍风波 前两天,极狐 GitLab 陷入了员工实名举报公司高管为美国间谍的漩涡之中。这一事件犹如一颗重磅炸弹,在业界引起了轩然大波。尽管目前尚未被实锤,但此消息一经传出,便迅速吸引了众多目光,也让极狐 GitLab 的企...
继续阅读 »

极狐 GitLab 的双重风波


(一)间谍风波


前两天,极狐 GitLab 陷入了员工实名举报公司高管为美国间谍的漩涡之中。这一事件犹如一颗重磅炸弹,在业界引起了轩然大波。尽管目前尚未被实锤,但此消息一经传出,便迅速吸引了众多目光,也让极狐 GitLab 的企业形象蒙上了一层阴影。这一事件不仅引发了内部员工的震动,也使得外界对其公司的信任度产生了动摇,其后续发展仍有待进一步观察。


(二)绝户网计划


就在今天早上,极狐 GitLab 的 “绝户网计划” 也浮出水面。据爆料,极狐 GitLab 要求销售人员在与使用 GitLab CE(社区版)免费版的用户交流时,引导用户明确表达正在使用免费版,并将此作为证据存档,以便未来可能的发函或起诉。 从其告知函来看,极狐 GitLab 强调其核心产品 GitLab 受法律保护,指出用户涉嫌未经授权使用软件,违反相关法律法规。公司内部对此计划也存在分歧,部分销售和技术同事反对,认为这会得罪潜在客户,影响长期生意,但公司高层却决定推行,寄希望于小部分害怕被起诉的用户付费来提升今年业绩。此计划引发了广泛争议,因为 GitLab 的免费版在全球范围内被大量程序员使用,且一直以来被认为是可商用的,这一举措无疑打破了以往的认知,让许多用户感到不满和担忧。



告知函内容如下:



GitLab 替代品分析


巧合的是,前不久我刚好对 GitLab 私服替代品进行了一波调研,同时成功将 GitLab 仓库迁移到新的仓库中,这次正好分享一下替代品的优缺点。


(一)Gitea



  • 优点

    • 轻量级:资源占用较低,对于硬件配置要求不高,适合小型团队或个人开发者在有限资源环境下搭建 Git 私服。

    • 功能较为完善:能够满足基本的代码托管、版本控制、分支管理等常见需求,支持多种主流操作系统的部署。

    • 社区活跃:有大量的开发者参与社区贡献,遇到问题时能够在社区中较快地获取解决方案和技术支持。



  • 缺点

    • 在大规模团队协作和复杂项目管理场景下,一些高级功能可能相对薄弱,例如在代码审查流程的精细化管理方面不如一些大型商业 Git 工具。

    • 与一些大型企业级工具相比,其集成能力可能稍逊一筹,在与其他企业内部系统如 CI/CD 平台、项目管理软件等的深度整合上存在一定局限性。

    • Gitea 的域名和商标在社区不知情、未经社区批准的情况下被转让给一家营利性公司,有一定开源风险。




(二)Gogs



  • 优点

    • 易于安装和使用:安装过程简单,即使是技术基础相对薄弱的用户也能快速上手搭建自己的 Git 私服。

    • 性能表现不错:在处理中等规模的代码仓库和团队协作时,能够保持较为稳定的运行速度和响应效率。

    • 界面简洁:对于注重简洁操作界面的用户来说,Gogs 的界面设计较为友好,易于操作和管理。



  • 缺点

    • 功能扩展性相对有限:虽然基本功能齐全,但在面对一些特殊需求或新兴技术场景时,可能难以通过插件或扩展机制快速实现功能增强。

    • 社区规模和活跃度不如一些头部的 Git 工具,这可能导致在长期发展过程中,功能更新和问题修复的速度相对较慢。




(三)OneDev



  • 优点

    • 强大的项目管理功能:除了基本的 Git 代码托管功能外,OneDev 在项目管理方面表现出色,提供了丰富的项目进度跟踪、任务分配、团队协作等功能,适合以项目为导向的团队使用。

    • 支持多语言:能够很好地适应不同语言环境下的开发团队需求,方便国际化团队协作。

    • 可定制性强:用户可以根据自己团队的特定需求,对 OneDev 的功能和界面进行一定程度的定制,以提高工作效率。



  • 缺点

    • 学习成本相对较高:由于其功能丰富且较为复杂,新用户需要花费一定时间来熟悉和掌握其操作流程和功能配置。

    • 部署相对复杂:相比一些轻量级的 Git 私服工具,OneDev 的部署过程需要更多的配置和环境依赖,对于运维人员的技术要求较高。




(四)GitBucket



  • 优点

    • 与 GitHub 风格相似:对于熟悉 GitHub 操作的用户来说,GitBucket 的界面和操作方式具有较高的相似度,降低了用户的迁移成本。

    • 支持多种数据库:可以灵活选择数据库类型,如 MySQL、PostgreSQL 等,方便根据现有技术架构进行整合。

    • 插件丰富:提供了大量的插件来扩展其功能,例如代码质量检测、代码统计等插件,能够满足不同团队的多样化需求。



  • 缺点

    • 性能优化方面可能存在不足:在处理大规模代码库和高并发请求时,可能会出现性能瓶颈,需要进行额外的性能调优工作。

    • 社区文档相对不够完善:在一些复杂功能的使用和问题排查上,由于社区文档的不全面,可能会给用户带来一定困扰。




(五)Gitblit



  • 优点

    • 专注于 Git 核心功能:对 Git 的核心功能支持得非常稳定和高效,如代码托管、分支管理、权限管理等,适合那些只需要基本 Git 功能且追求稳定性的团队。

    • 轻量级且资源占用少:在硬件资源有限的情况下,能够稳定运行,不会对服务器资源造成过大压力。

    • 安全性能较高:提供了较为完善的权限管理和安全机制,能够有效保护代码仓库的安全。



  • 缺点

    • 功能相对单一:缺乏一些现代 Git 工具所具备的高级项目管理和团队协作功能,如敏捷项目管理工具集成等。

    • 用户界面相对简陋:在美观度和交互体验上不如一些新兴的 Git 私服工具,可能会影响用户的使用感受。




Forgejo 的选择理由


经过个人调研和综合考量,最终选择了 Forgejo 替代 GitLab。Forgejo 是 Gitea 的一个硬分叉,它继承了 Gitea 的所有优点,如轻量级、功能完善、社区活跃等。同时,Forgejo 还具有自身独特的优势,其界面美观,给用户带来了良好的视觉体验;部署简单,降低了迁移成本和技术门槛,即使是非专业运维人员也能轻松上手;加载速度快,能够提高团队成员的工作效率,减少等待时间。


在迁移项目时,可以参考我之前写的迁移教程:



综上所述,个人认为 Forgejo 在应对极狐 GitLab 近期风波所带来的不确定性时,是一个较为理想的 Git 私服替代品。


相关资料



作者:子洋
来源:juejin.cn/post/7446578471901626420
收起阅读 »

面试了一个45岁的程序员,他要月薪2万,我同意了。结果面试完送他到电梯口,他说14薪月薪1.8万也行。

电梯口最后的那句话,让我整整失眠一夜。震惊!昨天的一场面试,让这个面试官陷入深深的自我反思。作为一个互联网公司的技术总监,8年来面试过上千名候选人,但这次经历让面试官久久不能平静,甚至彻夜难眠...在BAT大厂干了12年技术管理,面试过形形色色的程序员。有意气...
继续阅读 »

电梯口最后的那句话,让我整整失眠一夜。


震惊!昨天的一场面试,让这个面试官陷入深深的自我反思。作为一个互联网公司的技术总监,8年来面试过上千名候选人,但这次经历让面试官久久不能平静,甚至彻夜难眠...


在BAT大厂干了12年技术管理,面试过形形色色的程序员。有意气风发的应届生,有经验丰富的大牛,有从外企跳槽的专家,但从没有一次面试像这次一样,让我感受如此复杂,如此揪心。


昨天下午3点,一个穿着深色格子衬衫的中年人准时出现在会议室门口。他个子不高,微微有些谢顶,背着一个看起来有些年头的双肩包。包的肩带有些磨损,但被主人仔细地缝补过。


"您好,我是来面试Java开发岗位的。"他的声音透着一丝紧张,手里紧握着一份打印得整整齐齐的简历。


看了看简历,我心里一惊 —— 45岁,20年开发经验,科班出身,Java后端出身,精通分布式架构,曾经在几个知名公司待过,技术栈相当扎实。"这么资深为什么还在找工作?这个年龄段找工作会遇到什么困难?"我心里冒出一连串疑问。


面试正式开始。我们聊了他最近在研究的技术领域,他说起SpringCloud微服务架构时,眼睛里闪烁着光芒:"最近我在研究服务网格,看到社区有个问题,还提了个PR..."


当我抛出一个个技术难题,他的回答让我眼前一亮。Spring源码分析、JVM调优、分布式架构设计、性能优化经验...每个答案都精准到位,不仅能说出理论基础,更难得的是能结合实际场景,说出各种坑的实践经验。这绝对是一位技术大牛!


面试中他提到一个有趣的细节:"有次生产环境遇到一个诡异的Bug,年轻同事们试了好多方案都没解决。我凭着多年经验,想起12年前遇到过类似问题,最后找到根源是JVM的一个默认参数设置有问题..."


就在我准备问收入预期时,他的手机响了。他有些慌乱地掏出手机,看了一眼赶紧按掉:"对不起,是我女儿的电话,她今天考试..."我注意到他手机屏幕上的裂痕和掉漆的边框。


"您期望的薪资是多少?"问到这个问题时,他略显犹豫,目光有些闪躲。


"如果可以的话...希望月薪2万。"他的声音有点发抖,"我知道可能比市场价低一些..."


2万?我愣住了。以他的技术水平和经验,在深圳互联网公司要个35k-40k一点问题都没有。难道是我听错了?记得上个月刚招的一个3年经验的小伙子,谈价时底气十足地要价25k,最后我们也给了。


"您确定只要2万吗?以您的能力和经验..."


"是的,我觉得够用了。"他打断了我的话,语速突然变快,"主要是想找一个稳定的工作环境。现在这个行业...您也知道...我的年龄...其实能有工作机会我就很感激了。"


看着他局促不安的样子,我决定不再讨价还价:"好的,2万没问题,我们这边非常认可您的能力。"


他的眼睛一下子亮了起来,露出欣慰的笑容,甚至有些激动:"真的非常感谢!我一定会好好干,加班什么的完全没问题,我身体很好的,每天都在坚持跑步..."


面试结束后,按惯例我送他到电梯口。看得出来他心情不错,脚步都轻快了许多。


就在电梯门快关上的瞬间,他突然回头说了一句话:"其实...如果是14薪的话,月薪1.8万也可以...我就是希望能有个稳定的岗位..."


那一刻,我的心狠狠地揪了一下。电梯门缓缓关上,我却久久站在原地。


回到办公室,我的脑海里一直回荡着他说的那句话。打开电脑,我忍不住搜索了一下"中年程序员"这个话题。一篇篇文章像刀子一样戳着我的心:"35岁程序员职业危机"、"互联网公司青睐年轻人"、"中年程序员如何自救"...


原来在这个年轻人主导的互联网行业,45岁居然已经被贴上"高龄"的标签。这个数字像一道无形的门槛,挡住了多少技术大牛的职业发展之路?


想起面试时的细节:问到加班时,他特别强调自己的抗压能力,说周末随叫随到,身体素质一点问题都没有。一个45岁的技术大牛,却要用"随叫随到"来证明自己的价值...这句话背后,是多少无奈和妥协?


这个行业太狂热地追逐年轻,以至于忽视了经验的珍贵。 那些深夜里背后的debug经历、重重坑里趟出来的实践经验、危机时刻的临危不乱,都是年轻人用996都换不来的宝贵财富。


我开始回想他说过的话:"现在的新技术学起来也很快,我每天都在看技术博客,Github上的开源项目也一直在关注..."这句话背后,是多少个加班后的深夜自学时光?是多少个被质疑"老了学不动"后的倔强证明?


突然想起去年一个深夜,生产环境出现重大事故,年轻员工们手忙脚乱,是一个45岁的老程序员站了出来,凭着多年经验在半小时内定位到问题。那一刻,我就明白了什么叫"经验的价值"。


我立刻给HR打了电话:"这位候选人非常合适,请按2万月薪给offer,年终奖至少3个月。对了,入职后把他安排到王工组,让他带带新人。"


与其花20万培养一个年轻人踩坑,不如用同样的钱留住一个踩过无数坑的技术专家。 这不仅是对团队负责,更是对整个行业的价值观负责。


今天早上,我收到了他愉快的入职确认。想起昨天电梯口那一幕,我暗暗发誓:一定要让团队里的每个人,不分年龄,都能被公平对待,都能实现自己的价值。


也许有一天,当我也到了45岁,也会面临同样的困境。但我希望到那时,整个行业都能多一些包容,少一些偏见。技术,永远不该被年龄定义。


朋友们,你们觉得技术行业真的存在"年龄歧视"吗?在你心目中,技术人的黄金年龄是多少?欢迎在评论区分享你的想法和经历。


PS:今天我特意找物业,把他的停车位安排在了地下车库最方便的位置。这或许是我能做的,最微小但也最真诚的关照了。


PPS:刚才和CTO聊了这事,我们决定在公司推动一个"经验导师"计划,专门邀请一些资深程序员来做技术分享。毕竟,程序员的价值,不应该用年龄来衡量。


为什么他愿意主动降薪?


他的降薪行为背后,藏着许多深层次的职场逻辑。


1. 现实的自知之明


45岁,对于程序员来说已经算是“高龄”。在互联网行业,35岁被称为“职场分水岭”,他显然很清楚自己的处境。


他主动降低薪资,是在用“性价比”消除我的顾虑,同时也为自己争取更多的机会。


2. 对稳定的渴求


从简历上看,她的职业生涯很稳定,前一份工作待了十几年。这种“稳定感”不仅是他的一种职场标签,也是他的核心诉求。对于45岁的他来说,找一份能长期发展的工作,远比短期的高薪重要。


3. 一种不显山露水的智慧


他看似是退让,实际上是在“示弱”中展现了自己的诚意。他让招聘方觉得,他不是一个只谈薪资、不顾团队的人,而是愿意为公司利益妥协的合作者。这样的沟通方式,比硬碰硬的谈判更容易让人接受。


高龄程序员的职场困境与价值


他的故事,让我重新思考了“高龄程序员”在职场中的价值和困境。


1. 困境:行业的无情现实


  • 技术更新速度快,高龄程序员容易被贴上“跟不上时代”的标签。

  • 用人成本高,很多企业更愿意选择年轻且“便宜”的新人。

  • 体力和精力相比年轻人有劣势,难以适应高强度加班文化。


2. 价值:丰富经验不可替代


  • 高龄程序员的优势在于对复杂系统的理解能力,这种能力并不是通过短时间学习能掌握的。

  • 他们往往有很强的团队协作能力,能起到“传帮带”的作用。

  • 稳定性和责任感是他们的职业标签,尤其适合对稳定性要求高的岗位。


这次面试经历让我明白了两个道理:


  1. 职场不是简单的年龄比较,而是价值的体现。
    他虽然45岁,但他的经验和态度是团队里稀缺的宝藏。年轻人的速度和创造力,和老员工的稳定与深度,是互补关系,而不是对立关系。


  2. 谈判不是赢输,而是双赢。
    他的降薪行为,并不是单纯的退让,而是一种职场智慧。他通过主动示弱,换来了更多的机会,也打消了用人方的顾虑。


朋友们,你们对高龄程序员怎么看?你是否愿意为团队引入一个经验丰富但年龄偏大的同事?欢迎在评论区分享你的看法!


作者:小乐

来源:编程技术圈

收起阅读 »

买了个mini主机当服务器

虽然有苹果的电脑,但是在安装一些软件的时候,总想着能不能有一个小型的服务器,免得各种设置导致 Mac 出现异常。整体上看了一些小型主机,也看过苹果的 Mac mini,但是发现它太贵了,大概要 3000 多,特别是如果要更高配置的话,价格会更高,甚至更贵。所以...
继续阅读 »

虽然有苹果的电脑,但是在安装一些软件的时候,总想着能不能有一个小型的服务器,免得各种设置导致 Mac 出现异常。整体上看了一些小型主机,也看过苹果的 Mac mini,但是发现它太贵了,大概要 3000 多,特别是如果要更高配置的话,价格会更高,甚至更贵。所以,我就考虑一些别的小型主机。也看了一些像 NUC 这些服务器,但是觉得还是太贵了。于是我自己去淘宝搜索,找到了这一款 N100 版的主机。


成本的话,由于有折扣,所以大概是 410 左右,然后自己加了个看上去不错的内存条花了 300 左右。硬盘的话我自己之前就有,所以总成本大概是 700 左右。大小的话,大概是一台手机横着和竖着的正方形大小,还带 Wi-Fi,虽然不太稳定。


iowejofwjeofjwoeifjwoe


一、系统的安装


系统我看是支持windows,还有现在Ubuntu,但是我这种选择的是centos stream 9, 10的话我也找过,但是发现很多软件还有不兼容。所以最终还是centos stream 9。


1、下载Ventoy软件


去Ventoy官网下载Ventoy软件(Download . Ventoy)如下图界面


QQ_1727625608185


2、制作启动盘


选择合适的版本以及平台下载好之后,进行解压,解压出来之后进入文件夹,如下图左边所示,双击打开Ventoy2Disk.exe,会出现下图右边的界面,选择好自己需要制作启动盘的U盘,然后点击安装等待安装成功即可顺利制作成功启动U盘。


3、centos安装


直接取官网,下载完放到u盘即可。


QQ_1727625711792


它的BIOS是按F7启动,直接加载即可。


image-20241007222938414


之后就是正常的centos安装流程了。


二、连接wifi


因为是用作服务器的,所以并没有给它配置个专门的显示器,只要换个网络,就连不上新的wifi了,这里可以用网线连接路由器进行下面的操作即可。


在 CentOS 系统中,通过命令行连接 Wi-Fi 通常需要使用 nmcli(NetworkManager 命令行工具)来管理网络连接。nmcli 是 NetworkManager 的一个命令行接口,可以用于创建、修改、激活和停用网络连接。以下是如何使用 nmcli 命令行工具连接 Wi-Fi 的详细步骤。


步骤 1: 检查网络接口


首先,确认你的 Wi-Fi 网络接口是否被检测到,并且 NetworkManager 是否正在运行。


nmcli device status

输出示例:


DEVICE         TYPE      STATE         CONNECTION
wlp3s0 wifi disconnected --
enp0s25 ethernet connected Wired connection 1
lo loopback unmanaged --

在这个示例中,wlp3s0 是 Wi-Fi 接口,它当前处于未连接状态。


步骤 2: 启用 Wi-Fi 网卡


如果你的 Wi-Fi 网卡是禁用状态,可以通过以下命令启用:


nmcli radio wifi on

验证 Wi-Fi 是否已启用:


nmcli radio

步骤 3: 扫描可用的 Wi-Fi 网络


使用 nmcli 扫描附近的 Wi-Fi 网络:


nmcli device wifi list

你将看到可用的 Wi-Fi 网络列表,每个网络都会显示 SSID(网络名称)、安全类型等信息。


步骤 4: 连接到 Wi-Fi 网络


使用 nmcli 命令连接到指定的 Wi-Fi 网络。例如,如果你的 Wi-Fi 网络名称(SSID)是 MyWiFiNetwork,并且密码是 password123,你可以使用以下命令连接:


nmcli device wifi connect 'xxxxxx' password 'xxxxx'

你应该会看到类似于以下输出,表明连接成功:


Device 'wlp3s0' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

步骤 5: 验证连接状态


验证网络连接状态:


nmcli connection show

查看当前连接的详细信息:


nmcli device show wlp3s0

三、VNC远程连接


桌面还是偶尔需要用一下的,虽然用的不多。


root@master:~# dnf install  -y  tigervnc-server
root@master:~# vncserver
bash: vncserver: command not found...
Install package 'tigervnc-server' to provide command 'vncserver'? [N/y] y


* Waiting in queue...
* Loading list of packages....
The following packages have to be installed:
dbus-x11-1:1.12.20-8.el9.x86_64 X11-requiring add-ons for D-BUS
tigervnc-license-1.14.0-3.el9.noarch License of TigerVNC suite
tigervnc-selinux-1.14.0-3.el9.noarch SELinux module for TigerVNC
tigervnc-server-1.14.0-3.el9.x86_64 A TigerVNC server
tigervnc-server-minimal-1.14.0-3.el9.x86_64 A minimal installation of TigerVNC server
Proceed with changes? [N/y] y


* Waiting in queue...
* Waiting for authentication...
* Waiting in queue...
* Downloading packages...
* Requesting data...
* Testing changes...
* Installing packages...

WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream.
Please read /usr/share/doc/tigervnc/HOWTO.md for more information.

You will require a password to access your desktops.

getpassword error: Inappropriate ioctl for device
Password:

之后在mac开启屏幕共享就可以了


image-20241007225855305


QQ_1728313164289


四、docker 配置


docker安装我以为很简单,没想到这里是最难的一步了。安装完docker之后,总是报错:


Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

即使改了mirrors也毫无作用


{
"registry-mirrors": [
"https://ylce84v9.mirror.aliyuncs.com"
]
}

看起来好像是docker每次pull镜像都要访问一次registry-1.docker.io,但是这个网址国内已经无法连接了,各种折腾,这里只贴一下代码吧,原理就就不讲了(懂得都懂)。


img


sslocal -c /etc/猫代理.json -d start
curl --socks5 127.0.0.1:1080 http://httpbin.org/ip

sudo yum -y install privoxy

vim /etc/systemd/system/docker.service.d/http-proxy.conf


[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8118"

/etc/systemd/system/docker.service.d/https-proxy.conf


[Service]
Environment="HTTPS_PROXY=http://127.0.0.1:8118"

最后重启docker


systemctl start privoxy
systemctl enable privoxy
sudo systemctl daemon-reload
sudo systemctl restart docker

QQ_1729956484197


五、文件共享


sd卡好像读取不了,只能换个usb转换器


fdisk -l
mount /dev/sdb1 /mnt/usb/sd

在CentOS中设置文件共享,可以使用Samba服务。以下是配置Samba以共享文件的基本步骤:



  1. 安装Samba


sudo yum install samba samba-client samba-common


  1. 设置共享目录


    编辑Samba配置文件/etc/samba/smb.conf,在文件末尾添加以下内容:



[shared]
path = /path/to/shared/directory
writable = yes
browseable = yes
guest ok = yes


  1. 设置Samba密码


    为了允许访问,需要为用户设置一个Samba密码:



sudo smbpasswd -a your_username


  1. 重启Samba服务


sudo systemctl restart smb.service
sudo systemctl restart nmb.service


  1. 配置防火墙(如果已启用)


    允许Samba通过防火墙:



sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

现在,您应该能够从网络上的其他计算机通过SMB/CIFS访问共享。在Windows中,你可以使用\\centos-ip\shared,在Linux中,你可以使用smbclient //centos-ip/shared -U your_username


QQ_1730035390803


参考:


https://猫代理help.github.io/猫代理/linux.html


stackoverflow.com/questions/4…


作者:wwwzh
来源:juejin.cn/post/7430460789067055154
收起阅读 »

程序员高效能指南:改变命运的 6 个关键习惯

凌晨 3 点,办公室里只剩下屏幕的幽光。又一个被 Bug 困扰的不眠之夜,你是否开始怀疑:为什么同样是写代码,有些人能轻松应对,而自己却总是加班救火?为什么有的同事技术能力突飞猛进,而自己似乎原地踏步? 答案也许不在技术本身,而在于我们的工作习惯。正如斯蒂芬·...
继续阅读 »

凌晨 3 点,办公室里只剩下屏幕的幽光。又一个被 Bug 困扰的不眠之夜,你是否开始怀疑:为什么同样是写代码,有些人能轻松应对,而自己却总是加班救火?为什么有的同事技术能力突飞猛进,而自己似乎原地踏步?


答案也许不在技术本身,而在于我们的工作习惯。正如斯蒂芬·R·柯维在《高效能人士的七个习惯》中所说:"我们看待世界的方式完全取决于我们自己的感知。"今天,让我们从程序员的视角出发,聊聊那些能让你事半功倍的 6 个习惯。


1. 主动积极


在编程的世界里,有两种程序员:被动的和主动的。


被动的程序员总是抱怨外部环境,比如公司制度、项目资源不足,甚至相信看几个“速成教程”就能改变命运。


而主动的程序员则会专注于自己能掌控的事情,比如提升技能、参与开源项目、参加技术竞赛,甚至主动寻找更好的职业机会。


如何做到主动积极?



  • 专注于“影响圈” :不要纠结于那些你无法改变的事情,比如公司政策或市场环境,而是把精力放在你能控制的事情上,比如学习新技术、优化代码质量。

  • 为自己的职业负责:不要等待别人给你机会,而是主动创造机会。比如,定期更新简历、参加技术社区活动,或者尝试新的编程语言。


主动积极的程序员明白,职业发展是自己的责任,而不是外界的恩赐。



2. 以终为始


很多程序员在工作中随波逐流,接到任务就埋头苦干,却从未思考过最终的目标是什么。结果就是,花了大量时间,却发现方向错了。斯蒂芬·柯维提出的“以终为始”理念,强调在开始任何事情之前,先明确最终的目标。


如何在编程中应用这一习惯?



  • 明确项目目标:在开始一个新项目时,先搞清楚最终的交付成果是什么。功能需求和非功能需求有哪些?用户体验的核心是什么?

  • 制定清晰的计划:花 30 分钟规划项目,可以节省 10 小时的开发时间。比如,先需求分析,再决定系统架构,而不是直接开始写代码。


记住,编程不仅仅是写代码,更是解决问题的艺术。明确目标,才能让你的努力更有方向。



3. 先做最重要的事


程序员的日常工作中,往往会被各种紧急任务打断,比如修复 Bug、处理线上问题。


但如果你总是被这些琐事牵着鼻子走,就会忽略那些对长期发展更重要的事情,比如学习新技术、优化系统架构。


如何区分重要和紧急?



  • 使用艾森豪威尔矩阵:将任务分为四类:



    1. 重要且紧急:立即处理,比如修复生产环境的重大 Bug。

    2. 重要但不紧急:安排时间,比如学习新技术、优化代码。

    3. 不重要但紧急:尽量委派,比如回复一些无关紧要的邮件。

    4. 不重要且不紧急:直接忽略,比如刷社交媒体。




优先处理“重要”的任务,因为这些任务决定了你的长期成长。



4. 考虑双赢


程序员的工作并不是孤军奋战,而是与团队协作完成的。无论是与其他工程师合作,还是与产品经理、设计师沟通,双赢的思维都至关重要。


双赢并不是让步,而是找到一种对双方都有利的解决方案。


如何培养双赢思维?



  • 欣赏团队的多样性:每个人都有自己的优势和视角,学会倾听和尊重他人的意见。

  • 建立信任:通过高质量的代码和积极的态度,赢得团队的信任。

  • 共同成长:在代码审查中,不仅指出问题,还要提出改进建议;在项目中,主动分享自己的经验和知识。


双赢的思维不仅能让团队更高效,还能帮助你建立长期的职业人脉。


5. 沟通的艺术1 + 1 > 2 的力量


程序员之间的沟通,不仅仅是语言上的交流,更是通过代码和文档进行的“无声对话”。


如果你写的代码晦涩难懂,或者文档不清晰,就会给团队带来额外的负担。


如何提升沟通能力?



  • 写清晰的代码:变量命名要有意义,注释要简洁明了。记住,代码是写给人看的,机器只是顺便执行。

  • 站在用户的角度思考:设计界面时,考虑用户的使用习惯;编写错误提示时,尽量清晰友好,而不是让用户感到困惑。

  • 倾听他人的意见:在团队讨论中,先理解别人的观点,再表达自己的看法。


如何实现高效协作?



  • 参与代码审查:通过审查他人的代码,学习新的技巧,同时也能帮助团队提高代码质量。

  • 结对编程:两个人一起编程,可以互相补充思路,避免遗漏问题。

  • 知识分享:定期组织技术分享会,或者在团队中推广最佳实践。


优秀的程序员,不仅能写出高质量的代码,还能通过代码与团队和用户“对话”。



6. 持续学习,永不止步


技术更新迭代飞快,程序员如果不持续学习,很容易被淘汰。磨砺锯子的习惯,强调在忙碌的工作中,抽出时间提升自己。


如何保持学习的动力?



  • 学习新技术:每年掌握一门新语言或框架,比如从 node 转向 rust,或者学习嵌入式技术。

  • 参与技术社区:通过开源项目、技术论坛、群聊或者线下活动,与其他程序员交流经验。

  • 关注行业动态:阅读技术博客、观看技术演讲,了解最新的趋势和工具。


就像磨刀不误砍柴工,持续学习不仅能提升你的技术水平,还能让你在职业生涯中始终保持竞争力。


改变习惯并不容易,但只要你愿意从今天开始,一点点调整自己的行为,就能逐渐看到改变的力量。



作者:云牧
来源:juejin.cn/post/7440676461169131555
收起阅读 »

科技业裁不停!软件工程师实惨,今年科技公司已裁员 13.7 万人

【新智元导读】科技行业的就业市场正在发生重大变革,人才供需逆转,初级职位减少,技能要求增加,求职竞争加剧。 科技行业曾是众多人才竞相追求的热门领域,但如今却面临着职位减少的挑战。 根据 Indeed.com 的数据,自 2020 年 2 月以来,软件开发岗位的...
继续阅读 »
【新智元导读】科技行业的就业市场正在发生重大变革,人才供需逆转,初级职位减少,技能要求增加,求职竞争加剧。

科技行业曾是众多人才竞相追求的热门领域,但如今却面临着职位减少的挑战。


根据 Indeed.com 的数据,自 2020 年 2 月以来,软件开发岗位的招聘广告数量已经下降了超过 30%。


Layoffs.fyi 网站的报告也显示,今年科技行业的裁员潮仍在继续,自 1 月份以来,已有约 13.7 万个工作岗位被裁减。



软件工程师在招聘网站上出现的频次对比,以 2018 年 1 月作为基准 100。来源:ADP


对于长期在就业市场占据优势的科技行业来说,这种急剧的变化不仅仅是短期的不适,而是整个行业正在经历的一次根本性的劳动力需求调整,一些从业者正被市场淘汰。


47 岁的 Chris Volz,一位居住在加利福尼亚州奥克兰的工程经理,自 90 年代末就开始在科技行业工作,但在 2023 年 8 月被一家房地产技术公司解雇。他表示:「这次的情况感觉非常、非常不同。」



Volz 之前的经历中,大部分工作机会都是通过猎头或内部推荐获得的。然而现在,他发现他的人脉网络中的许多人也都被裁员了,这迫使他不得不在职业生涯中第一次主动向外投递简历。


虽然在疫情期间,随着消费者将日常生活和消费活动转移到线上,科技公司迎来了招聘热潮,大量扩充员工队伍。


人才争夺战如此激烈,以至于公司囤积员工,不让他们去往竞争对手方工作;一些员工说,他们实际上是被雇佣来无所事事的。


然而,随着通货膨胀和利率的上升,经济形势迅速变化,导致一些大型科技公司开始大规模裁员。



ADP 研究部主管 Nela Richardson 表示,尽管疫情期间的招聘热潮减缓了整体的下降趋势,但并未改变长期趋势,部分原因是数字领域创新的自然发展轨迹,技术解决方案正在取代传统的人力。


她说, 「在数字领域,你不再像早期那样有很多新的突破。因为有越来越多的技术解决方案,而不仅仅是人的解决方案」 。


科技行业的非技术人员,如市场营销、人力资源和招聘人员,也面临着多次解雇的风险。


James Arnold 在过去的 18 年里一直从事科技领域的招聘工作,但在不到两年的时间里却两次被裁员。


在疫情期间,他在 Meta 担任人力资源,快速招聘新员工。2022 年 11 月,他被解雇了,然后花了将近一年的时间找工作,最后才在行业外找到了一份工作。


Arnold 说,他申请的大多数工作的薪水都比过去低三分之一 。


尽管科技公司的财务状况有所反弹,但一些公司更倾向于依赖顾问和外包职位。


Arnold 认为,疫情证明了远程工作的有效性,这为全球化就业市场打开了新的可能性。


初级职位正在减少


以往,初级职位对于技术实习生来说是一个高薪的起点,他们常常能够获得六位数的年薪,并且有很大机会转正。


但是,最近这一趋势发生了转变。企业开始减少实习机会,并降低了初级职位的招聘数量。


现在,即便是入门级职位,也要求应聘者具备多年的工作经验。


薪酬规划初创公司 Pequity 的首席执行官 Kaitlyn Knopp 观察到,过去薪酬过高和职称与经验不匹配的现象已经得到纠正。


她指出:「我们发现职位级别正在重新调整,人们的经验和职责更加匹配了。」



根据 Pequity 的数据,2024 年薪资增长基本停滞,平均薪资仅比去年增长了 0.95%。


Pequity 还发现,自 2019 年以来,中型企业软件即服务公司为初级职位提供的股权补助平均下降了 55%。


然而,目前失业技术人员和职场新人之间的竞争愈发激烈,而面试机会却在不断减少。


同时,企业对工程师的要求更为全面。


人员招聘公司 Robert Half 和技术实践部执行总监 Ryan Sutton 说,为了提高效率和降低成本,他们希望团队成员不仅具备软技能和协作能力,还应了解公司的人工智能战略和发展方向。


他说道:「他们希望看到更多多才多艺的人才。」



通过网上申请在科技领域找工作毫无结果,于是 Glenn Kugelman 采用了另一种策略:用纸和胶带在曼哈顿悬挂传单,宣传他的 LinkedIn 简介


不少技术人员开始寻求提升自身技能,纷纷报名参加人工智能训练营或其他相关课程。


Michael Moore 是亚特兰大的一名软件工程师,今年 1 月被一家网络应用程序开发公司解雇,在七个月的求职无果后,他决定报读一所网络大学。


摩尔曾通过在线课程学习编程,并表示六年前没有大学学位的他依然顺利找到了工作。


科技公司的战略变化


企业战略也正在发生转变。


科技公司不再追求不惜一切代价的增长,也不再对那些宏伟的「登月计划」进行投资,而是将焦点转向能够带来收入的产品和服务上。


他们减少了对初级职位的招聘,缩减了招聘团队,并放弃了一些不盈利领域的项目和工作,比如虚拟现实和设备。


与此同时,企业开始将大量资源投入到人工智能领域。


2022 年末发布的 ChatGPT 让人们看到了生成式人工智能创造类人内容和潜在行业变革的能力。这引发了投资热潮,人们争相构建最先进的人工智能系统。


在这个领域拥有专业知识的工人成为了少数几个强势群体之一。


从事大型语言模型工作的人员目前在市场上非常抢手,这些模型是 ChatGPT 等产品的基础,从事此类工作的人员年收入远超百万美元。



Pequity 的首席执行官 Kaitlyn Knopp 指出,人工智能工程师的薪资是普通工程师的两到四倍,她认为这是对未知技术的极端投资,导致公司无法在其他人才上进行投资。


甚至科技行业之外的公司也在积极招聘人工智能人才。一位猎头 Martha Heller 表示,五年前,董事会并不像现在这样关注公司的人工智能战略。


科技行业的就业市场正在经历一场深刻的变革。虽然初级职位减少,整体就业竞争加剧,但人工智能等新兴技术领域仍然提供了广阔的就业机会。


对于技术人员而言,不断学习新技能,适应行业变化,是在变革中寻找机遇的关键。


而对于行业来说,这也许是一个重新思考和调整人才培养和引进策略的契机。


参考资料:


http://www.wsj.com/tech/tech-j…


作者:新智元
来源:juejin.cn/post/7418367859011256374
收起阅读 »

我跑通了全球收付款的流程

前言 上周去韩国旅游,在首尔吃美食,坐在咖啡店写代码,Coding Anywhere,感觉很棒。 期间消费,用的是一张 ZA Bank 的 VISA 卡,几乎没怎么用现金。 这张卡里的钱,是我做出海 SaaS 产品一年以来的收入。 以前听别人做跨境电商,做出海...
继续阅读 »

前言


上周去韩国旅游,在首尔吃美食,坐在咖啡店写代码,Coding Anywhere,感觉很棒。


期间消费,用的是一张 ZA Bank 的 VISA 卡,几乎没怎么用现金。


这张卡里的钱,是我做出海 SaaS 产品一年以来的收入。


以前听别人做跨境电商,做出海 SaaS,可以面向全球用户收款,当时觉得很羡慕。


当自己终于跑通了全球收付款的流程之后,逐渐体会到了这里面的快乐。


20241110130034


在裸辞成为自由职业者之前,我副业做过一段时间的小程序业务,对接的微信支付,面向国内用户收款。


做过国内业务的朋友应该清楚,要对互联网产品实现商业化,一般需要注册一个公司主体,然后开通对公银行账户,再开通微信支付 / 支付宝之类的第三方收款渠道。


给自己的业务产品对接第三方支付平台,用户在线支付的钱,进入到微信支付 / 支付宝的商业账户,再提现到公司的对公账户。此为完整的收款流程。


从公司对公账户,以发工资或者借贷的形式,把钱发到员工银彳亍卡,或者转账到法人账户。可以理解为个人对收款资金的消费途径。


随着 AI 的爆发,国内备案政策收紧,国内业务越来越难做,很多人选择出海。


出海的第一步,要搞定全球收款的问题,需要有一个账户,接受全球用户的付款。


如果做的是出海 SaaS 产品,收款消费流程跟国内业务的流程基本一致,只是企业主体 / 对公账户 / 第三方支付平台 / 提现转账的对象有所不同。


用一张图来表示出海 SaaS 业务的收款 / 消费流程如下:


20241110152100


拆解成两个核心链路:



  1. 如何全球收款

  2. 如何消费收款账户内的资金


来详细讲解我是如何跑通全球收付款流程的。


如何全球收款


1. 注册一个境外公司


开通全球收款渠道之前,需要有一个境外主体。开通境外主体的方式很多,如果人在境外,操作起来会比较方便。如果人在境内,可以选择代理网站注册,或者淘宝代注册的方案。


境外主体注册地,可以根据实际需求选择,如果没有特别的要求,可以选择注册英国或美国公司。



  • 淘宝找代理,代注册美国公司


这种方案我没有实践过,身边有些朋友走的是此方案,淘宝找个代理,交 2000 多元人民币,2 个礼拜左右,可以注册下来一个美国公司。



  • 使用代理网站,自助注册英国公司


我选择的是此方案,自助注册英国公司,相对来说较为简单。


使用以下代理网站,创建账户,扫描护-照,全流程在网站上完成,会收到邮件验证资料。注册费用在几十刀,顺利的话,一个多礼拜可以注册下来。


http://www.1stformations.co.uk/


20241110131930


可以根据网站上的指引进行注册,或者搜一下注册教程。


2. 申请一张境外手机卡


很多地方需要验证境外手机号,所以需要申请一张境外手机卡,在境内可以正常接收短信验证的就行。


在淘宝搜索“giffgaff”,购买一张英国手机卡,邮寄到家后,进入官网激活。


http://www.giffgaff.com/


20241110203614


在官网买最低的套餐即可,大概在 6 英镑每月。


激活之后,就可以在境内接收全球各类产品的短信验证了。


3. 开通境外银行账户



  • 使用 Wise 开通对公账户


在第 1 步注册成功英国公司后,邮件会收到英国公司的注册资料,包括主体名 / 主体营业号 / 主体地址等信息。


拿这些信息,在 Wise 申请开通英国银行账户。


wise.com/


20241110132101


从 2023 年底开始,Wise 政策收紧,英国公司开通对公账户需要等待,我差不多花了 1 个月,才被允许开通对公账户,现在可能会更难开,需要多试。



  • 使用万里汇开通对公账户


如果 Wise 限制英国公司开户,可以把万里汇作为备选方案。万里汇是阿里巴巴旗下的产品,开户相对会容易一些。


http://www.worldfirst.com/uk/


20241110204544


无论 Wise 还是万里汇,开通成功后,你的英国公司就拥有了一个企业对公账户。可以选择不同的币种开通不同的账户。


比如你可以选择开通一个美元账户,一个英镑账户,一个欧元账户,用于外币收款。


20241110205939


4. 开通第三方支付平台收款商户


在开通企业对公账户成功之后,你就可以去申请第三方支付平台商户了。首选 Stripe。


stripe.com/


20241110132442


在 Stripe 新建商户,需要填写公司基本信息,法人姓名 / 地址,公司开展的业务说明等信息。


一个 Stripe 账户,可以开通多个收款商户,可以复用同一个主体信息。如果你的业务产品线比较多,可以创建多个 Stripe 商户,为每个产品对接一个 Stripe 商户,减少鸡蛋放在同一个篮子的风险。


20241110132501


有公司主体和对公账户的前提下,创建 Stripe 商户一般很快就能审核通过。有可能会要求你上传地址证明文件,直接用公司的注册地址就行。


除了 Stripe,也有其他一些第三方支付平台可以作为备选,比如:



选择适合你的支付平台,按照官网指引操作,可以多开几个放着,以备不时之需。


5. 通过 SaaS 产品收款


通过前面四个步骤,你已经开通了境外主体和境外银行账户,并且有了第三方支付平台收款商户。


接下来,就可以在你的 SaaS 产品中,对接第三方支付平台的收款 API,接收全球用户的付款了。


一个 Web 类型的 SaaS 产品,要实现对用户收款,一般会创建一个 Pricing 页面,列出几个付费套餐和对应的权益,如果用户认可你的服务,就会选择付费购买。


Stripe 支持订阅支付模式,用户输入自己的信用卡卡号订阅服务,每个月扣款日自动扣款,就相当于国内的小米电视会员按月订阅,免密代扣模式。


但是微信支付开通免密代扣的门槛非常高,Stripe 则简单多了。


在你的 SaaS 产品中,优先选择按月 / 按年的订阅支付方案,可以有效增加收入(相比于一次性付费)。


20241110132601


下载 Stripe 手机 App,开启接收通知,每当有用户在你的 SaaS 产品付费,你就会收到通知。


20241111092927


6. 资金提现


当你使用第三方支付平台收款一段时间后,你的第三方支付商户账户中,就会有一定的资金积累。


你可以选择将资金提现到你的境外银行账户中。一般需要选择提现的币种,设置成按时 / 按金额自动提现,或者手动提现。


第三方平台会在扣除掉一定的手续费之后,把资金转账到你公司的对公银行账户。这个过程涉及到跨境转账,换汇 / 清算等流程,耗时稍微有点久,一般在 3-5 个工作日,提现的资金才会到账。可以在 Wise 网页版,查看账户余额和提现记录。


20241110234652


至此,全球收款的流程就走完了。你可以开展你的 SaaS 业务,面向全球市场,找到目标用户,让用户喜欢你的产品,并为之付费。


所有的收入,都会进入到你在境外的对公银行账户中。


如何消费收款账户内的资金


前面几个步骤,讲完了全球收款的完整流程。如果业务开展顺利的话,你的境外对公银行账户会有一定的资金积累。


接下来,就可以考虑如何消费这些资金了。


消费的方式有很多种,最常见的几种消费方案:



  1. 使用境外对公银行账户的钱,购买商品 / 服务

  2. 境外对公账户的钱,转到境外个人账户,在境外消费

  3. 境外对公账户的钱,转到境外个人账户,绑定微信支付,在境内消费

  4. 境外对公账户的钱,转到境外个人账户,再转到境内个人账户,在境内消费


1. 使用境外对公银行账户的钱,购买商品 / 服务


Wise 除了可以开通企业对公账户之外,也支持开通个人账户。


企业 Wise 账户,可以为法人或者团队,开通多张物理卡或数字卡。


数字卡可以直接绑定到 Apple 钱包进行消费,或者在线支付 SaaS 产品,比如 ChatGPT / Claude 的会员订阅服务等。


20241110220303


Wise 的物理卡我申请了邮寄,一直没收到。但是 Wise 的数字卡,我已经用来支付常用的境外服务,比如 OpenRouter / Serper 这些。


对于 SaaS 业务的一些开销,通过数字卡支付,直接从 Wise 对公账户扣除了,省去了转入转出的麻烦。


2. 境外对公账户对钱,转到境外个人账户,在境外消费


对于出国旅游这类场景,我们可能希望把境外对公账户的钱,转账到个人银彳亍卡,直接在境外线下消费。


首先,需要申请境外的个人银彳亍卡。这里推荐三个方案:



  • 新加坡华侨银行(OCBC)


人在境内,下载 OCBC 银行 App,在线申请,一周内可以开通个人银行账户。可以选择邮寄实体卡,但是境内收件走的是平邮,可能会收不到。


我至今还未收到 OCBC 实体卡,但不影响在 OCBC App 内在线消费。



  • 中国银行香港(BOCHK)


需要去香港办理,如果去银行柜台办理,需要准备各种资料,比如富途的投资记录,银行流水等,有可能会被拒绝开户。(我 9 月份去香港中国银行柜台办理被拒了)


另一种稳妥的方式是,人在香港,连上香港 Wifi,下载 BOCHK App,在线申请,快速开通个人银行账户。


然后再去柜台补个签名,就可以正常使用了。


在柜台请他们修改邮寄实体卡的方式,寄挂号信。(即使改了邮寄方式,在境内也有可能收不到实体卡。我至今未收到T_T,但不影响银行账户的使用)



  • 众安银行(ZA Bank)


申请比较简单,人在香港,连上香港 Wifi,下载 ZA Bank App,在线申请,快速开通个人银行账户。


在 App 申请邮寄实体卡,在境内三天左右就可以收到。


除了以上三种方案,还有朋友会去香港开通汇丰银行账户,我没试过就不做过多阐述。


有条件的情况,建议多开几家银行账户,以备后续使用。


以上任意一家银行账户,都能接收 Wise 对公账户转账,Wise 会自动进行换汇,扣除一定的手续费,资金转账实时到账。


20241110153107


以上开通的境外银行账户,可以在线支付各类 SaaS 产品。也可以选择实体卡消费,既能刷卡支付,也支持 ATM 取现。


如果在境外使用 ZA Bank 实体卡消费,需要在 ZA Bank App 开启海外旅游选项。


20241110153556


3. 境外对公账户的钱,转到境外个人账户,绑定微信支付,在境内消费


境外习惯信用卡支付,而在境内大家更喜欢微信 / 支付宝支付。


如果习惯使用微信支付,可以在微信搜索框输入“香港钱包开通”,进入自助开通页面,选择“绑定香港发行的银行账户”,绑定上面开通的中银香港卡,就可以开通香港钱包。


20241110154022


在微信支付服务页,切换钱包地区,选择“香港钱包”,可以用于常用场景的支付,比如在线购买机票 / 火车票,美团点外卖,瑞幸喝咖啡等。境内消费的大部分场景,香港钱包都支持。


20241110224301


稍微遗憾的是,香港钱包绑定 ZA Bank,需要验证香港身-份-证,如果我们没有香港身-份-证,只能绑定中银香港卡,再把 ZA Bank 的钱转到中银香港卡,通过香港钱包在微信消费。


4. 境外对公账户的钱,转到境外个人账户,再转到境内个人账户,在境内消费


可能有人会有这类需求,需要用境内银彳亍卡扣房贷,想把境外个人账户的钱,转到境内银彳亍卡。


这个方案我没有实践过,但是看中银香港 App,有一个“中银快汇”的功能,可以转账到境内银彳亍卡。另外还有一个“开户易”功能,支持汇款到广东省内中国银行的同名账户。


如果使用 ZA Bank 或者其他香港银行账户,可以通过“熊猫速汇”之类的产品,汇款到境内银彳亍卡。


有需求的朋友,可以自行尝试。


没有境外银行账户,如何给境外产品付款


如果你还没有境外银行账户,但是需要给 ChatGPT / Claude 之类的产品付款,以订阅他们的会员服务。


你可以选择申请虚拟信用卡。


推荐使用 WildCard 这个产品,不仅支持虚拟信用卡,还提供虚拟手机号用于接收验证短信,以及安全的网络环境解决风控问题。


可以使用我这个推荐链接:


bewildcard.com/i/IDOUBI


注册 WildCard 服务,申请一张虚拟信用卡,使用支付宝充值,然后就可以给各类境外 SaaS 产品付费了。


20241110225036


总结


通过这篇文章,介绍了我这一年来做境外 SaaS 业务,从全球收款,到全球消费的完整流程。踩了不少坑,也总结了很多宝贵的经验,希望对即将开始做出海业务的朋友有所帮助。


秉持 Build in Public 的理念,同步一下我这一年来做 SaaS 业务的收入情况。


一年来的累计收入不到 1 万美元。


20241111092726


MRR(月度经常性收入) 最近突破了 1 千美元。


20241111092756


之前做 ThinkAny 这个项目的时候,有段时间 token 消耗和服务器流量费用特别高,一直在用境内的个人信用卡支付开销。境外收款账户里的钱属于纯收入,没有覆盖支出,算上成本的话,谈不上赚到钱,一年下来整体收支平衡。


虽然跟身边其他做出海业务的朋友相比,我的这点收入微不足道,但是对我个人而言,算是迈出了出海的第一步,收款 / 消费流程闭环,积累了很多认知,也增加了我对出海业务的信心。


接下来,我会继续优化我的 SaaS 产品,寻找目标用户,努力实现收入增长,争取早日达成 MRR 1 万美元的目标。


最后


如果你想开始做出海 SaaS 业务,可以参考本文先搞定全球收款链路。


如果你不知道如何做出一个 SaaS 产品,可以看一下我开源的这几个项目,有完整的 SaaS 产品模版,支持 Stripe 支付,可以一键部署,快速上线跑通收款流程。


github.com/all-in-aigc


20241110231145


如果你不太懂技术,想要学习全栈开发。可以选择加入我的“1024 全栈开发社群”,我在群里分享了几个项目的全栈开发过程,包括如何完成项目的前后端开发,如何实现 UI 组件,如何对接 AI 能力,如何做数据存储,如何支持支付收款等技术细节。也许会对你有帮助。


1024.pagen.io



祝大家早日出海,全球收款,大浪淘金。



作者:艾逗笔
来源:juejin.cn/post/7435708914433785893
收起阅读 »

31 岁,从雄心壮志到回归平凡

一、前言 不久前,有位 31 岁的兄弟找我聊天,他结束了在深圳漂泊不定的生涯,回老家尝试自媒体创业,最终以失败告终,无奈又重回深圳找工作。 二、为何做出这个决定 他的这一决定并非一时冲动,其导火索可追溯至 2022 年。当时的大环境可谓一片混乱,人人都在拼命内...
继续阅读 »

一、前言


不久前,有位 31 岁的兄弟找我聊天,他结束了在深圳漂泊不定的生涯,回老家尝试自媒体创业,最终以失败告终,无奈又重回深圳找工作。


二、为何做出这个决定


他的这一决定并非一时冲动,其导火索可追溯至 2022 年。当时的大环境可谓一片混乱,人人都在拼命内卷,下班时间越来越晚,几乎与月亮同步。


每逢放假回老家,亲戚朋友便会念叨:“你在深圳 996 累得不成样子,究竟图个啥?工资是高些,可这日子有啥乐趣?再者,你在深圳漂泊不定,何时才是尽头?房子买不了,户口落不下,迟早得打道回府。”


这位兄弟听后,心中满是酸楚,思量着:多年来为人当牛做马,还遭受 PUA,还得时刻担忧 35 岁被辞退,这日子实在过不下去了!于是,心中犹如埋下了一颗炸弹:我得去另一番天地闯荡!


实际上,这位老兄本就向往自由,那句“打工是不可能打工的,这辈子都不会打工”如同他的精神支柱,一直渴望有朝一日不再打工。


所以在 2022 年底,他毅然决定:2023 年,我要去新的天地看看!拿完年终奖就离开!去创业,开启全新人生!


在准备辞职之前,还有几件糟心事,让他坚定了辞职的决心:


当时尚未完全放开,在家线上办公。在公司上班起码是 995,晚上 9 到 10 点下班基本能休息。可在家就惨了,各种电话、视频会议如轰炸机般袭来,十一二点还得开会,生活与工作完全混乱。每次听到会议呼叫,他的心就像被针扎,默默祈求别出岔子,都快被逼出精神病了。


感染新冠时,他只敢请一天假,第二天晕乎乎地继续工作。为何?他心里明白,落下的工作最终还得自己加班完成,否则会被领导骂得狗血淋头。


周末也不得安宁,需随时在线,群消息要秒回,线上问题得立刻解决,不然就会被贴上“工作态度差”的标签,绩效惨不忍睹。


image.png


三、他辞职了


终于熬到 2023 年,年终奖一到手,这位兄弟便决定离职。


当时身边有人如唐僧般劝他别辞职,说当下大环境糟糕,千万别放弃本行去搞自媒体。


这兄弟心中充满不屑,暗想:程序员最多干到 35 岁,如今内卷严重,加班致使身体近乎垮掉,这行年老无出路!


当然,这位兄弟并非头脑发热就辞职搞自媒体,辞职前做了充分准备,调研分析了许久:


作为互联网人,搞实体店一窍不通,只能在互联网领域筛选。互联网项目繁多:个人工具站、知乎好物、闲鱼二手书、小红书带货、抖音带货、抖音个人 IP、公众号写作、短剧 CPS、小说推文、知识付费等等,看得他眼花缭乱。最终发现抖音流量最大,从事与抖音相关的或许更容易些。


而且这位老兄还学习了众多创业知识,如寻找对标、分析商业模式,参加了不少知识付费的圈子,还报名了小红书和抖音的培训班,前前后后花费了一万多元,心痛不已。


四、想象很美好


image.png


为了这次创业,这位兄弟制定了一系列计划,涵盖年度、季度、月度、周度,甚至每日的计划都规划得极其详尽。


他还发誓要变得极度自律,每天按时起床,锻炼、学习、开展业务,决心坚如磐石,此次抱着必胜的信念放手一搏!


当然,他也提前预料到可能遭遇的风险,并绞尽脑汁思考应对之策:


例如项目进展缓慢如何处理,拖延症发作怎样解决,家人反对如何应对,朋友约饭打乱计划怎么办,遇到难题又该怎样解决等等。


这一系列举措下来,他认为万事俱备,只待大干一场!


五、现实很残酷


image.png
辞职后,他依照计划开始早睡早起,锻炼、学习,忙于创业之事。


然而,未曾料到,很快就被现实狠狠打击,这是他创业路上遇到的首个难题,也是他始料未及的。


就在刚创业不久,他竟然患上了焦虑症,还伴有严重的失眠。


他万万没想到会被失眠困扰。原本以为,摆脱上班的压力,工作时间自由安排,无人 PUA,还有时间锻炼,应当能睡个安稳觉。


但实际情况并非如此,对于我们这种从小被学校管,长大后被公司管的普通人而言,创业竟是这般模样:


他忙得晕头转向,比上班更累,因为以前只需做好本职工作,如今所有事情都需亲力亲为。以做自媒体为例,从账号定位、内容选题、写脚本,到置景、拍摄、后期剪辑,再到选品、商务对接、客服,最后到用户社群运营,所有环节都得独自承担。视频没流量、违规、付费转化率低等问题,都需自己琢磨解决。以前在公司,按要求完成任务即可.


面对大量的自由时间,他全然不知如何安排,诸多环节都是陌生领域,需要学习的太多,每天看似忙碌,却不见成果,怎能不感到沮丧?以前只从事熟悉工作,产出有保障.


与社会脱节,缺乏存在感和归属感(这是人类的基本需求之一),不属于任何群体,无人夸赞、尊重、接纳,甚至想被责骂都无人理会。以前在公司,表现好会得到称赞,表现不佳会获得建议,至少有人可供倾诉、交流、求助。


没有收入,眼睁睁看着钱包逐渐干瘪,怎能不焦虑?更焦虑的是,不知未来何时能盈利。更更焦虑的是,不知最终能否盈利。以前工作再累,至少有工资,有生活保障。


所以在此奉劝那些有裸辞创业想法的人,切勿裸辞!裸辞创业可谓九死一生!正确的做法应是一边工作一边开展副业,待副业收入与工资相当甚至超过工资时,再辞职。有人或许会说,工作繁忙,哪有时间搞副业。他曾经也这么想,但现在他告诉你:没时间就挤出时间,每天晚睡或早起一会儿,周末也抽出时间。这点问题都无法解决?创业遇到的难题可比这困难十倍!若觉得这都难以做到,那还是老老实实打工吧。


可他已经裸辞,别无他法,只能硬着头皮解决问题。他开始服用助眠药,喝中药,情况稍有改善,但未完全康复,只是比之前稍好一些。


就这样拖着疲惫的身躯,他坚持了半年多,一半时间学习,一半时间实践,创建了两个自媒体号,第一个号因违规被封,第二个号流量也毫无起色。这条创业之路越走越艰难,每天晚上都不愿入睡,因为害怕明天的到来,因为一睁眼,眼前仍是一片黑暗。


最终,在创业的巨大压力、8 个月没有收入的恐慌、焦虑失眠心悸的折磨下,他选择了放弃。


失败了,败得一塌糊涂。回顾这次经历,仿佛之前在一艘航行的货轮上工作,实在无法忍受船上的种种压迫,鼓足勇气,带着一艘救生艇跳海,追求向往的自由。结果高估了自身当时的能力,难以抵御大海的狂风巨浪,翻船了……差点就葬身大海……


六、重新找工作


放弃后的几周,他开始熬夜,暴饮暴食,之前的运动也停止了。整天在家拉上窗帘,除了吃饭就是躺在床上刷手机,试图分散注意力,减轻内心的痛苦。


但这样下去并非长久之计,如今肯定不想再触及创业,只能先找份工作。


刚开始找工作时,他心有不甘,因为三线城市与深圳相比,无论是工作机会、环境,还是薪资,都相差甚远。


但无奈,他感觉自己如同即将溺水之人,急需一根救命稻草,先生存下来再说,这是当前的首要任务。


于是在网上大量投递简历,结果惨不忍睹,几乎没有几家公司招聘,前后折腾了一个月,真正靠谱的面试仅有一家,没错,仅有一家。


好在这家公司他顺利拿到了 offer,是一家刚创业的小公司,仅有十几个人,薪资仅有原来的一半多些,不过拿到 offer 的那一刻他还是有些激动,感觉自己又活过来了,不管怎样,能缓口气了。


七、迷茫的未来


如今上班已一个多月,公司还不错,不加班,基本 7 点前大家就都下班了,离家很近,骑共享单车 10 分钟左右就能到。这一个月,焦虑消失了,心悸不再,失眠也好了。每天按部就班地上班下班,完成老板交代的任务,其他事情无需操心,又做起了熟悉且擅长的工作。


回望过去,人生的旅途上,翻过一座山,或许迎接我们的仍是连绵不绝的山峦,海的尽头似乎总是遥不可及,甚至可能一生都无法亲眼目睹。此刻的我们,更愿意将心态放平,珍惜眼前,脚踏实地地前行,每一步都充满探索与希望。


三十一岁,一个不再轻易言弃的年纪,我学会了与自己和解,正视并接纳自己的平凡。


image.png


作者:狼爷
来源:juejin.cn/post/7395962823502299170
收起阅读 »

中年码农,裸转AI,是条死路!

有粉丝向我请教这个问题,我觉得有点普遍性,所以我写篇文章。具体写我的观点之前,为了求生欲,我先说明一下:下面的是我是一家之言,有可能不正确还有偏见,您要是不同意,您也可以留言发表您的看法。d但是请理性讨论,不要情绪化骂人发泄,不要凡是不同意您观点的人通通都要被...
继续阅读 »

有粉丝向我请教这个问题,我觉得有点普遍性,所以我写篇文章。
具体写我的观点之前,为了求生欲,我先说明一下:下面的是我是一家之言,有可能不正确还有偏见,您要是不同意,您也可以留言发表您的看法。
d但是请理性讨论,不要情绪化骂人发泄,不要凡是不同意您观点的人通通都要被喷。感谢。
现在AI火了,就有粉丝问我,自己在某个领域积累了很久,但是呢,以后可能都是做AI的了,那对方可以不可以放弃掉之前领域的积累,全身心投入到AI的学习中去,然后换个赛道呢?

我个人觉得这是条死路。
除非,你已经财富自由了,你可以不用为家里的房贷车贷孩子等等花钱顾虑,你可以未来很长一段时间都不需要担心钱的问题,并且你还有很多精力。

或者你是一个天才,你可以很快的就学习一个新的领域,并且很容易成为新领域里面的大拿。
如果这两个都不成立,那么就是条死路。
道理也非常简单,一旦你是需要通过你的技能来卖钱,从而让自己生存和生活的,那么你现在的技能,和基于现在的技能给你赚钱这个事情本身就很重要。

你想进入一个新的领域,比如AI,你是个普通人,正常智商,需要很多时间学习,你在新的领域很难和其他人,尤其是在新领域里面挣扎奋斗了很多年的人比。
所以,要么你继续指望靠现有的技能赚钱,但是你不会有足够的时间让自己成为AI的专家,要么你现在的技能和工作被打折扣,因为你没办法兼顾现在的和将来的事情,能力时间精力都不行。
所以,我觉得想转,最实际的办法,就是现在的组里有LLM的需求,你可以在现有基础上,做一点相关的,试试水。这种做法会比较丝滑。

如果完全不存在这种机会的,那我只建议两种人转:足够聪明的,学习能力特别强特别快的,和有很多钱,不担心失业以后自己活不下去的。
大部分人来说,尤其是中年码农来说,能够稳固基本盘,就可以了,就是不错的选择了。
毕竟码农的人生,是很容易就走下坡路的,大家也应该做好走下坡路的准备。
我可能真的无法改变你的想法,但我真心希望,你做每一个决定的时候,投入每一份精力的时候,尤其是义无反顾投入大手笔的时候,一定要考虑清楚自己的现实情况,和自己到底有什么样的能力。
所以,有些时候,现实就是这样的残酷。


作者:飞总聊IT

来源:mp.weixin.qq.com/s/fcNyIXgwVNenu_cz0pbCSg

收起阅读 »

工作7年了,才明白技术的本质不过是工具而已,那么未来的方向在哪里?

前言 Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。 五一过去了,不知道大家有没有好好的放松自己呢?愉快的假期总是这么短暂,打工人重新回到自己的岗位。 我目前工作7年了,这几年来埋头苦干,学习了很多技术,做了不少系统,也解决过不少线...
继续阅读 »

前言


Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。


五一过去了,不知道大家有没有好好的放松自己呢?愉快的假期总是这么短暂,打工人重新回到自己的岗位。


我目前工作7年了,这几年来埋头苦干,学习了很多技术,做了不少系统,也解决过不少线上问题。自己虽然在探寻个人IP与副业,自己花了很多时间去思考技术之外的路该怎么走。但转念一想,我宁愿花这么多时间去探索技术之外的路线,但是却从没好好静下来想一下技术本身。


技术到底是什么,你我所处的技术行业为什么会存在,未来的机会在哪里。


因此,我结合自己的工作经历,希望和大家一起聊聊,技术的本质与未来的方向,到底在哪里,才疏学浅,如果内容有误还希望你在评论区指正。


背景


行业现状


互联网行业发展放缓,进入调整阶段,具体表现为市场需求、用户规模、营收利润、创新活力等方面的放缓或下降。


一些曾经风光无限的互联网公司也遭遇了业绩下滑、股价暴跌、裁员潮等困境,你是不是也曾听过互联网的寒冬已至的言论?


其实互联网本身,并没有衰败或消亡,而是因为互联网高速发展的时代过去了。



  1. 中国经济增速放缓、消费升级趋势减弱、人口红利消失等因素的影响,中国互联网市场的需求增长趋于饱和或下降。

  2. 用户规模停滞,智能手机普及率饱和,互联网用户规模增长趋于停滞,由增量市场变为存量市场,互联网获客成本越来越高。

  3. 监管政策收紧,互联网行业规范和监管愈加严格,更加注重合规,因此互联网行业也会收到影响。


供需环境


供需环境变化,应届生要求越来越高,更加注重学历。


社招更是看中学历的同时,开始限制年龄。招聘更看重项目经验,业务经验。五年前,你只要做过一些项目,哪怕不是实际使用的,也很容易拿到offer。而现在企业在看中技术能力的同时,还会关注候选人对与行业的理解,以及以往的工作经验。


技术的本质


先说结论,技术的本质是工具。 我把过去几年的认知变化分成了四个阶段,给大家展示一下我对于技术的认知成长过程。


第一阶段


技术就是应用各类前沿的框架、中间件。


刚毕业时,我就职于一家传统信息企业。谈不上所谓的架构,只需要Spring、Mysql就构建起了我们的所有技术栈。当然,微服务框架更不可能,Redis、MQ在系统中都没使用到。


此时互联网企业已经开始快速发展,抖音诞生区区不过一年。


一线城市的互联网公司,都已经开始使用上了SpringBoot、微服务,还有各类我没有听说过的中间件。


工作环境的闭塞,让我对各类技术有着无限憧憬,因为很多当下难以解决的问题,应用一些新技术、新架构,就能立刻对很多难题降维打击。


举个例子,如果你使用本地缓存,那么集群部署时,你一定要考虑集群的缓存一致性问题,可这个问题如果用上分布式缓存Redis,那么一致性问题迎刃而解。


所以那个时候的我认为,技术就是应用各类中间件,只要用上这些中间件、框架,我就已经走在了技术的前沿。


第二阶段


技术对我而言就是互联网。
半年后,我摆脱传统行业,来到了一个小型互联网公司,用上了不少在我眼中的新技术。


但任何新技术,如果只停留在表面,那么对于使用者来说,就是几个API,几行代码,你很快就会感到厌倦,发现问题也会焦虑,因为不清楚原理,问题就无从排查。


很快,所谓的“新技术”,就不能给我带来成就感了。我开始羡慕那些互联网行业APP,无时无刻都在畅想着,如果我做的产品能够被大家看到并应用,那该是多么有意思的一件事情。


于是我又认为,技术就是做那些被人看见、被人应用的网站、APP。


第三阶段


技术就是高并发、大流量、大数据。
当自己真正负责了某一个APP的后端研发后,很多技术都有机会应用,也能够在AppStore下载自己的APP了,没事刷一刷,看到某一个信息是通过我自己写的代码展示出去,又满足了第二阶段的目标了。


那么我接下来追求的变成了,让更多的人使用我做的产品,起码让我的亲人、朋友也能看到我做的东西。


当然,随之而来的就是日益增长的数据规模和大流量,这些无时无刻都在挑战系统的性能,如何去解决这些问题,成为了我很长一段时间的工作主线。


应对高并发、大流量,我们需要对系统作出各种极致性能的优化。


为了性能优化,还需要了解更多的底层原理,才能在遇到问题时有一个合理的解决方案。


所以,我认为技术就是高并发、大数据,做好这些,才算做好了技术。


第四阶段


经过了传统企业,到互联网公司,再到互联网大厂的一番经历,让我发现技术的本质就是工具,在不同阶段,去解决不同的问题。


在第一阶段,技术解决了各类行业的数据信息化问题,借助各类中间件、架构把具体的需求落地。


在第二阶段、第三阶段,技术解决了业务的规模化问题,因为在互联网,流量迅猛增长,我需要去用技术解决规模化带来的各类的问题,做出性能优化。


当然,技术在其他领域也发挥着作用,比如AI&算法,给予了互联网工具“智能化”的可能,还有比如我们很难接触到的底层框架研发,也就是技术的“技术”,这些底层能力,帮助我们更好的发挥我们的技术能力。


未来机会


大厂仍是最好的选择


即使是在互联网增速放缓、内卷持续严重的今天,即使我选择从大厂离职,但我依然认为大厂是最好的选择。


为什么这么说,几个理由



  • 大厂有着更前沿的技术能力,你可以随意选择最适合的工具去解决问题

  • 大厂有着更大的数据、流量规模,你所做的工作,天然的就具备规模化的能力

  • 大厂有先进的管理方法,你所接触的做事方法、目标管理可能让你疲倦,但工作方法大概率是行业内经过验证的,你不会走弯路,能让你有更快的进步速度


数字化转型


如果你在互联网行业,可能没有听说过这个词,因为在高速发展的互联网行业,本身就是数字驱动的,比如重视数据指标、AB实验等。但在二线、三线城市的计算机行业或者一些传统行业,数字化转型是很大的发展机会。


过去十年,传统行业做的普遍是信息化转型,也就是把线下,需要用纸、笔来完成工作的,转移到系统中。


那什么是数字化转型?



我用我自己的理解说一下,数字化转型就是业务流程精细化管理,数据驱动,实现降本增效。



我目前所在的公司的推进大方向之一,就是数字化转型。因为许多行业的数字化程度非常低,本质而言,就是把数字驱动的能力,带给传统企业,让传统企业也能感受到数字化带来的发展可能。


举个例子,比如一个餐饮系统数字化转型后,一方面可以把用户下单、餐厅接单、开始制作、出餐、上餐线上化,还可以和原材料供应系统打通,当有订单来时,自动检测餐饮的库存信息,库存不足及时提供预警,甚至可以作出订单预测,比如什么时间点,哪类餐品的点单量最高。


当然,数字化转型与互联网有着极大的不同,在互联网行业,你只需要坐在工位,等着产品提出需求就可以了。但是传统行业,你需要深入客户现场,实地查看业务流程,与用户交谈,才能真正的理解客户需求。


或许这样的工作并不炫酷,还需要出差,但在互联网行业饱和的今天,用技术去解决真实世界的问题,也不失为一个很好的选择。


AI&智能化


随着AI快速发展,各类智能化功能已经遍布了我们使用的各类APP,极客时间有了AI自动总结,懂车帝有了智能选车度搜索问题,有时候第一个也会是AI来给我们解答。



任何行业遇上AI都可以再做一遍。



抛开底层算法、模型不谈,但从使用者角度来说,最重要的是如何与行业、场景结合相使用。但是想要做好应用,需要你在行业有着比较深的沉淀,有较深的行业认知。


当然,智能化也不仅限于AI,像上面餐饮系统的例子,如果能够实现订单预测、自动库存管理,其实也是智能化的体现。


终身学习


技术能力


持续精进专业技术能力,相信大家对此都没有疑问。


对于日常使用到的技术,我们需要熟练掌握技术原理,积累使用经验,尤其是线上环境的问题处理经验。


第一个是基础。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。


第二你需要有全面的互联网技术相关知识。从底层说起,你起码得深入了解mysql,redis,nginx,tomcat,rpc,jms等方面的知识。


第三就是编程能力,编程思想,算法能力,架构能力。


在这个过程中,打造自己的技能树,构建自己的技术体系。


对于不断冒出的新技术,我们一方面要了解清楚技术原理,也要了解新技术是为了解决什么问题,诞生于什么背景。


业务能力


前面说到技术是一种工具,解决的是现实世界的问题,如果我们希望更好的发挥技术的作用,那么就需要我们先掌握好业务领域。


互联网领域
如果你想要快速地入门互联网领域的业务,你可以使用AARRR漏斗模型来分析。


AARRR这5个字母分别代表 Acquisition、Activation、Retention、Revenue 和 Refer
五个英文单词,它们分别对应用户生命周期中的 5 个重要环节:获取(Acquisition)、激活(Activation)、留存(Retention)、收益(Revenue)和推荐(Refer)。


AARRR 模型的核心就是以用户为中心,以完整的用户生命周期为指导思想,分析用户在各个环节的行为和数据,以此来发现用户需求以及产品需要改进的地方。


举一个简单的例子,我们以一个互联网手游 LOL来举例:
获取就是用户通过广告、push等形式,了解到了游戏并注册或者登陆。
激活就是用户真正的开始游戏,比如开始了一场匹配。
留存就是用户在7天、30天内,登陆了几次,打了几把比赛,几天登陆一次,每日游戏时常又是多少。
收益,用户购买皮肤了,产生了收益。
推荐,用户邀请朋友,发送到微信群中,邀请了朋友一起开黑。


如果你所在的行业是C端产品,那么这个模型基本可以概括用户的生命周期全流程。


传统行业
传统行业没有比较通用的业务模型,如果想要入手,需要我们从以下三个角度去入手



  1. 这个行业的商业模式是什么,也就是靠什么赚钱的?比如售卖系统收费,收取服务费等

  2. 行业的规模如何?头部玩家有哪些?它们的模式有哪些特色?

  3. 这个行业的客户是谁、用户是谁?有哪些经典的作业场景?业务操作流程是什么样的?


如何获取到这些信息呢?有几种常见的形式



  1. 权威的行业研究报告,这个比较常见

  2. 直接关注头部玩家的官网、公众号、官媒

  3. 深入用户现场


我们以汽车行业来举例
商业模式:整车销售、二手车、汽车租赁等,细分一点,又有传统动力和新能源两种分类。
规模:如下图


头部车企:传统的四大车企一汽、东风、上汽、长安,新势力 特斯拉、蔚小理


经典场景:直接去4S店体验一下汽车销售模式、流程


说在最后


好了,文章到这里就要结束啦,我用我自己工作几年的不同阶段,给你介绍了我对于技术的本质是工具的思考过程,也浅浅的探寻了一下,未来的发展机会在哪里,以及我们应该如何提升自己,很感谢你能看到最后,希望对你有所帮助。


不知道你对于技术是怎么看的,又如何看待当下的市场环境呢?欢迎你在评论区和我分享,也希望你点赞、评论、收藏,让我知道对你有所收获,这对我来说很重要。也欢迎你加我的wx:Ldhrlhy10,一起交流。


本篇文章是第33篇原创文章,2024目标进度33/100,欢迎有趣的你关注我~


作者:东东拿铁
来源:juejin.cn/post/7365679089812553769
收起阅读 »

2024年大龄程序员不得不面对的尴尬,也算是过来人的经验

被裁员 先说下本人情况,38,坐标杭州,具备后端架构和大数据架构能力。待过大厂,带过团队,落地过大型项目。 近几年被裁员也不算什么稀奇古怪的事情,我记得2022年下半年面试那会行情远比现在好,那会还会有猎头、企业主动找,我2022年的工作就是猎头推进去的。 然...
继续阅读 »

被裁员


先说下本人情况,38,坐标杭州,具备后端架构和大数据架构能力。待过大厂,带过团队,落地过大型项目。


近几年被裁员也不算什么稀奇古怪的事情,我记得2022年下半年面试那会行情远比现在好,那会还会有猎头、企业主动找,我2022年的工作就是猎头推进去的。


然而公司运营不善,2023年底裁撤了,因为融资问题,被迫出局。


本想着年后再看工作,也想休息一段时间,于是年前就没理工作这个事。


狗不理


因为信息差,也可能因为行业这种趋势本身就是没法感知的,年后投简历发现了几个情况:



  1. 无论是猎聘、BOSS、智联,好像岗位都比之前少了很多,并且很多都是钉子户,我2022年找工作那会看他们挂的JD,2024年了仍然还在。

  2. 很多JD都要求的时间就在两个段,一个是1—3年,一个是5—10年。那么从23岁毕业来看,现在只要33岁以下的了。

  3. 从跟一些猎头的沟通来看,现在很多好点的岗位是需要本硕985,211都不一定看了,并且很多事明确要求硕士。这其实一刀切,放十几年前,考大学比现在难。

  4. 很多简历发出去直接被拒,要么是未读。基本上已经有去无回了。


一些感悟


面对这种突如其来的颠覆认知的行情,我有点措手不及,没预想自己可能就此失业了。现在的世界变化太快了,也可能我待在舒适区太久了,根本对外部世界的变化钝感迟缓。


我也没去问招聘方是什么原因,本身就个人从业经历和技能能来说,自认为还OK,但是问人家也未必会告诉你实话,在这个存量市场,势必是僧多肉少,刺刀见红,现实残酷,朝不保夕。


但是反思下十几年的职场生涯,其实多多少少还是有个人原因的,总结出来,留给后来人吧:



  1. 不要迷信技术,我以前以为只要技术好就是核心竞争力,就有护城河。现在发现这种信仰只有在一个崇尚技术、尊重技术的环境中才有效。但是目前看下,这个环境越来越不是,今后肯定是越来越人情社会,越来越丛林化。所以,得有综合全面的“技术”才能混,至于我说的综合全面,懂的都懂。

  2. IT行业不适合深耕,只适合扩展。就是你得把他当工具,千万别代入,不然你会陷入很深的工具人思维。就是你总得想着有朝一日假如你被裁员了,你是否有利用这个工具单干的能力。尤其是现在AI技术日新月异,很有可能程序员一夜之间就变成土木。

  3. 一个要打造个人IP,要清醒地培养自己独立赚钱的能力,跳出自己的舒适区。很可能你目前的舒适生活是由行业或平台的红利带来的,你也很可能就是那个被圈养的巨婴。想想《肖申克的救赎》那几个经典片段:坐牢越久越是离不开监狱的,到最后极度依赖,没有自己。

  4. 认知越早扭转越好,不要等到35岁别人不要你了才幡然醒悟,我就是反例,到这个时候怀着空杯心态再从零开始,代价不得不说有点太大了。


个人期望


最后说点自己的个人期望和未深思的规划:
1、后面还是要自己单干的,可以是独立开发、或者其他。
2、还是会热爱技术,即使如果干不了这行了,也会把它当做一个兴趣培养。


作者:数据智能老司机
来源:juejin.cn/post/7343902139821785124
收起阅读 »

2023总结:30岁,结束8年北漂回老家,降薪2/3,我把人生过的稀烂

一转眼又快过年了,回想整个23年,简直是我人生中最黑暗的一年(之一)。 23年,我30岁,在北京干了8年程序员。30岁这年我做了一个决定:结束8年北漂生涯,回老家(一个三线城市)自己创业,去做自媒体。 一、为何做出这个决定 这个决定也不是一时拍脑袋做出的决定...
继续阅读 »

一转眼又快过年了,回想整个23年,简直是我人生中最黑暗的一年(之一)。



23年,我30岁,在北京干了8年程序员。30岁这年我做了一个决定:结束8年北漂生涯,回老家(一个三线城市)自己创业,去做自媒体。


一、为何做出这个决定


这个决定也不是一时拍脑袋做出的决定,导火索是在22年:


那时候大环境不好,大家都越来越卷,下班的时间也越来越晚。


放假回家亲戚朋友总说,你在北京996这么累,图啥啊,工资是高点,但是完全没有生活啊。而且你在北京漂到啥时候是个头?你又买不起房,又没户口,早晚得回来吧。


我仔细想想也有道理,活了这么多年了都在当牛做马,被pua,还得面临35岁危机,真的受够这种生活了!所以那时候心里埋下了一颗种子:我要去浪浪山的那边看看!


其实我本身就是一个喜欢自由的人,这么多年那句“打工是不可能打工的,这辈子都不会打工”一直激励着我,我想自己有一天也能实现不打工这个目标。


于是22年底我做了一个决定:23年去山的那边看看大海的样子!拿完年终奖就辞职!去创业,去开启我的新的人生!


在准备辞职前的几件事情,都让我更加坚定了辞职的决心:



  1. 那时候还没有放开,在家线上办公,本来在公司办公是995,晚上9-10点下班了基本就没啥事情了,但是在家就不一样了,每天各种电话、视频会议,甚至十一二点都要开会,恨不得让你24h都在线,生活和工作基本都没有边界。那个时候只要听到会议呼叫的声音,内心就一紧,心中默默祈祷不要出什么幺蛾子,都快成心理阴影了。

  2. 当时得了新冠也只敢请了一天假,第二天晕晕乎乎的就继续开始工作了。因为我知道,落下的工作最后还得你自己加班完成,否则领导最后还会赖你延期。

  3. 周末也需要随时在线,需要及时回复群里的消息,需要随时解决线上的问题,否则就会打上工作态度不好的标签,绩效肯定低。导致我周末基本不敢出去,出去也得随时看着手机,看有没有@你的消息,整天提心吊胆,玩也玩不好,还不如在家躺着。


我觉得这不是我想要的生活,每天太累了,身体累不算,心还累,生怕自己负责的业务出了什么问题,如坐针毡,如芒刺背,如履薄冰。


二、我辞职了


终于,熬到23年,拿到年终奖后,我决定提出离职。


当时身边有些人劝我不要辞职,说现在环境不好,更不应该放弃你的老本行,去做啥自媒体。


我当时内心嗤之以鼻,心想程序员这行也就干到35岁,而且现在卷的不行,加班加的身体都快废了,这行岁数大了没前途!我趁现在30岁还年轻,创业正值当年,辞职改行的选择非常有战略眼光!(当时真的是感觉杰克马附体,准备在这个三十而立的年纪,大干一场!)


2b5f9de5dbc7cd40403819a50d693574.jpeg


当然我也不是脑袋一热就想着辞职去做自媒体,辞职前我做了充足的准备,和很长时间的调研&分析:



  • 我作为一个互联网人,做实体店肯定不是我擅长的,肯定只能从互联网上选择行业,互联网项目有很多:个人工具站,知乎好物,闲鱼二手书,小红书带货,抖音带货,抖音个人ip,公众号写作,短剧cps,小说推文,知识付费等等的项目,我可以说都看了一个遍,其中抖音现在流量最大,要做风口上的猪,做抖音相关肯定要容易很多。

  • 然后我也学习了一些创业相关的知识,比如如何找对标,如何分析对方商业模式,参加了很多知识付费的圈子,然后还报了小红书和抖音的培训班,总共加起来得有1w多呢。

  • 而且我还预留了充足的资金,我做了最坏的打算,就算我一分钱不挣,也够我活3年呢,我不会3年都创业不成功吧!(此处白岩松表情包:不会吧!.jpg)


u=1021210702,2199782272&fm=253&fmt=auto&app=120&f=JPEG.webp


三、想象很美好


为了这次创业,我还制定了计划,年度计划,季度计划,月计划,周计划,天计划,真的非常详细。


我也要很自律,每天按时起床,锻炼,学习,做业务。这次我真的抱着必胜的决心来做!


当然我也提前列出可能要遇到的风险,并思考解决方案:


比如项目进展慢怎么办,拖延症怎么办,家人反对怎么办,朋友约吃饭打乱我的计划怎么办,遇到困难我该怎么应对等等


这么一套组合拳下来,我觉得已经万事俱备,只差开干了!


四、现实很残酷


4月我如期辞职,当时正值清明节,淅淅沥沥的小雨并没有浇灭我开启新生活的热情。辞职后,我就按计划开始早睡早起,锻炼,学习,搞创业的事情。


但是马上就被打脸了,这是我创业中遇到的第一个难题,也是我万万没有预料到的


就在我创业后的不久,我患上焦虑症,失眠了,而且还很严重,就是那种从晚上11点躺下,躺到早上6点才睡着的那种失眠,而且还时不时的心悸。


我万万没想到会患上失眠症。因为我觉得没有上班的压力了,想啥时候干活就啥时候干活,想干多少干多少,想啥时候下班就啥时候下班,也没人pua我了,还有时间锻炼,应该睡得更好才是。


但实际并不是这样,对于一个从小被学校管,长大了被公司管的芸芸众生来说,创业实际是这样的:



  1. 你会非常忙,比上班还要忙,因为你之前是螺丝钉,做好自己的本职工作就好了,现在事无巨细,都你一个人。比如做自媒体,从开始的账号定位-》内容选题-》写脚本-》置景&拍摄-》后期剪辑-》选品-》商务对接-》客服-》用户社群运营,所有的环节,都得你自己一个人。然后视频没流量怎么办,违规了怎么办,付费转化率低怎么办,还是只有你自己去解决。(之前公司让你干啥你干啥,你只需要规定时间完成你的任务就好了)

  2. 面对大量的自由时间,你根本不会支配时间,因为很多环节你都是小白,要学习的东西太多,但是你天天光学习了,每天看似很忙,但是看不到产出,导致你就很沮丧。(之前你只做熟悉的工作,产出是有保证的)

  3. 行动困扰,没有目标感,没有人给你一个目标&方向,你不知道你现在做的事情对挣钱有没有价值,你会迷茫,你会时常自我怀疑。(之前你只是专注领导安排的任务,至于这个任务能不能帮公司挣到钱,那是公司的事情,你关心到手的工资而已)

  4. 没有成就感,认同感。因为现在你很多事情要从0开始,比如写文案要求写作能力,拍视频要求表现力,搞流量要求你有运营&营销的能力 ,相比之前做熟悉工作,感觉上会有落差(之前工作中都是做你擅长的领域,每完成一项任务也很有成就感,做的出色还能收获同事和领导的认可)

  5. 和社会断了链接,没有存在感,归属感(这是人类的基本需求之一),你不属于任何一个群体,没有人赞扬,尊重,接纳你,甚至你想被骂两句也没人鸟你(之前在公司,做的好了领导或者同事会夸你两句,做的不好了可能会给你建议,起码有人能倾诉,能交流,能寻求帮助)

  6. 没有了收入,眼见钱包一天天变少,你肯定会焦虑。但是更让你焦虑的,是你不知道未来什么时候能挣到钱。更更让你焦虑的,是不知道最后能不能挣到钱。(之前工作压力不管有多大,多累,起码你还有工资,你还有吃饭的钱,这是底气)


所以在此奉劝有裸辞创业想法的人,千万不要裸辞!裸辞创业九死一生! 正确的做法是一边工作愿一边做副业,等副业的收入和工资差不多甚至超过工资了,再去辞职。有人会说,我工作那么忙,根本没时间搞副业啊。我之前也是这么想的,但是现在我会告诉你:没有时间就去挤出时间,每天晚睡或者早起一会,周末也抽出时间搞。这点问题都解决不了?创业的遇到问题会比这难十倍!如果这个你觉得太难了,那我劝你还是老老实实打工吧。


但是我已经裸辞了,没办法,只能去解决问题,我开始吃助眠药,喝中药,有些好转,但也没治好,只是比之前好点。


就这么拖着残血的半条命,我坚持了半年多,一半时间学习,一半时间实践,搞了两个自媒体号,第一个号违规被封了,第二个号流量也没啥起色。这条路是越走越看不到希望,每天晚上都不想睡觉,因为害怕明天的到来,因为明早一起床,眼前又是一片黑暗。


五、彻底崩溃


11月,因为种种原因和媳妇生了一场气,我觉得对于我创业,她不鼓励也就算了,在我状态这么差的情况下还不能对我包容一点,甚至有点拆后台的感觉,那几天我就像一个泄了气的皮球,内心被彻底击垮了。(所以现在有点理解每个成功男人的背后,都有一个伟大的女人这句话的含义了)


终于,在创业的压力,8个月没有收入的恐慌,焦虑失眠心悸的折磨中,我决定放弃了。


失败了,彻彻底底的失败。回想这次经历,就好像之前在一艘航行的货轮上打工,然后受不船上的种种压榨,终于鼓起勇气,自己带着一艘救生艇,跳海奔向自己想要的自由。结果高估了自己的目前的实力,经不起茫茫大海狂风骤雨,翻船了。。濒临溺亡。。。


六、重新找工作


放弃后的那几周,我开始熬夜,开始暴饮暴食,之前的运动也放弃了。整天在家里拉着窗帘,除了吃饭就是躺在床上刷手机,让我尽可能分散注意力,减少内心的痛苦。


但是这样的状态也不是事儿啊,目前肯定是不想再去面对创业的事情了,那只能去找个工作先干着了。


刚开始找工作内心又有不甘,因为一个三线城市比起北京来说,不管是工作机会,环境,薪资来说,都差太多。


但是没办法,我现在的感觉就是快溺死了,我现在急需一个救命稻草,活下来,是我目前的首要任务。


于是在网上海投了一遍,结果惨不忍睹,根本没几家公司招人,前前后后一个月,真正靠谱的面试就一家,是的,只有一家。


好在这家也顺利拿了offer,是一家刚创业的公司,一共十几个人,薪资只有原来1/3多点,但是拿到offer那一刻我依然有些激动,我感觉我活下来了,不管怎样,现在能喘口气了。


七、迷茫的未来


现在上班已经一个多月了,公司挺好,不加班,基本上7点前就都走了,离家也挺近,骑个共享单车也就10分钟。这一个月,焦虑没了,不心悸了,失眠也好了。每天就是按部就班上下班,完成老板给的任务,其他的事情也不用自己操心,终于又做起自己熟悉且擅长的事情。


但是内心还是有落差,本来北京好好的工作自己作死给辞了,要不这一年也能攒不少钱呢,现在不但钱没了,这几个月还花了好几w,最后还差点嘎了。


其实入职这家公司前,北京之前的同事问我要不要回去,说现在正忙,我说你先问问吧。


我当时也纠结,如果真的能回去,我还要不要回去,毕竟在那边挣一个月顶这边仨月。但是回都回来了,再去北京可能就一辈子留北京了吧。


不过后来同事说年前没有招人计划了,可能要年后了,如果招人到时再联系我。正好我不用纠结了,这可能就是命运的安排吧。


不过真的想问问你们,如果到时有机会,是继续北漂呢,还是选择在老家呢?


八、结语


说实话,我现在知道了,山的那边还是山,我不知道什么时候才能看到海,甚至我可能一辈子都看不到海了。不过目前想的就是,调整好状态,先走一步算一步吧。


30岁的年纪,学会和自己和解,学会接受自己的平庸,但是依然要努力,毕竟在这个阴雨连天的环境下,没有伞的孩子只能努力奔跑。


作者:骆驼箱子
来源:juejin.cn/post/7330439494666453018
收起阅读 »

开发人员,千万不要去碰那该死的业务参数,无论什么时候!

你好呀,我是歪歪。 前几天发了一个牢骚: 本来只是单纯的吐槽一下,但是好多人对其中的细节比较感兴趣。 大家都是搞技术的嘛,对于“踩 BUG”这种喜闻乐见的事情,有兴趣是很正常的。 其实我这个 BUG,其实严格意义上不能叫做 BUG,因为和程序无关,甚至和技术...
继续阅读 »

你好呀,我是歪歪。


前几天发了一个牢骚:



本来只是单纯的吐槽一下,但是好多人对其中的细节比较感兴趣。


大家都是搞技术的嘛,对于“踩 BUG”这种喜闻乐见的事情,有兴趣是很正常的。


其实我这个 BUG,其实严格意义上不能叫做 BUG,因为和程序无关,甚至和技术的关系都不算大。从标题上你也能猜出来,是和一个业务参数相关。


但是在这个过程中,因为我是整个事件全程的亲历者,所以现在回看这个事情,我还是有一些思考在里面的。


我觉得这是一个程序员会遇到的“典型事件”。


那就用这篇文章一起复盘一下吧。


背景


要说明这个问题的背景,甚至不需要一个具体的业务场景,只需要围绕着以下这个非常常见的利息计算公式,就可以说明问题的起因:



利息=计息金额*日利率。

日利率=年利率/360



由于日利率的计算,涉及到除法,在对应需求第一次开发时,业务的要求是日利率保存 7 位小数。


在程序中,年利率和日利率是两个字段分别保存的,日利率在初始化的时候就算好落库了,后续程序直接取这个算好的日利率就行了。


系统上线,相安无事。


跑了一段时间后,业务又提来一个需求:当前的精度不够,需要调整到 11 为小数。


你不用好奇歪师傅这边到底是什么业务场景,反正我去看了业务数据,需求是合理的,那就把需求接过来干就行了。


保存 7 位小数和 11 位小数,大家都是搞开发的,肯定也知道这个就是一个小改动,很快就能搞定。


事实也是如此,虽然之前的需求对应的代码不是我写的,但是我看过代码,清楚的知道改动点在哪,所以很快就开发完成。


前面说了,这个需求之前在线上按照 7 位小数跑了一段时间,所以存在一些存量配置。


针对这些存量数据,在需求评审会议上的时候,我提了一句:存量配置怎么处理呢?


业务答复:这次需求上线的时候,你按照 11 位小数重新算好,然后写 SQL 更新一下就行。


我心里一盘算:计算公式明确,年利率我也有,算一把,没啥问题。


就答应了。


然后,不出意外的出意外了。


假设年利率是 2.5%,除以 360 之后,保留 11 位小数,应该是 0.00006944444。


而我不知道当时为什么手抖了,在 SQL 里面写成了 0.00069444444。


我给你对比一下:



0.00006944444

0.00069444444



相当于我写出来的日利率被扩大了十倍。


然后再回头看看这个公式:



利息=计息金额*日利率



日利率被扩大十倍,那么对应的计提金额也会被扩大十倍。


这就是问题的背景。


一个单纯的人为失误,和程序没有任何关系,所以严格意义上不属于程序 BUG。


但是这个问题确实是足够低级。


为什么没被发现?


那么这个错误的 SQL 是怎么通过代码评审、测试验证这两道关卡被带到生产环节的呢?


首先,这一次提交的代码,压根就没有评审环节。


我有代码提交权限,也有代码审核权限。所以我自己提交,自己就审核通过了。


其实这个需求应该是组里面另外一个小伙伴来做,但是当时他被调到其他组了。


他还在我们组的时候,我们的合作模式是他提交代码,我进行审核。


如果有这个环节,我觉得我有 50% 的几率发现问题。


为什么是 50% 呢?


因为这取决于我审核代码时是否有正在处理其他的事情,如果有其他事情处理,我可能会形式主义的看上几眼。如果没有其他事情,而这次提交的代码量又不大的话,我基本上都会认真的过一下提交的内容。


通过代码评审之后,接下来就应该是测试环节。


测试主要关注的是精度从 7 位变成 11 位之后,最终计算出来的利息是否符合预期。


他测试时是走了整个业务的全流程。


在“全流程”中,这个 11 位精度的日利率,是在页面配置年利率的时候通过程序自动计算出来的,不会错的。


而他在验证 SQL 语句的时候,测试环境又没有生产环境的配置,所以他拿着我提供的 SQL,只能保证写的语法没问题,能正常执行,并不能确保里面数据的正确性。


而我也记得很清楚,我当时给他说过:你执行一下 SQL 不报错就行,值的正确性,我来保证。


而且戏剧性的是,测试同事很仔细的去看了值,他去数了确实是 11 位小数。但是可惜,站在他的视角,他发现不了值被扩大了十倍。


所以,测试环节也没有发现这个问题:



0.00006944444

0.00069444444



就带着上生产了。


一个问题正常来说不应该被带上生产,但是我们确实不能保证测试环节一定能把所有问题都测出来,所以新项目、新迭代的生产验证也是非常有必要的。


这个我们也做了。


按理来说,生产上的数据已经是错误的了,而且是一个“利息金额扩大十倍”的明显的错误,如果主动去做了数据验证,应该能被发现才对。


那为什么做了生产验证,却没有发现问题呢?


因为当时存量配置有三条,我提供了 3 个 SQL,其中有一个是算对了的。


每一条存量配置都对应着大量的利息数据,而算对了的这个对应的数据更多,在比例上超过 60%。


我进行生产验证的时候,在大量的利息计提数据中随机抽选了两条,选中的这两条,恰好都是正确的 SQL 对应的数据。


所以我发现符合预期,得出了生产验证通过的结论。


站在这个节点,回顾整个事件,这个时候应该是最有可能发现问题的时候。


但是没发现。


根本原因是验证方案不严谨,玄学原因是运气不站在我这边。


怎么暴露的?


你想想,这种业务参数配置错误的问题你能通过什么监控规则监控到吗?


其实很难的。


我们一般来说做技术层面的监控,都是监控程序是否按照预期正常运行。比如在计算的过程中出现异常,那我们是可以监控到的。


但是在这种只是参与计算的值不对,但是能正常计算出一个值的情况,并不会报错。


这种问题通过技术手段很难监控到。如果硬要去做监控,肯定是能做的,比如从异常浮动的维度、横向数据对比的维度,但是配套的开发成本又上去了。


我是怎么发现这个问题的呢?


也是纯粹的运气。


是一个周五的晚上,我做另外的一个和本问题毫无关系的场景下的数据验证的时候,偶然间看到了一笔数据的金额和前几天比,明显大了很多。


这是不符合业务规律的。


然后进一步跟踪,最终定位到了前面的问题 SQL。这个时候距离这个 SQL 上线,已经过去了三天,已经产生了一批错误数据了。


如果我没有偶然间看到这个问题数据,那么这个问题会在什么环节暴露呢?


就是在业务使用这个数据做核对的时候。


那个时候整个问题的性质就变了。不仅是处理时间来不来得及的问题了,而是这个问题是由“开发自主发现”还是由“外部反馈发现”这两个完全不同的性质了。


一般来说,不管是什么问题,先抛开严重程度,只要是开发自主发现的,都能一定程度上让事情变得不那么难堪。


所以我们才一度强调“可监控”的重要性。


随后,我联系了业务,反馈了这个情况。他表示在他下次使用这批数据之前,把数据修复好就行。大概一个月后,他会用到这批数据。


这样,我有接近一个月的时间来处理这个问题,防止问题扩大化。


时间非常充足,站在这个角度,我运气还不错的。


问题已经暴露出来了,随后就是制定针对这批错误数据的修复方案了。


修复方案就和业务场景相关了,属于多个业务场景叠加在一起,所以修复方案其实是比较复杂的,涉及到“修数”和“补数”,没有展开描述的必要了。


只是想简单提一句,这个修复方案是我利用周末的时间想出来的,很多细节问题我都需要考虑到,甚至在心里写了一遍伪代码。


确实是浪费了周末的时间,但是这是为自己的错误买单,半点不怨别人,就是活该。


而对于参与后续方案讨论的同事来说,在这件事情上付出的时间,才是属于无妄之灾。


这就是整个事情的过程,一个小数点引发的血案。


再回首


现在整个事情的全貌都在你眼前了,你得到了什么经验教训?


因为手抖了,写错了一位小数,这确实是直接原因,所以是想着下次再处理这种数据的时候,更加小心一点吗?


我觉得不是这样的。


我得到的经验教训就是我的标题:开发人员,千万不要去碰那该死的业务参数!


如果在最开始需求评审会,我们讨论到存量数据的时候。


业务说:这次需求上线的时候,你按照 11 位小数重新算好,然后写 SQL 更新一下就行。


我说:不行,这个属于是业务参数,我不能去动。上线完成后,就具备这个功能了,你可以通过页面配置去修改。


我知道他们修改业务参数的流程,很长很复杂。


首先业务需要发起一个参数变更的 OA 流程,然后走到他的部门负责人审批。


业务部门负责人审批完成后,会到具体负责业务参数配置的人员手里,还需要该人员对应的部门负责人审核。


审核完成后有权限的人员才会去修改这个业务参数,而这个参数的修改,在对应的系统功能上还有两级甚至三级审核。


整个完成之后发起 OA 的人员还需要进行变更确认,看看页面上是否是自己想要的配置。


这一套流程走下来,你觉得还会出错吗?


很难出错了。


你可以批判这个流程过于臃肿,但是你最终总是会认识到,这个流程其实是在保护打工人。


我知道他流程比较复杂,而我写个 SQL 几乎是没有成本的,但是这是在 SQL 正确的前提下。


如果当时不答应通过 SQL 的方式帮他处理存量数据,他其实有更加正规的流程去处理这些数据,而且不会出错。


事后我们复盘的时候,也有同事私下向我提出了这个的问题:为什么不走 OA 流程去调整这个参数?


另外,关于流程,我给你举一个程序员方面的例子。


一个核心开发人员拥有线上数据库的操作权限,我们先假设这个人绝对忠诚、绝对可以信赖、绝对恪尽职守、绝对不会删库跑路。


某一天,他收到一个预警信息,经过排查发现需要去修改数据库里面某个数据的状态,他直接就去修改了。


这个操作非常常见,特别是在小公司或者在一些在快速发展阶段的公司。


后来这个公司成长起来了,开始更加注重操作风险了,回收了所有人员的数据库权限,以前的事儿既往不咎,以后想要修改数据库数据,必须要发起一个审批流程,经过层层审批之后才能执行。


这个流程和“直接去修改”这个动作比起来,就重了无数倍了。


站在程序员的角度,前几年都是可以直接操作生产数据,突然这个制度出来了,极大的影响了之前的开发惯性。所以刚刚开始执行的时候,你可能会骂一句:xxx。


但是长远来看,这个流程其实是在保护你。


当你有数据库权限的时候,操作对了,没有人会夸你。操作错了,你就是罪魁祸首。


有了一个审批流程,在加重了操作成本的同时,也降低了错误成本。


处理问题的时长可能增加了,对于问题处理的敏捷度可能降低了,但是站在公司的角度,随着公司的发展“稳定”才是永恒的主旋律,在稳定面前,敏捷度反而是可以牺牲的。


歪师傅在第一家公司业务野蛮发展的时代,曾经就有这样的权限,那个时候刚刚参加工作两年多的时间,觉得事情就应该是这样的,这样才是正确的,可以足够敏捷,足够迅速的处理问题。


后来权限回收了,当时我也在私底下骂骂咧咧了几句。


再回来,随着经验和在职场上见过得事儿越来越多,才渐渐认识到:蛮荒时代确实出英雄,但是我没有把握好机会成为英雄。蛮荒时代之后的流程规范,规章制度其实是在保护那批没有成为英雄的人,其中就有我。


最后,给你,也给我自己一个忠告:开发人员,你最好要知道你数据库里面每一个业务参数背后的业务含义,但是千万不要去碰那该死的业务参数。也轮不到你碰,该碰的人会在正确的流程下去碰。


无论什么时候,心中都要绷着这根弦。


作者:why技术
来源:juejin.cn/post/7435928632081252378
收起阅读 »

新范式下的低代码方案

前言 低代码由来已久,主要是减少开发人员的编码时间,提高产品交付效率,甚至功能完备的低代码平台可以使非开发人员使用。 正如此,多年来,低代码平台层不出穷,但依然没有出现现象级的产品,不过,大多数公司也都有自己的低代码平台,体验和效果也是参差不齐。 新范式的到来...
继续阅读 »

前言


低代码由来已久,主要是减少开发人员的编码时间,提高产品交付效率,甚至功能完备的低代码平台可以使非开发人员使用。


正如此,多年来,低代码平台层不出穷,但依然没有出现现象级的产品,不过,大多数公司也都有自己的低代码平台,体验和效果也是参差不齐。


新范式的到来


如今人工智能又达到了一个新的阶段,有预言说,它最先代替的是程序员。我认为这很难,如果你深度使用了ChatGPT,它确实非常非常惊艳,但是,要想取代程序员,还为时过早。不过如果能够善加利用,它将是一把利器,可以事半功倍。


但是,目前还没有发现一款体验非常好的GPT产品可以无缝的与开发环境融合。即使“历史悠久”的GitHub Copilot也没有达到一种理想效果,虽然还有它的孪生兄弟GitHub Copilot Chat也总是缺少一些体验。


虽然现在还没一个非常好的产品来辅助我们开发(GitHub Copilot已经很好了),但是也不影响一个新的范式即将到来,GPT注定会改变我们的开发方式。


目前,就我的体验来说,ChatGPT的自定义GPT体验是最好的,但是在开发的过程中,也相当割裂。下面我们就来定制这样一个GPT,看他的效果如何。


自定义GPT


假定你可以访问ChatGPT,并且开通了Plus。


自定义一个GPT和开发一个项目差不多,需要反复调试,第一版完成之后,还需迭代。但是,相对于开发项目,自定义一个GPT的调试过程要相对简单,我这里直接给出一个调试好的,你可以直接把这个指令粘贴到你的ChatGPT里。


你是一位资深的前端开发工程师,你的目标是根据用户要求创建一个不省略任何逻辑的,功能完备的组件。你需要跟用户沟通需求,满足条件之后进行组件开发。
你严格遵循如下规则完成组件开发:
- 使用最新的TypescriptVue3进行开发。
- 使用Ant Design of Vue UI库。
- 代码结构必须是这样的:<template></template><script setup lang="ts"></script><style scoped></style>
- 使用 Ant Design Vue 的栅格系统:利用 Ant Design Vue 的 <a-row> 和 <a-col> 组件创建响应式布局。
- 如果需要导航路由,必须这样:import { useRouter } from 'vue-router'; const router = useRouter(); router.push('xxx');
- 如果有URL相关访问,必须这样:import { useRoute } from 'vue-router'; const route = useRoute(); route.xxx
- 如果有提示、通知等,必须这样:import { notification, message, xxx } from 'ant-design-vue';
- 如果有Form表单,必须这样:<a-form @finish="handleLogin" :model="loginForm" :rules="rules" :label-col="{ span: 4 }" layout="horizontal">
- 如果组件有文字必须使用中文。
- 代码里避免使用any,复杂字段必须定义类型,可以参考api.json文档。
- 如果有数据提交按钮,按钮必须包含loading,防止多次触发。
- 如果有危险操作,进行二次确认。
- 如果有数据访问,做好下面处理:
- import axios from '@/axios-config';
- 根据api.json文档定义请求数据及响应的数据类型。
- 使用api.json提供的接口路径。
- 根据响应状态进行成功或者失败提示。
- 所有接口返回的数据类型都被如下范型包括:
[这里需要填写自己的]
- 输出代码之前:
- 必须先参考示例代码文件LoginView.vue【重要】
- 先把思路写出来,观察思路是否符合规则,之后再输出代码。
- 示例代码文件LoginView.vue内容如下:
[这里需要填写自己的]

你需要把 API 文档上传进去。


另外,可以根据开发过程遇到的问题,不断的调试这个指令,非常简单。


使用自定义GPT


上面,我们自定义了一个GPT,怎么使用呢?比如你可以输入这样的要求:


根据API文档及示例代码开发一个用户注册组件,要求如下: 
1、根据API定义三个字段,邮箱、邮箱验证码、密码
2、邮箱后面需要有验证码发送按钮,参考下面代码
<a-input-search v-model:value="value" placeholder="input search text" size="large" @search="onSearch" >
<template #enterButton>
<a-button>Custom</a-button>
</template>
</a-input-search>
3、发送按钮要有一分钟倒计时功能
4、注册按钮下面要有一个跳转逻辑:已有账户登录?

它就会非常贴心的生成如下代码:


<template>
<a-row type="flex" justify="center">
<a-col :xs="24" :sm="16" :md="12">
<a-form @finish="handleRegister" :model="registerForm" :rules="rules" layout="horizontal">
<a-form-item label="邮箱" name="email">
<a-input-search
v-model:value="registerForm.email"
placeholder="请输入邮箱"
size="large"
@search="sendVerificationCode"
>
<template #enterButton>
<a-button :disabled="countdown > 0">{{ countdown > 0 ? `${countdown}秒` : '发送验证码' }}</a-button>
</template>
</a-input-search>
</a-form-item>
<a-form-item label="邮箱验证码" name="emailVerification">
<a-input v-model:value="registerForm.emailVerification" placeholder="请输入验证码" />
</a-form-item>
<a-form-item label="密码" name="password">
<a-input-password v-model:value="registerForm.password" placeholder="请输入密码" />
</a-form-item>
<a-form-item>
<a-button type="primary" block html-type="submit" :loading="loading">注册</a-button>
</a-form-item>
<a-form-item>
已有账户登录?<a @click="navigateToLogin">点击登录</a>
</a-form-item>
</a-form>
</a-col>
</a-row>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { useRouter } from 'vue-router';
import { notification } from 'ant-design-vue';
import axios from '@/axios-config';

interface RegisterModel {
email: string;
emailVerification: string;
password: string;
}

const registerForm = ref<RegisterModel>({
email: '',
emailVerification: '',
password: ''
});
const rules = {
email: [{ required: true, message: '请输入邮箱', trigger: 'blur', type: 'email' }],
emailVerification: [{ required: true, message: '请输入验证码', trigger: 'blur' }],
password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
};
const loading = ref(false);
const countdown = ref(0);
const router = useRouter();

const sendVerificationCode = async () => {
if (countdown.value > 0) return;

// 发送验证码请求
try {
const response = await axios.get('/auth/verify-email', { params: { email: registerForm.value.email } });
if (response.appCode === 2000) {
notification.success({ message: response.message });
countdown.value = 60;
let interval = setInterval(() => {
countdown.value--;
if (countdown.value === 0) clearInterval(interval);
}, 1000);
} else {
notification.error({ message: response.message });
}
} catch (error) {
notification.error({ message: '验证码发送失败' });
}
};

const handleRegister = async () => {
try {
loading.value = true;
const response = await axios.post('/auth/register', registerForm.value);
if (response.appCode === 2000) {
notification.success({
message: '注册成功',
description: '您可以现在登录了'
});
router.push('/login');
} else {
notification.error({
message: '注册失败',
description: response.message
});
}
} finally {
loading.value = false;
}
};

const navigateToLogin = () => {
router.push('/login');
};
</script>

<style scoped>
</style>

效果非常好,如果有哪些不满足要求, 可以不断的与之沟通,继续完善代码。当然如果有些小的改动,可以直接在编辑器里修改代码。比如,上面的上面发送验证码的地方是有问题的,没有没有判断邮箱是否可用,这里你就可以自己加个逻辑,或者告诉它 发送邮箱验证码之前,必须校验邮箱


于是,它就会给你想要的逻辑,非常喜人。不过有时候他会给出代码片段,有时候也会给出全部代码,看自己情况要求它。


const isEmailValid = (email: string): boolean => {
const emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
return emailRegex.test(email);
};

const sendVerificationCode = async () => {
if (!isEmailValid(registerForm.value.email)) {
notification.error({ message: '请输入有效的邮箱地址' });
return;
}

if (countdown.value > 0) return;

// 原有的发送验证码逻辑保持不变
// ...
};

总结



  1. 根据自己的业务需求,可以非常方便的调教出一个GPT。

  2. 在使用的过程中,写清楚自己的需求。

  3. 如果它生成的代码有问题,可以进一步沟通。

  4. 它生成的代码结构非常的清晰。

  5. 它命名的代码名称也非常的合理。


它现在能做到的已经非常棒了,未来会更加可期。


不过,从体验角度来说,我们需要在开发工具和ChatGPT之间来回切换,还是有些麻烦,什么时候,开发工具中,可以支持就太好。


还有一点儿,现在还需要我们自己去发现问题,与它沟通,指出问题,让它修正问题。如果有一个良好的产品,可以使用测试驱动开发,先让它生成测试代码,根据测试代码,生成逻辑代码。如果测试代码跑不通,自动的把错误消息反馈给它,它再修改,再跑测试代码,这体验简直逆天。


期望


希望一个体验非常完美的平台赶快到来:



  1. 调试好自己的GPT。

  2. 直接支持开发环境。

  3. 根据用户需求生成测试代码。

  4. 用户检查测试代码是否覆盖所有情况。

  5. 然后生成逻辑代码。

  6. 自动跑测试代码。

  7. 如果有问题,自动把问题反馈给它。

  8. 在此基础上再生成逻辑代码。

  9. 然后再跑测试代码。

  10. 循环往复。

  11. 实在不行开发人员介入解决问题。

  12. 最终完成开发。


如果有这样一个平台,那么,开发效率将是巨大的提升。


作者:我们来掘金吧
来源:juejin.cn/post/7322275119593144383
收起阅读 »

程序员裸辞创业, 都混的咋样了?

嗨, 大家好, 我是徐小夕.没错, 我已经辞职快一年了, 目前在全职创业, 今天会和大家系统的分享一下接近一年的创业历程, 能“劝退”一个是一个!写这篇文章主要有两个目的, 一个是对自己创业做个阶段性复盘, 另一个目的是给一些在筹备创业的小伙伴, 一些客观而有...
继续阅读 »

嗨, 大家好, 我是徐小夕.

没错, 我已经辞职快一年了, 目前在全职创业, 今天会和大家系统的分享一下接近一年的创业历程, 能“劝退”一个是一个!

写这篇文章主要有两个目的, 一个是对自己创业做个阶段性复盘, 另一个目的是给一些在筹备创业的小伙伴, 一些客观而有参考性的建议.

因为我发现最近几个月很多技术小伙伴都在咨询我创业的事情, 我突然有点不知所措, 心想现在创业行情都这么“好”了吗? 于是我我看了一眼技术社区的画风, 仿佛他们读懂了我的疑惑:

图片

已有先辈们做出了“总结”......

就我自己亲身做互联网软件创业来说, 确实不太“”.

接下来就分享一下我这一年的创业历程.

裸辞后为什么选择创业

两个字: 执念!

因为之前一直在深耕低代码可视化领域, 对可视化搭建产品有很大的执念, 所以辞职的首要目标就是要做一款高价值的可视化搭建产品.

虽然在之前的公司工作非常愉快, 不管是薪资还是和同事们的相处, 感觉都非常nice, 但是心里总是有一个“坎”, 想要去迈过.

也可能是为了让即将到来的30岁, 不留遗憾吧~

很多朋友认识我大多通过技术社区里我做的技术分享技术文章, 在开源领域, 我也做了很多可视化相关的开源项目, 从而树立了一定的技术影响力:

图片

由于自己坚持做技术分享和写文章已经3年多了, 积累了大概 10w 的粉丝, 所以这也为自己创业做了一定的“用户”保障.(你做的产品一定要有原始用户)

总结一下, 决定我创业的原因有以下3个核心要素:

  • 技术积累
  • 资金积累
  • 粉丝积累

如果大家想创业, 尤其是从事互联网创业, 我觉得得好好思考上面3点, 缺一勿“创”.

毕竟刚才在说话的间隙, 我又刷到一波高赞的文章, 和我的文章遥相呼应:

图片

再来聊聊创业收入.

由于我们的创业方向主要是给企业提供可视化解决方案, 加上最近大环境又不太好, 很多企业的预算都在降低, 所以我们产品价格定位在企业可以接受的较低档位.

10个月时间, 收入6位数+.

好在我们是轻资本创业, 后面会通过提高产品价值和市场力, 来提高产品盈利能力.

创业过程中的酸甜苦辣

之前在网上看到有个大V说: 创业最可怕的事是,一开始就看到了终点那个举着胜利旗帜的人不会是你

直到真正创业了, 我才感同身受. 因为你的每一个决策都决定着产品的未来走向, 意味着你需要为你的决策付出时间精力财力, 和人情.

1. 产品研发的血泪史

图片

当时听到“自由无价”这个词, 用来形容独立开发者自由职业者时, 觉得非常'cool', 直到自己亲身下场创业, 才发现自由是“相对的”, 创业没成功之前, 你是绝对不自由的.

也许关注可视化搭建项目的朋友知道我之前开源了一个零代码的项目——H5-Dooring, 今年一直在做Saas版的零代码产品, 让不懂技术的朋友也能通过拖拽的方式使用搭建平台来低成本制作页面.

从1月到6月, 我们几个小伙伴兵分两路, 一路给客户做定制开发, 一路迭代我们自己的低代码平台, 基本上天天熬夜coding, 测试, 同时还要兼顾用户反馈的需求和 bug.

由于大家都没有市场销售经验, 所以我自然而然的担起了这个责任.

图片

除了要做技术研发, 我硬挤出了一部分时间来做内容宣传, 学习视频剪辑, 录制产品宣传视频和视频教程, 然后客户确定购买后我还需要给客户做技术培训, 帮助客户快速上手可视化搭建方案的技术研发.

所以说, 我也终于理解为什么说创业者都得是多面手了, 因为大部分事情都要亲力亲为!

再来聊聊软件产品的发布上线经验.

因为Dooring线上产品有近2万用户, 所以产品的更新迭代都极为谨慎, 我们一般在凌晨12点发布新版本, 这也就是意味着我们需要为发版“疯狂”. 由于没有专业测试, 我们都得自测, 当然百密总有一疏, 也出现几次线上bug导致用户受到了影响, 好在我们及时修复了, 才避免了损失.

这里的经验教训就是, 需要根据自己用户的属性, 来沉淀适合产品自身的迭代周期和BUG追溯机制.

凌晨发版是国内企业的不二选择......

这些都是创业过程中需要经历的冰山一角, 还有很多困难等着各位, 比如攻克技术难题风险管控成本等, 这些会不断考验着创业者的心智.

一次失败的百度广告

图片

百度广告也许是我们做的最亏的一次投资.

Dooring零代码 其实有做3个月的百度广告, 当时主要是为了提高搜索权重用户曝光, 来提高转化, 于是我们商量之后投了几万的百度广告.

由于百度是竞价机制, 在投放期间, 我们发现搜索关键词排名还是没有在第一页, 搜索排名基本上被“大公司”垄断, 投的钱越多你的位置越靠前, 我们当时的底线就是用户检索关键词后我们的网站只要在第一页就行了, 后面发现还是差强人意.

所以对于小公司, 做百度广告基本效果很小, 如果没有几十万上百万的投入, 很难有实际效果.

所以我们后面果断放弃了百度广告, 转而从内容侧和网站自身SEO来提高搜索曝光度. 大家对百度广告, 怎么看呢? 欢迎留言区留下你的经验分享~

学会做一名销售

说实话, 程序员创业, 营销或者销售能力是一个短板. 然而企业的基础目标就是“卖货”, 要想把自己产品销售出去, 就必须得懂客户市场.

当然销售能力也是我在创业过程中遇到的短板.

今年参加了很多线下的分享会, 有关于AI的, 也有创业的, 也认识了很多的创业者, 他们大多都有技术背景, 但是我发现发展比较好的企业基本上都是极度重视用户需求和体验的, 他们建立了各种渠道来挖掘用户需求和用户反馈, 从而改进优化自己的产品,让更多的用户来主动帮它“代言” .

往往是那种死磕技术但是忽视真正的用户体验的产品, 虽然技术虽强, 但是在使用产品初期, 就把大部分用户“劝退”了.

很多技术人更倾向于把技术做好, 以技术思维来设计产品. 但是产品光有技术是不行的, 还得懂客户, 懂用户体验, 我们需要把自己假想成产品的“客户”, 如果“客户”都觉得这个有价值, 有购买意愿, 这个产品才能更好的成单.

这里举一个大家都比较熟悉的例子——雷军的小米SU7.

图片

虽然小米不是第一个造车, 但是一场汽车发布会下来, 却让一众老牌车企“洗面”.

当时也看了很多博主分享小米汽车爆单的原因, 其中最重要的就是用户体验. 在发布会上雷总真的是吊足了观众的胃口和对年轻人第一辆“xx车”的期望, 其爆款的背后是小米对大量用户诉求的思考, 并融入到了产品的设计中.

虽然我个人对这种产品模式不太苟同, 但是有一点是比较赞同的, 就是: 创业者要做一个懂客户的金牌销售.

国内的客户关系管理涉及到方方面面, 作为创业者一定要考虑客户关系的维护和管理.

这里分享我的几个创业经验:

  • 建立客户群(需求挖掘和市场洞察)
  • 建立产品用户群(提高产品体验, 获取产品体验数据)
  • 做好数据埋点(进一步分析产品决策, 用户属性)
  • 持续迭代产品
  • 在不影响大方向的前提下, 市场反馈优于技术实现
  • 做好产品营销(不要指望客户主动来找你)

打造竞争壁垒

我觉得AI盛行的当下, 小团队做互联网产品创业, 在不融资的情况下, 你的唯二的竞争壁垒就是:

  • 铁粉基数
  • 产品垂直度

因为任何软件技术都能被复制, 只要有足够的资金, 那如何才能和这些喜欢 copy 的公司竞争呢?

第一个就是你的粉丝基数, 如果你有大量的粉丝, 那么你已经成功一半了, 因为你有了第一批可能会帮你传播的用户, 并且能很快确定在当前行业的影响力.(当然后续的口碑也非常重要, 为了保证粉丝不会倒戈~)

其次我觉得就是你的创业项目得在垂直细分领域做的足够优秀, 至少达到Top3的水平. 不然很难在这个领域获取可持续的客户, 所以需要做深一个垂直细分领域, 这样才能形成一定的竞争壁垒.

说到这里, 还在规划做互联网创业的技术小伙伴们, 是否觉得有一丝丝压力了?

不急, 我来继续复盘.

短期收益 or 长期收益?

再来聊聊一个比较实际的话题, 就是创业的收益.

当然创业的方式有很多很多种, 有短期收益模式的, 比如说卖课广告等, 也有长期才能获取收益的, 比如做独立产品, 而我创业的方向是走长期收益的方向——做独立产品.

我相信很多技术圈友想创业的方向都是自研产品, 但是有一个现实的问题就是, 你的收益周期可能是3个月半年1年, 甚至更久. 而投入的成本来说也比较大, 比如服务器, 研发成本, 设计资源, 营销投入等.

我们在做可视化搭建产品的过程中(比如Dooringflowmix系列), 累计投入超过了20w, 还不包含人工研发成本. 虽然目前已经盈利, 但是还是需要持续的投入, 而且要做好半年不盈利的准备.

所以对于想独立做产品创业的小伙伴, 大家一定要慎重, 如果都具备了我上面说的条件, 大家再入局, 不然会非常“惨烈”的.

创业这一年, 都做了什么

接下来到了文章的“高潮”部分, 聊聊从1月到10月, 我们做了哪些可视化搭建产品.

1.Dooring零代码搭建平台

图片

2. Dooring智图, 在线图片设计平台

图片

  1. 橙子试卷, 表单问卷搭建平台

图片

4. flowmix/docx 多模态文档编辑引擎

图片

5. flowmix/flow 多模态工作流设计器

图片

未来的规划

后续还是会持续在可视化零代码领域做深耕, 同时借助AI技术, 让应用搭建门槛降到最低.

如果创业不达预期, 我可能也会像下面的博主一样, 继续在职场中卷卷卷啦!

图片

如果大家有好的创业想法, 或者想有一些技术交流, 欢迎随时和我沟通, 也可以在留言区和大家分享哦~


作者:徐小夕
来源:juejin.cn/post/7425600234523131956
收起阅读 »

「差生文具多」增大IDE字体,增大显示器

🍄 大家好,我是风筝 🌍 个人博客:【古时的风筝】。 本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。 每一个赞都是我前进的动力。 公众号:「古时的风筝」 上个月发“微博”的时候说IDE字体已经从 16号调到18号了,...
继续阅读 »

🍄 大家好,我是风筝


🌍 个人博客:【古时的风筝】。


本文目的为个人学习记录及知识分享。如果有什么不正确、不严谨的地方请及时指正,不胜感激。


每一个赞都是我前进的动力。


公众号:「古时的风筝」



上个月发“微博”的时候说IDE字体已经从 16号调到18号了,主要是一到换季的时候就有点鼻炎,导致眼睛也不舒服,看电脑时间长了就很累,结果我就给字体调大了。


你别说,该认怂就得认怂,调大了不丢人,字体一大果然就没那么累了。刚毕业的时候用12号字,后来改14号,再后来16号,这不,转眼18号字了,如果过两年还写代码的话,就奔着20号去了。



但是问题还是有的,我一般情况下是不怎么用外接显示器的,16寸写代码感觉够用了,除非要做一些大块儿内容的比对,否则,我的外接显示器就是一张风景图,搁旁边就剩下赏心悦目的作用了。


但是这18号字体一上,如果开着控制台的话,一屏也就能显示20行代码了。我之所以用 MacBook Pro,很大的一个原因就是显示屏,但是公司的外接显示器应该是 2K 显示器里最便宜的了,显示效果跟苹果比差了一大截。



看到我发的“微博”后,几个朋友就在群里聊起显示器来,最后一致认为苹果 Studio Display 是最好的显示器,唯一的缺点就是太贵了,最低的27寸 11499起,这你受的了吗?


一个醉心研究显示器和机械键盘的朋友让我看看明基(BenQ)RD280U,说是专业的编程显示器,而且护眼这一块儿做的特别到位,他说,你不是最关心这个吗,肯定对路。他说入手不想要的话可以转给他,他正好想把之前的华为显示器换了呢。


我查了一晚上资料后,这款显示器有两点最吸引我的地方:



  1. 它为编程场景专门做过定制设计,保证开发的时候能有更好的体验。

  2. 有专业的护眼硬件滤蓝光设置,看评论说用起来眼睛真的不累。


然后它就来了,28寸4K,好大一个箱子。快递小哥说这箱子还挺沉,我说是啊,一个显示器怎么这么大这么沉,快递小哥也有点儿惊讶。


拆开后,一个大箱子里面套了一个小箱子,但是是真的沉,好不夸张的说得有20多斤,料真足啊。



但是安装很方便,直接把底座扣上就好了。


1.gif


这是显示器的上桌效果,28寸,实话说已经很大了,再大的话,全屏写代码就有点儿费脖子了。



一般的显示器都是27寸 16:9 比例的,但是 RD280U 是3:2的,这样显示器更高一点,能多显示几行代码。


目前市面上特殊屏幕比的显示器商家很少,有成本、市场等很多原因,但也有很多程序员喜欢用方一点的屏幕,RD这款考虑到了,还挺贴心。对于我来说,这倒是小事,反正屏幕够大,也不差那几行代码。我最关心的还是显示效果,代码显示的清不清楚。


用惯了苹果的屏幕,其他的显示器一眼就能看出来清晰不清晰,结果,果然没让我失望。文字显示非常清晰,效果非常好。



专门的编码主题


这个显示器内置了几种模式,其中就包括专门的编码主题,一个是深色主题、一个是亮色主题,写代码的时候就直接调成这俩模式就行了。看电影、读书也有专门的主题。


2.gif


同时还有个专门的背光灯,晚上写代码就直接开背光灯就可以了,不用再单独开个台灯了,也不用开着室内灯了,有时候思路真的不能被打断,晚上背光灯亮起来就不用着急去开灯了,而且氛围感也不错。



另外,在晚上开启猫头鹰模式,也就是夜间保护模式,可以自动调节亮度,在搭配上深色模式,晚上写代码也很舒服。



反光处理


它对定点光源的反光效果处理的也很好,左边是 MacBook Pro,右边是 RD280U,效果还是很明显的。



但是建议写代码、看视频还是不要在强光下,总是对眼睛不好的。


用软件助手直接控制


与显示器配套的还有一个软件控制工具,叫做 「Display Pilot 2」,通过这个软件可以直接更改色彩主题、亮度。


还可以开启 MoonHalo ,MoonHalo 就是背光灯,还有夜间保护、智慧蓝光,还附赠个桌面分区的功能。



软件助手里还有一个 Flow 功能,可以自定义固定时间段里我想要的显示器色彩模式、护眼功能开启状态和其他参数。比如我晚上八点想看会电子书提前设置好Flow, 到点就直接切换了,非常丝滑。


还有一个用处


我家小朋友最近正在学习认表,我就给做了一个认表的网页,没事儿可以拿着大屏练习几分钟。


地址: http://www.moonkite.cn/clock-study…



点击暂停,表盘就会停止,这时候就可以让他看看是几点了,然后点击显示按钮就会出现刚才暂停的时刻。


有小孩子的可以拿来用一用。


然后顺道改了改,做了一个在线时钟,不用大屏的时候可以看时间用。


地址: moonkite.cn/clock.html



作者:古时的风筝
来源:juejin.cn/post/7436036522019143707
收起阅读 »

WebStorm现在免费啦!

前言 就在昨天1024程序员节,JetBrains突然宣布WebStorm现在对非商业用途免费啦。以后大家再也不用费尽心思的去找破解方法了,并且公告中的关于非商业用途定义也很有意思。 加入欧阳的高质量vue源码交流群、欧阳平时写文章参考的多本vue源码电子书 ...
继续阅读 »

前言


就在昨天1024程序员节,JetBrains突然宣布WebStorm现在对非商业用途免费啦。以后大家再也不用费尽心思的去找破解方法了,并且公告中的关于非商业用途定义也很有意思。


加入欧阳的高质量vue源码交流群、欧阳平时写文章参考的多本vue源码电子书


为什么免费


在公告中的原话是:



我们希望新的许可模式将进一步降低使用 IDE 的门槛,帮助大家学习、成长并保持创造力。



欧阳个人还是觉得现在大家都在使用vscode或者Cursor


如果我不想付费,那么我会选择开源的vscode,安装上插件后体验完全不输于WebStorm。


如果我想付费获得更好的体验,那么为什么不使用AI加持的Cursor呢?


前段时间网上有很多吸引人眼球的段子,比如:



我6岁的儿子使用Cursor开发了一个个人网站



又或者:



我是一名UI设计师,使用Cursor轻松的开发了一个APP



欧阳也一直在使用Cursor,虽然没有网上那些段子那样把Cursor吹的那么神。但是对于开发来说Cursor是真的很好用,经常觉得Cursor比我更知道我接下来应该写什么代码。如果我选择付费,为什么不考虑更加好用的Cursor呢?


不管是免费还是付费市场,vscode系的IDE已经占据了很大的比例。欧阳个人觉得WebStorm为了能够重新占据市场,所以选择推出非商业用途免费的WebStorm


非商业和商业有什么区别


非商业和商业的WebStorm区别只有一个,Code With Me 功能。如果是非商业的WebStorm里面的Code With Me 是社区版。


Code With Me是一个协作工具,允许多个开发者实时共享代码和协作编程。通过这项功能,用户可以在WebStorm、Rider等IDE中与他人共同编辑代码、进行调试和解决问题。


这个是Code With Me社区版和非社区版的区别:
code


如何判断是否是非商业


公告中的原文是:



商业产品是指有偿分发或提供、或者作为您的商业活动的一部分使用的产品。 但某些类别被明确排除在这一定义之外。 常见的非商业用例包括学习和自我教育、任何形式的内容创作、开源代码和业余爱好开发。



这不就是完全靠自觉吗?不需要证明我是用于非商业,欧阳觉得这是故意为之。


小公司使用Webstorm的非商业模式进行业务开发,人家看不上你,所以懒得搭理你。就像是以前在小公司里面使用破解版本的webstorm开发一样。


但是在公告中明确有写:



如果您使用非商业许可证,将无法选择退出匿名使用情况统计信息收集。 我们使用此类信息改进我们的产品。 这一规定与我们的抢先体验计划 (EAP) 类似,并符合我们的隐私政策



意思是如果你使用了非商业版本,那么JetBrains就能拿到你的数据。


如果在大公司里面使用非商业模式进行业务开发,那么Webstorm在拿到数据的情况下就是一告一个准。就像是大公司里面禁止使用破解版本的webstorm开发业务一样,欧阳个人觉得有点像是钓鱼。


如何使用非商业版


使用方式很简单,首先从官网下载安装包。然后在对话框中选择非商业模式,如下图:
step1


接着勾选协议,点击开始非商业使用,如下图:
step2


此时会在浏览器中新开页面让你登录,登录方式有很多种:比如谷歌、GitHub、微信等。这里欧阳选择的是谷歌登录,如下图:
step3


最后就成功啦,非商业有效期是一年,一年后会自动续订。
step4


总结


WebStorm推出的非商业版免费对于开发者来说肯定是好事,特别是一些使用WebStorm的独立开发,还有小公司里面的开发,但是大公司里面想使用非商业版就需要三思了。


作者:前端欧阳
来源:juejin.cn/post/7429381641700048923
收起阅读 »

程序员攻占小猿口算,炸哭小学生!

小学生万万没想到,做个加减乘除的口算练习题,都能被大学生、博士生、甚至是程序员大佬们暴打! 最近这款拥有 PK 功能的《小猿口算》App 火了,谁能想到,本来一个很简单的小学生答题 PK,竟然演变为了第四次忍界大战! 刚开始还是小学生友好 PK,后面突然涌...
继续阅读 »

小学生万万没想到,做个加减乘除的口算练习题,都能被大学生、博士生、甚至是程序员大佬们暴打!



最近这款拥有 PK 功能的《小猿口算》App 火了,谁能想到,本来一个很简单的小学生答题 PK,竟然演变为了第四次忍界大战!


登上应用商店榜一


刚开始还是小学生友好 PK,后面突然涌入一波大学生来踢馆,被网友称为 “大学生炸鱼”;随着战况愈演愈烈,硕士生和博士生也加入了战场,直接把小学生学习软件玩成了电子竞技游戏,谁说大一就不是一年级了?这很符合当代大学生的精神状态。


小猿口算排行榜(博一也是一年级)


然而,突然一股神秘力量出现,是程序员带着科技加入战场! 自动答题一秒一道 ,让小学生彻底放弃,家长们也无可奈何,只能在 APP 下控诉严查外挂。



此时很多人还没有意识到,小学生口算 PK,已经演变为各大高校和程序员之间的算法学术交流竞赛!



各路大神连夜改进算法,排行榜上的数据也是越发离谱,甚至卷到了 0.1 秒一道题!



算法的演示效果,可以看我发的 B 站视频。


接口也是口,算法也是算,这话没毛病。


这时,官方不得不出手来保护小学生了,战况演变为官方和广大程序员的博弈。短短几天,GitHub 上开源的口算脚本就有好几页,程序员大神们还找到了多种秒速答题的方案。



官方刚搞了加密,程序员网友马上就成功解密,以至于 网传 官方不得不高价招募反爬算法工程师,我建议直接把这些开源大佬招进去算了。



实现方法


事情经过就是这样,我相信朋友们也很好奇秒答题目背后的实现原理吧,这里我以 GitHub 排名最高的几个脚本项目为例,分享 4 种实现方法。当然,为了给小学生更好的学习体验,这里我就不演示具体的操作方法了,反正很快也会被官方打压下去。


方法 1、OCR 识别 + 模拟操作


首先使用模拟器在电脑上运行 App,运用 Python 读取界面上特定位置的题目,然后运用 OCR 识别技术将题目图片识别为文本并输入给算法程序来答题,最后利用 Python 的 pyautogui 库来模拟人工点击和输入答案。


这种方法比较好理解,应用范围也最广,但缺点是识别效果有限,如果题目复杂一些,准确度就不好保证了。


详见开源仓库:github.com/ChaosJulien…



方法 2、抓包获取题目和答案


通过 Python 脚本抓取 App 的网络请求包,从中获取题目和答案,然后通过 ADB(Android Debug Bridge)模拟滑动操作来自动填写答案。然而,随着官方升级接口并加密数据,这种方法已经失效。


详见开源仓库:github.com/cr4n5/XiaoY…



方法 3、抓包 + 修改答案


这个方法非常暴力!首先通过抓包工具拦截口算 App 获取题目数据和答案的网络请求,然后修改请求体中的答案全部为 “1”,这样就可以通过 ADB 模拟操作,每次都输入 1 就能快速完成答题。 根据测试可以达到接近 0 秒的答题时间!


但是这个方法只对练习场有效,估计是练习场的答题逻辑比较简单,且没有像 PK 场那样的复杂校验。


详见开源仓库:github.com/cr4n5/XiaoY…



方法 4、修改 PK 场的 JavaScript 文件


这种方法就更暴力了!在 PK 场模式下,修改 App 内部的 JavaScript 文件来更改答题逻辑。通过分析 JavaScript 响应中的 isRight 函数,找到用于判定答案正确与否的逻辑,然后将其替换为 true,强制所有答案都判定为正确,然后疯狂点点点就行了。


详见开源仓库:github.com/cr4n5/XiaoY…



能这么做是因为 App 在开发时采用了混合 App 架构,一些功能是使用 WebView 来加载网页内容的。而且由于 PK 场答题逻辑是在前端进行验证,而非所有请求都发送到服务器进行校验,才能通过直接修改前端 JS 文件绕过题目验证。


官方反制


官方为了保护小学生学习的体验,也是煞费苦心。


首先加强了用户身份验证和管理,防止大学生炸鱼小学生;并且为了照顾大学生朋友,还开了个 “巅峰对决” 模式,让俺们也可以同实力竞技 PK。



我建议再增加一个程序员模式,也给爱玩算法的程序员一个竞技机会。


其实从技术的角度,要打击上述的答题脚本,并不难。比如检测 App 运行环境,发现是模拟器就限制答题;通过改变题目的显示方式来对抗 OCR 识别;通过随机展示部分 UI, 让脚本无法轻易通过硬编码的坐标点击正确的答案;还可以通过分析用户的答题速度和操作模式来识别脚本,比如答题速度快于 0.1 秒的用户,显然已经超越了人类的极限。


0.0 秒的这位朋友,是不是有点过分(强大)了?



但最关键的一点是,目前 App 的判题逻辑是在前端负责处理的,意味着题目答案的验证可以在本地进行,而不必与服务器通信,这就给了攻击者修改前端文件的机会。虽然官方通过接口加密和行为分析等手段加强了防御,但治标不治本,还是将判题逻辑转移到服务端,会更可靠。


当然,业务流程改起来哪有那么快呢?




不过现在的局面也不错,大学生朋友快乐了,程序员玩爽了,口算 App 流量赢麻了,可谓是皆大欢喜!


等等,好像有哪里不对。。。别再欺负我们的小学生啦!



更多


💻 编程学习交流:编程导航 📃 简历快速制作:老鱼简历 ✏️ 面试刷题神器:面试鸭


作者:程序员鱼皮
来源:juejin.cn/post/7425121392738140214
收起阅读 »

冷板凳30年,离职时75岁!看完老爷子的简历,我失眠了

0x01 前几天,科技圈又一个爆款新闻相信不少同学都已经看到了。 那就是77岁的计算机科学家,同时也是一位享誉全球的人工智能专家 Geoffrey Hint0n 和 John J. Hopfield 一起,拿到了2024年诺贝尔物理学奖,以表彰他们通过人工神经...
继续阅读 »

0x01


前几天,科技圈又一个爆款新闻相信不少同学都已经看到了。


那就是77岁的计算机科学家,同时也是一位享誉全球的人工智能专家 Geoffrey Hint0n 和 John J. Hopfield 一起,拿到了2024年诺贝尔物理学奖,以表彰他们通过人工神经网络实现机器学习的奠基性发现和发明。



消息一出,在科技届引起了一阵广泛的关注和讨论,以至于不少同学都发出感叹,“AI法力无边”“人工智能终于不止是技术,而是科学了”


而提到 Hint0n 这个名字,对于学习和从事AI人工智能和机器学习等领域的同学来说,应该都非常熟悉了。


Hint0n 是一位享誉全球的人工智能专家,被誉为“神经网络之父”、“深度学习的鼻祖”、“人工智能教父”等等,在这个领域一直以来都是最受尊崇的泰斗之一。



而上一次 Hint0n 站在聚光灯下则是5年前,彼时的 Hint0n 刚拿下2018年度图灵奖。


至此,AI教父 Hint0n 也成为了图灵奖和诺贝尔奖的双料得主!


0x02


大多人都是因为近年大火的AI才了解的Hint0n,但是他之前的人生经历也是相当富有戏剧性的。


1947年,Geoffrey Hint0n出生于英国温布尔登的一个知识分子家庭。



他的父亲Howard Everest Hint0n是一个研究甲壳虫的英国昆虫学家,而母亲Margaret Clark则是一名教师。


除此之外,他的高曾祖父George Boole还是著名的逻辑学家,也是现代计算科学的基础布尔代数的发明人,而他的叔叔Colin Clark则是一个著名的经济学家。


可以看到,Hint0n家庭里的很多成员都在学术和研究方面都颇有造诣。


当然,在这样的氛围下长大的Hint0n,其成长压力也是可想而知的。


1970年,23岁的Hint0n获得了实验心理学的学士学位。但是,令谁也没有想到的是,毕业后这位“学二代”由于找不到科研的意义,他竟然先跑去当了一段时间的木匠。


不过这个经历并没有帮助他消除自己的阶段性迷茫,他一直希望真正理解大脑的运作原理,渴望更深入的理论研究,于是经历过一番思想斗争后又下决心重返学术殿堂,投身于人工智能领域。


直到 1978 年,他终于获得了爱丁堡大学人工智能学博士学位,而此时的他也已经 31 岁了。


那个年代做深度学习的研究可以说是妥妥的冷板凳,因为你要知道当时的AI正值理论萌芽阶段,Hint0n所主张和研究的深度学习派更是不太为关注和认可。


那面对这一系列冷漠甚至反对,唯有纯粹的相信与热爱才能将这个领域深耕了数十年,直到后来 AI 时代的来临。


而这一切,Hint0n 都做到了。


0x03


Hint0n主要从事神经网络和机器学习的研究,在AI领域做出过许多重要贡献,其中最著名的当属他在神经网络领域所做的研究工作。



他在20世纪80年代就已经开启了反向传播算法(Back Propagation, BP算法)的研究,并将其应用于神经网络模型的训练中。这一算法被广泛应用于语音识别、图像识别和自然语言处理等领域。



除此之外,Hint0n还在卷积神经网络(Convolutional Neural Networks,CNN)、深度置信网络(Deep Belief Networks,DBN)、递归神经网络(Recursive Neural Networks,RNN)、胶囊网络(Capsule Network)等领域做出了重要贡献。


2013年,Hint0n加入Google,同时把机器学习相关的很多技术带进了谷歌,同时融合到谷歌的多项业务之中。



2019年3月,ACM公布了2018年度的图灵奖得主。


图灵奖大家都知道,是计算机领域的国际最高奖项,也被誉为“计算机界的诺贝尔奖”。


而Hint0n则与蒙特利尔大学计算机科学教授Yoshua Bengio和Meta首席AI科学家Yann LeCun一起因为研究神经网络而获得了该年度的图灵奖,以表彰他们在对应领域所做的杰出贡献。



除此之外,Hint0n在他的学术生涯中发表了数百篇论文,这些论文中提出了许多重要的理论和方法,涵盖了人工智能、机器学习、神经网络、计算机视觉等多个领域。


而且他的论文被引用的次数也是惊人,这对于这些领域的研究和发展都产生了重要的影响。



0x04


除了自身在机器学习方面的造诣很高,Hint0n同时也是一个优秀的老师


当年为了扩大深度学习的圈子,Hint0n曾在多伦多大学成立过研究中心,专门接收有兴趣从事相关研究的年轻人,以至于现如今AI圈“半壁江山”都是他的“门生”。



Hint0n带过很多大牛学生,其中不少都被像苹果、Google等这类硅谷科技巨头所挖走,在对应的公司里领导着人工智能相关领域的研究。


这其中最典型的就是Ilya Sutskever,他是Hint0n的学生,同时他也是最近大名鼎鼎的OpenAI公司的联合创始人和首席科学家。



聊到这里,不得不感叹大佬们的创造力以及对这个领域所作出的贡献,同时也期待大佬们后续给大家带来更多精彩的故事。



注:本文在GitHub开源仓库「编程之路」 github.com/rd2coding/R… 中已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。



作者:CodeSheep
来源:juejin.cn/post/7425848834456961051
收起阅读 »

买了个mini主机当服务器

虽然有苹果的电脑,但是在安装一些软件的时候,总想着能不能有一个小型的服务器,免得各种设置导致 Mac 出现异常。整体上看了一些小型主机,也看过苹果的 Mac mini,但是发现它太贵了,大概要 3000 多,特别是如果要更高配置的话,价格会更高,甚至更贵。所以...
继续阅读 »

虽然有苹果的电脑,但是在安装一些软件的时候,总想着能不能有一个小型的服务器,免得各种设置导致 Mac 出现异常。整体上看了一些小型主机,也看过苹果的 Mac mini,但是发现它太贵了,大概要 3000 多,特别是如果要更高配置的话,价格会更高,甚至更贵。所以,我就考虑一些别的小型主机。也看了一些像 NUC 这些服务器,但是觉得还是太贵了。于是我自己去淘宝搜索,找到了这一款 N100 版的主机。


成本的话,由于有折扣,所以大概是 410 左右,然后自己加了个看上去不错的内存条花了 300 左右。硬盘的话我自己之前就有,所以总成本大概是 700 左右。大小的话,大概是一台手机横着和竖着的正方形大小,还带 Wi-Fi,虽然不太稳定。


iowejofwjeofjwoeifjwoe


一、系统的安装


系统我看是支持windows,还有现在Ubuntu,但是我这种选择的是centos stream 9, 10的话我也找过,但是发现很多软件还有不兼容。所以最终还是centos stream 9。


1、下载Ventoy软件


去Ventoy官网下载Ventoy软件(Download . Ventoy)如下图界面


QQ_1727625608185


2、制作启动盘


选择合适的版本以及平台下载好之后,进行解压,解压出来之后进入文件夹,如下图左边所示,双击打开Ventoy2Disk.exe,会出现下图右边的界面,选择好自己需要制作启动盘的U盘,然后点击安装等待安装成功即可顺利制作成功启动U盘。


3、centos安装


直接取官网,下载完放到u盘即可。


QQ_1727625711792


它的BIOS是按F7启动,直接加载即可。


image-20241007222938414


之后就是正常的centos安装流程了。


二、连接wifi


因为是用作服务器的,所以并没有给它配置个专门的显示器,只要换个网络,就连不上新的wifi了,这里可以用网线连接路由器进行下面的操作即可。


在 CentOS 系统中,通过命令行连接 Wi-Fi 通常需要使用 nmcli(NetworkManager 命令行工具)来管理网络连接。nmcli 是 NetworkManager 的一个命令行接口,可以用于创建、修改、激活和停用网络连接。以下是如何使用 nmcli 命令行工具连接 Wi-Fi 的详细步骤。


步骤 1: 检查网络接口


首先,确认你的 Wi-Fi 网络接口是否被检测到,并且 NetworkManager 是否正在运行。


nmcli device status

输出示例:


DEVICE         TYPE      STATE         CONNECTION
wlp3s0 wifi disconnected --
enp0s25 ethernet connected Wired connection 1
lo loopback unmanaged --

在这个示例中,wlp3s0 是 Wi-Fi 接口,它当前处于未连接状态。


步骤 2: 启用 Wi-Fi 网卡


如果你的 Wi-Fi 网卡是禁用状态,可以通过以下命令启用:


nmcli radio wifi on

验证 Wi-Fi 是否已启用:


nmcli radio

步骤 3: 扫描可用的 Wi-Fi 网络


使用 nmcli 扫描附近的 Wi-Fi 网络:


nmcli device wifi list

你将看到可用的 Wi-Fi 网络列表,每个网络都会显示 SSID(网络名称)、安全类型等信息。


步骤 4: 连接到 Wi-Fi 网络


使用 nmcli 命令连接到指定的 Wi-Fi 网络。例如,如果你的 Wi-Fi 网络名称(SSID)是 MyWiFiNetwork,并且密码是 password123,你可以使用以下命令连接:


nmcli device wifi connect 'xxxxxx' password 'xxxxx'

你应该会看到类似于以下输出,表明连接成功:


Device 'wlp3s0' successfully activated with 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.

步骤 5: 验证连接状态


验证网络连接状态:


nmcli connection show

查看当前连接的详细信息:


nmcli device show wlp3s0

三、VNC远程连接


桌面还是偶尔需要用一下的,虽然用的不多。


root@master:~# dnf install  -y  tigervnc-server
root@master:~# vncserver
bash: vncserver: command not found...
Install package 'tigervnc-server' to provide command 'vncserver'? [N/y] y


* Waiting in queue...
* Loading list of packages....
The following packages have to be installed:
dbus-x11-1:1.12.20-8.el9.x86_64 X11-requiring add-ons for D-BUS
tigervnc-license-1.14.0-3.el9.noarch License of TigerVNC suite
tigervnc-selinux-1.14.0-3.el9.noarch SELinux module for TigerVNC
tigervnc-server-1.14.0-3.el9.x86_64 A TigerVNC server
tigervnc-server-minimal-1.14.0-3.el9.x86_64 A minimal installation of TigerVNC server
Proceed with changes? [N/y] y


* Waiting in queue...
* Waiting for authentication...
* Waiting in queue...
* Downloading packages...
* Requesting data...
* Testing changes...
* Installing packages...

WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream.
Please read /usr/share/doc/tigervnc/HOWTO.md for more information.

You will require a password to access your desktops.

getpassword error: Inappropriate ioctl for device
Password:

之后在mac开启屏幕共享就可以了


image-20241007225855305


QQ_1728313164289


四、docker 配置


docker安装我以为很简单,没想到这里是最难的一步了。安装完docker之后,总是报错:


Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded

即使改了mirrors也毫无作用


{
"registry-mirrors": [
"https://ylce84v9.mirror.aliyuncs.com"
]
}

看起来好像是docker每次pull镜像都要访问一次registry-1.docker.io,但是这个网址国内已经无法连接了,各种折腾,这里只贴一下代码吧,原理就就不讲了(懂得都懂)。


img


sslocal -c /etc/猫代理.json -d start
curl --socks5 127.0.0.1:1080 http://httpbin.org/ip

sudo yum -y install privoxy

vim /etc/systemd/system/docker.service.d/http-proxy.conf


[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8118"

/etc/systemd/system/docker.service.d/https-proxy.conf


[Service]
Environment="HTTPS_PROXY=http://127.0.0.1:8118"

最后重启docker


systemctl start privoxy
systemctl enable privoxy
sudo systemctl daemon-reload
sudo systemctl restart docker

QQ_1729956484197


五、文件共享


sd卡好像读取不了,只能换个usb转换器


fdisk -l
mount /dev/sdb1 /mnt/usb/sd

在CentOS中设置文件共享,可以使用Samba服务。以下是配置Samba以共享文件的基本步骤:



  1. 安装Samba


sudo yum install samba samba-client samba-common


  1. 设置共享目录


    编辑Samba配置文件/etc/samba/smb.conf,在文件末尾添加以下内容:



[shared]
path = /path/to/shared/directory
writable = yes
browseable = yes
guest ok = yes


  1. 设置Samba密码


    为了允许访问,需要为用户设置一个Samba密码:



sudo smbpasswd -a your_username


  1. 重启Samba服务


sudo systemctl restart smb.service
sudo systemctl restart nmb.service


  1. 配置防火墙(如果已启用)


    允许Samba通过防火墙:



sudo firewall-cmd --permanent --zone=public --add-service=samba
sudo firewall-cmd --reload

现在,您应该能够从网络上的其他计算机通过SMB/CIFS访问共享。在Windows中,你可以使用\\centos-ip\shared,在Linux中,你可以使用smbclient //centos-ip/shared -U your_username


QQ_1730035390803


参考:


https://猫代理help.github.io/猫代理/linux.html


stackoverflow.com/questions/4…


作者:wwwzh
来源:juejin.cn/post/7430460789067055154
收起阅读 »

6个月时间,我放弃一人企业又去打工了

本来没有心情写的,但是跟读者承诺过三个月后再汇报…… 因为被欠薪,在IT圈子规规矩矩上班12年,年龄34岁的我,决定先不找工作。今年4月份打算在家里自己搞些事情,并且还发布了一篇《IT男的一人企业》以明志。随后,“TF男孩”修改昵称为“IT男的一人企业”,斗志...
继续阅读 »

本来没有心情写的,但是跟读者承诺过三个月后再汇报……


因为被欠薪,在IT圈子规规矩矩上班12年,年龄34岁的我,决定先不找工作。今年4月份打算在家里自己搞些事情,并且还发布了一篇《IT男的一人企业》以明志。随后,“TF男孩”修改昵称为“IT男的一人企业”,斗志昂扬地高喊自由之歌:打工一眼看到头,创业灵活又自由……


7月份,过去三个月了,我写了一篇总结《那个不找工作在家干一人企业的程序员,现在怎么样了?》,汇报了我的收入和近况。其实那三个月,已经是巅峰。对于我来说,一个月挣1万多,已经是到顶了。


到8月份时,收入减至一千,9月时,低至几百。让我放弃的主要原因没有别的,就是收入。本身我的太太不支持我辞职,即便我有很多理由,比如这个行业可能是青春饭,要早考虑以后,早死早投胎,等人家失业,我已经探索出新路子了。而她的想法却是既然是青春饭,那就趁着青春多吃几年,等到吃不动再探索。


为了实现自己的想法,我还专门回老家,问父母要了些钱,这些钱等同原来两个月的工资。这样,我才有了底气去放心做一人企业。


后来的事情,如上文总结里所说,其实还可以。凭借我多年写文章的影响力,我主打一个廉价可行AI技术方案。就是写很多小老板想实现的,但是他们问自己的技术部,技术部说不可能实现。一般小企业技术能力一般,另外也懒惰。而这事在我这里成本只需要三五千。我一般会推荐他们看我的教程文章,如果抄作业他们都懒得抄。老板们就会找我做。成本低,他们也愿意试错,因为亏不了多少。而如果成了,他们的业务可能会插上飞翔的翅膀。我提供的AI方案,也确是可行,是自己验证过的适合小企业的低成本(尽量CPU)、开源、可商用、可本地化部署的项目。


8月、9月两个月孩子放暑假,我是专职带娃。没想到,带娃后根本没时间。我买了两个沙漏用于时间可视化。我跟孩子约定,她自己玩一个沙漏时间,然后我陪她一个沙漏的时间,类似于番茄工作法。这样,我就有些时间做自己想做的。但是,孩子虽然表面答应,她还是跟你捣乱。只能孩子睡觉时做些事情。


也是这个时候,家庭矛盾开始激化。主要还是没钱。但是却体现在我地拖得不干净,饭做得不好吃,为什么孩子又在看动画片……没办法,受不了鸡飞狗跳,提高厨艺根本没用,获取持续稳定的收入,是解决一切问题的关键。


9月中期开始找工作,很快就找到了。现在找AI算法岗位工作并不难。但凡招人的企业,就算是三五个人的小公司,它也要招一个AI工程师,为的就是盘活老业务,讲好智能故事。


我入职的是一个500多人的传统企业,成立20多年了,这里IT技术十来人。除了上线前后,不加班,当然工资也不高。


另外,上家公司的欠薪至今也没有追回来。去年9月开始欠薪,今年年初仲裁判决公司支付我拖欠的工资。然后公司不服仲裁判决,向法院起诉,我已收到传票。看到公司的起诉状我也无语了,他请求法院判定不支付工资xx.1元,应支付工资是xx.2元。改了一个数,还给我涨了钱,继续走一审二审。一个周期又是半年起步。目前公司面临几百例强制执行和几十个限制高消费,都是劳动纠纷的,已经启动破产。而根源则是老板盲目扩张,欠薪几千万了,还未停止大规模招人。他总想着自己振臂一呼,大量资金会涌入。


从去年9月到今年9月,我已经一年没有工资收入了。这也是经济压力大的原因。换哪个普通家庭都受不了。这么看,打工是有风险的。但是,打工的风险可控。最多损失1~2个月工资。当然,这得是你足够机灵的情况下。上家公司,被欠八个月工资的也有,甚至有员工私人带款给公司花。里面的操作不细说。


不打工的风险我也试过。就是上面写的,可能持续没有收入,是消耗存量等待增量。


我以前觉得,对于个人的事业,可能只有拼进全力才能稍微有点效果。比如我要验证一件自己的想法,上班时可能需要半年。但是当我全职去做时,可能半个月就验证出来了。看得鸡汤多了些,说什么行业竞争很激烈,时间就是机会,人家专职团队都干不成,凭啥你业余时间搞就能成功。所以要全身心投入创业。


而我的老领导说,如果你有想法,上着班也能把一个事业干成。如果你没有想法,就算专职干也没啥用。有些事情是需要孵化周期的,还有些事情是需要等待的。长期策略更适合普通人。我感觉还是他的话比较温和与现实。


事情就是这么个事情。昵称又改回了“TF男孩”。TF是TensorFlow的简称,因为我学AI是从tensorflow开始。以后也没有啥一人企业了。我乐意变回那个普通的男孩。


作者:TF男孩
来源:juejin.cn/post/7424915312166600755
收起阅读 »

离职后的这半年,我前所未有的觉得这世界是值得的

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界。 为什么要辞职,一是因为各种社会、家庭层面...
继续阅读 »

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界


为什么要辞职,一是因为各种社会、家庭层面的处境对个人身心的伤害已经达到了不可逆转的程度,传播互联网负面情绪的话我也不想多说了,经历过的朋友懂得都懂,总结来说就是,在当前处境和环境下,已经没有办法感受到任何的快乐了,只剩焦虑、压抑,只能自救;二是我觉得人这一辈子,怎么也得来一次难以忘怀、回忆起来能回甘的经历吧!然而在我的计划中,不辞职的话,做不到。


3 月


在 3 月份,我去考了个摩托车驾-照,考完后购买了一辆摩托车 DL250,便宜质量也好,开始着手准备摩旅。


webwxgetmsgimg.jpg


4 月份正式离职后,我的初步计划是先在杭州的周边上路骑骑练下车技,直接跑长途还是很危险的,这在我后面真的去摩旅时候感受颇深,差点交代了。


4 月


4.19 号我正式离职,在杭州的出租屋里狠狠地休息了一个星期,每天睡到自然醒,无聊了就打打游戏,或者骑着摩托车去周边玩,真的非常非常舒服。


不过在五一之前,我家里人打电话跟我说我母亲生病了,糖尿病引发的炎症,比较严重,花了 2w+ 住院费,也是从这个时候才知道我父母都没有交医保(更别说社保),他们也没有正式、稳定的工作,也没有一分钱存款,于是我立马打电话给老家的亲戚让一个表姐帮忙去交了农村医保。所有这些都是我一个人扛,还有个亲哥时不时问我借钱。


381728547058_ 拷贝.jpg


说实话,我不是很理解我的父母为什么在外打工那么多年,一分钱都存不下来的,因为我从小比较懂事,没让他们操过什么心,也没花过什么大钱。虽然从农村出来不是很容易,但和周围的相同条件的亲戚对比,我只能理解为我父母真的爱玩,没有存钱的概念。


我可能也继承了他们的基因吧?才敢这样任性的离职。过去几年努力地想去改变这个处境,发现根本没用,还把自己搞得心力交瘁,现在想想不如让自己活开心些吧。


5 月


母亲出院后,我回到杭州和摩友去骑了千岛湖,还有周边的一些山啊路啊,累计差不多跑了 2000 多公里,于是我开始确立我的摩旅计划,路线是杭州-海南岛-云南-成都-拉萨,后面实际跑的时候,因为云南之前去过,时间又太赶,就没去云南了。


2024-10-11 103931.jpg


6 月


在摩友的帮助下,给摩托车简单进行了一些改装,主要加了大容量的三箱和防雨的驮包,也配备了一些路上需要的药品、装备,就一个人出发了。


2024-10-11 103949.jpg


从杭州到海南这部分旅行,我也是简单记录了一下,视频我上传了 B 站,有兴趣的朋友可以看看:


拯救焦虑的29岁,考摩托车驾-照,裸辞,买车,向着自由,出发。


摩托车确实是危险的,毕竟肉包铁,即使大部分情况我已经开的很慢,但是仍然会遇到下大雨路滑、小汽车别我、大货车擦肩而过这种危险情况,有一次在过福建的某个隧道时,那时候下着大雨,刚进隧道口就轮胎打滑,对向来车是连续的大货车,打滑之后摩托车不受控制,径直朝向对向车道冲过去,那两秒钟其实我觉得已经完蛋了,倒是没有影视剧中的人生画面闪回,但是真的会在那个瞬间非常绝望,还好我的手还是强行在对龙头进行扳正,奇迹般地扳回来且稳定住了。


过了隧道惊魂未定,找了个路边小店蹲在地上大口喘气,雨水打湿了全身加上心情无法平复,我全身都是抖的,眼泪也止不住流,不是害怕,是那种久违地从人类身体发出的求生本能让我控制不住情绪的肆意发泄。


在国道开久了人也会变得很麻木,因为没什么风景,路况也是好的坏的各式各样,我现在回看自己的记录视频,有的雨天我既然能在窄路开到 100+ 码,真的很吓人,一旦摔车就是与世长辞了。


不过路上的一切不好的遭遇,在克服之后,都会被给予惊喜,到达海南岛之后,我第一次感觉到什么叫精神自由,沿着海边骑行吹着自由的风,到达一个好看的地方就停车喝水观景,玩沙子,没有工作的烦扰,没有任何让自己感受到压力的事情,就像回到了小时候无忧无虑玩泥巴的日子,非常惬意。


稿定设计导出-20241011-112615.jpg


在完成海南环岛之后,我随即就赶往成都,与前公司被裁的前同事碰面了。我们在成都玩了三天左右,主要去看了一直想看的大熊猫🐼!


2024-10-11 174426.jpg


之后我们在 6.15 号开始从成都的 318 起始点出发,那一天的心情很激动,感觉自己终于要做一件不太一样的事,见不一样的风景了。


401728642422_.pic.jpg


小时候在农村,读书后在小镇,大学又没什么经济能力去旅行,见识到的事物都非常有限,但是这一切遗憾在川藏线上彻底被弥补了。从开始进入高原地貌,一路上的风景真的美到我哭!很多时候我头盔下面都是情不自禁地笑着的,发自内心的那种笑,那种快乐的感觉,我已经很久很久很久没有了。


稿定设计导出-20241011-184041.jpg


同样地,这段经历我也以视频的方式记录了下来,有兴趣的朋友可以观看:


以前只敢想想,现在勇敢向前踏出了一步,暂时放下了工作,用摩托跑完了318


到拉萨了!


411728642433_.pic.jpg


花了 150 大洋买的奖牌,当做证明也顺便做慈善了:)


421728642441_.pic_h111d.jpg


后面到拉萨之后我和朋友分开了,他去自驾新疆,我转头走 109 国道,也就是青藏线,这条线真的巨壮美,独自一人行驶在这条路,会感觉和自然融合在了一起,一切都很飘渺,感觉自己特别渺小。不过这条线路因为冻土层和大货车非常非常多的原因,路已经凹凸不平了,许多炮弹坑,稍微骑快点就会飞起来。


这条线还会经过青海湖,我发誓青海湖真的是我看到过最震撼的景色了,绿色和蓝色的完美融合,真的非常非常美,以后还要再去!


2024-10-11 185558.jpg


拍到了自己的人生照片:


2024-10-11 185623.jpg


经历了接近一个半月的在外漂泊,我到了西宁,感觉有点累了,我就找了个顺丰把摩托车拖运了,我自己就坐飞机回家了。


这一段经历对我来说非常宝贵,遇到的有趣的人和事,遭遇的磨难,见到的美景我无法大篇幅细说,但是每次回想起这段记忆我都会由衷地感觉到快乐,感觉自己真的像个人一样活着。


这次旅行还给了我感知快乐和美的能力,回到家后,我看那些原来觉得并不怎么样的风景,现在觉得都很美,而且我很容易因为生活中的小确幸感到快乐,这种能力很重要。


7 月


回到家大概 7 月中旬。


这两个多月的经历,我的身体和心态都调整的不错了,但还不是很想找工作,感觉放下内心的很多执念后,生活还是很轻松的,就想着在家里好好陪陪母亲吧,上班那几年除了过年都没怎么回家。


在家里没什么事,但是后面工作的技能还是要继续学习的,之前工作经历是第一家公司用的 React 16,后面公司用的是 Vue3,对 React 有些生疏,我就完整地看了下 React 18 的文档,感觉变化也不是很大。


8、9 月


虽然放下了许多执念,对于社会评价(房子、结婚、孩子)也没有像之前一样过于在乎了,但还是要生活的,也要有一定积蓄应对未来风险,所以这段时间在准备面试,写简历、整理项目、看看技术知识点、刷刷 leetcode。


也上线了一个比较有意义的网站,写了一个让前端开发者更方便进行 TypeScript 类型体操的网站,名字是 TypeRoom 类型小屋,题源是基于 antfu 大佬的 type-challenges


目前 Type Challenges 官方提供了三种刷题方式



这几种方式其实都很方便,不过都在题目的可读性上有一定的不足,还对开发者有一定的工具负担、IDE 负担。


针对这个问题,也是建立 TypeRoom 的第一个主要原因之一,就是提供直接在浏览器端就能刷题的在线环境,并且从技术和布局设计上让题目描述和答题区域区分开来,更为直观和清晰。不需要额外再做任何事,打开一个网址即可直接开始刷题,并且你的答题记录会存储到云端。


欢迎大家来刷题,网址:typeroom.cn


截屏2024-10-12 21.53.26.png


因为个人维护,还有很多题目没翻译,很多题解没写,也还有很多功能没做,有兴趣一起参与的朋友可以联系我哦,让我一起造福社区!


同时也介绍下技术栈吧:


前端主要使用 Vue3 + Pinia + TypeScript,服务端一开始是 Koa2 的,后面用 Nest 重写了,所以现在服务端为 Nest + Mysql + TypeORM。


另外,作为期待了四年,每一个预告片都看好多遍的《黑神话·悟空》的铁粉,玩了四周目,白金了。


WechatIMG43.jpg


现在


现在是 10 月份了,准备开始投简历找工作了,目前元气满满,不急不躁,对工作没有排斥感了,甚至想想工作还蛮好的,可能是闲久了吧,哈哈哈,人就是贱~


最后


其实大多数我们活得很累,都是背负的东西太多了,而这些大多数其实并不一定要接受的,发挥主观能动性,让自己活得开心些最重要,加油啊,各位,感谢你看到这里,祝你快乐!


这是我的 github profile,上面有我的各种联系方式,想交个朋友的可以加我~❤️


作者:vortesnail
来源:juejin.cn/post/7424902549256224804
收起阅读 »

HR的骚操作,真的是卧龙凤雏!

现在基本已经对通过面试找工作不抱啥希望了。 有时候面试官和我聊的,还没有前面hr小姐姐和我聊的多,我一听开场白就基本知道就是拿我走个过场,没戏! 现在的面试流程都是人事先和你聊半天,没什么硬伤大坑才会放你去见面试官。 二零一几年那会可不是这样,第一次的详聊都是...
继续阅读 »

现在基本已经对通过面试找工作不抱啥希望了。


有时候面试官和我聊的,还没有前面hr小姐姐和我聊的多,我一听开场白就基本知道就是拿我走个过场,没戏!


现在的面试流程都是人事先和你聊半天,没什么硬伤大坑才会放你去见面试官。


二零一几年那会可不是这样,第一次的详聊都是直接业务层,业务的人觉得你ok,你再和人事沟通,定个薪资就完了。


13年的时候我在一家外企,三千的月薪。当时我一个小目标就是月薪过五千。


可别笑,13年的月薪五千,那还是能勉强算上一个小白领的。


我就老琢磨着升职加薪。但眼下的公司规模小,人员基本不扩增,不流通,我就想跳槽了。


当时我同时面了AB两家外资游戏公司。都过了业务层的面试,只剩和人事定薪资。


我给A公司报价5500,给B公司报价6000,因为我知道B公司刚来国内开拓业务,属于扩张期。


这时候,A公司HR的骚操作就来了,她说:“嗯,5500嘛,有难度,但不是不可能,我可以帮你跟老板争取。”


然后又问我:“你已经从现在的公司里面离职了吗?”


我说:“还没呢,我想先把下家定了。”


她就说:“哎呀,那有点难办,你得先从现在这家公司离职,我得确保我帮你争取下来后,你不会鸽我,不然我没法和老板交代,要不你先把那边离职办了吧。”


我说:“那我再考虑考虑吧。”


然后没过两天,我收到了B公司的offer。人家都没还价,直接定了6000,我就开始走离职手续。


这时候A公司的HR又出来问我,你从现在的公司离职了吗?


我说离了,她说你给我看看离职证明,我就拍照给她看离职证明。


然后她连假装让我等一会儿,说自己去问一下老板的戏都不演了,直接秒回说:“我帮你问了老板了,老板说不行,5500给不了,最多给到4500,要不你先入职呢,后面有机会提加薪的。”


瞬间给我恶心的,怎么会有这么恶心的人事!先把你忽悠离职,然后翻脸不认人,可劲往下砍价,为了公司的KPI,自己做人的脸都不要了。


我当时就觉得这样的人真傻,就算我认了4500的杀价入了职,我把和她的对话记录公司群里一发,老板会怎么看她,同事会怎么看她。


咱做人得有底线呀,你用这种脏办法帮公司省那几百块钱,还把自己的名声信誉搭进去了,真的值得吗?


后来我在入职B公司差不多半年后,传来了A公司解散倒闭的消息,我心里还暗爽了一把,幸亏当年没进那个火坑。


但半年后,我所在的B公司也解散了。


2013年那是一个手游刚兴起的疯狂年代,数不清的大小公司起家,创业,失败,解散,换批核心班子,再起家,再失败,浮浮沉沉,我也成了疯狂年代下的沧海一粟。


作者:程序员Winn
来源:juejin.cn/post/7426685644230213643
收起阅读 »

37 岁程序员被裁日记

37 岁被裁员,老婆即将临盆,求职却毫无音讯,我经历了人生中最艰难的时刻。我将这段时间每天发生的故事写进了日记,既是对未来生活的警醒,也希望能给面临相似困境的同伴们带来一些启示——无论多么艰难,绝不能放弃希望。 2024.8.27 (背景) 我在 2021 ...
继续阅读 »

37 岁被裁员,老婆即将临盆,求职却毫无音讯,我经历了人生中最艰难的时刻。我将这段时间每天发生的故事写进了日记,既是对未来生活的警醒,也希望能给面临相似困境的同伴们带来一些启示——无论多么艰难,绝不能放弃希望。



2024.8.27 (背景)


我在 2021 年九月底入职了某外企(以下简称 CP),合同三年。入职后,才知道这家企业有两个“潜规则”:



  • Senior 岗(我就是这个岗)如果三年内不能晋升,原则上就滚蛋

  • 每年大约有 10% ~ 15%的 PIP(绩效优化)比率


我躲过了三年的 PIP,但是没机会晋升。按惯例,三年合同到期前,公司会提前一个月通知我不再续约。只是这个是潜规则,所以我一直心存侥幸,盼着已经是 8 月底了,如果没有通知我,就可以躲过这一难。


但是——真的是卡着点——今天我还是被老板通知不续约了,他的话很平静:“有一个对你不是很好的消息要告诉你,director 想换一个更好的前端……”。


其实从去年年底开始我就意识到了不对劲,但是一直心存幻想,想在最后的 promotion 的机会里再拼一次;即便没有晋升成功,也想让老板感觉到我有点价值——至少能保住饭碗。然后上半年一个人徒手搭建了新的 web 技术栈,一举减少了大几十天的人力成本;部门上线新项目,45%工作是前端相关,我带着四五个不大会写 react 的后端同事紧赶慢赶完成了交付;这期间我参加了公司的 hackathon 项目,还获得了优胜;另外还在部门里分享里数次 Lightning talks,还有两个专利的输出。总以为这些努力至少不会让老板 nominate 我的时候太觉难堪吧。可是,nomination 还是与我无关,他的回复是“你没达到我的 bar,我是不会 nominate 你的;你如果觉得有续约风险,你应该一早让 director 来 nominate 你”。冷冰冰的,没有一丝三年共事的情分。确实是我太幼稚了,我以为我和老板的关系是:我给你干活,你帮我实现职业目标;但是这个老板的想法是,我是公司派来监督你的人,你不合格,我就替公司换人。


后来我提前问他续约的事,他信誓旦旦地说“现在招个 L6-2 的前端不容易(公司政策只招比我级别高的人),我会同意让你续约的”,我又问他这个谁说了算,他说他说了算。但是我一点都不信。过了一个月我们部门 L6-1 的前端 HC 赫然在目(L6-1 需要 VP 特批才能要到 HC);但是他依旧装着什么都不说,非得等到 8 月底最后一次 1 on 1 的机会(每两周我和他有一次 1 on 1),他才告诉我:“有一个对你不是很好的消息要告诉你,director 想换一个更好的前端……”


他一直知道我的困难: 外面行情很差、我年纪也不小了、老婆即将临盆。但是最后的谈话,至始至终都在甩锅给上级;切记切记,不要相信老板的说辞,不要对公司抱有幻想,更不要心存侥幸。和他的谈话结束后,我就与几个要好的同事做了简短的告别;之后一个月基本不会去厂里了,毕竟已经没有意义了。


2024.8.28


早上还是有一些同事找我处理业务上的事,我私信回了它们,不再参与代码了。他们虽然有点震惊,最后也给了我祝福。一些同事很讲义气的,给我推了 HR 和猎头。



  • 早上,我联系了一个猎头,告诉我蚂蚁国际有 HC,但是我还没准备中文版的简历,也没开始背八股,所以暂时没投递。

  • 中午,我联系了途虎的 HR,我直言不讳地问了是否卡年龄。我感觉她犹豫了,37 岁却是太大了。

  • 下午,我和 AWX 的前同事喝了杯咖啡。他是这里的后端开发,帮我询问了前端的面试流程。听说 leetcode 难度可能到 hard;而且很难躲过我最讨厌的八股文。对于项目面,他的经验是去别的厂里多历练历练,能把项目吹得滴水不漏才好。


然后回家的时候,CP HR 通知我可以讨论赔偿的事宜了。真的是太感人了:昨天老板通知,今天 HR 就来了,太急了吧。我又联系了之前被赶走的同事,他告诉我公司还是很抠的:是个小 n,不是大 N。哎……


2024.8.29


今天早上陪老婆去做了产检,孩子的预产期是十月初,而我的工作合同将在 9 月 29 日正式结束。希望宝宝能带来好运,出生时爸爸已经为他准备好了奶粉钱。顺带一提,我推迟了和法务部门第二天的会面,关于赔偿的问题暂时不急,还是找些时间专心学习吧。


午饭后,我更新了一版简历并发送给了途虎的 HR,但遗憾的是一天都没有收到回复。下午,隔壁邻居开始装修,噪音让我无法静心学习。于是,我选择去了社区图书馆,这里不仅可以免费看书,还有空调,虽然没有网络,但说实话,是一个避暑的好去处。


图书馆里主要是一些做作业的学生以及一位白发苍苍的老奶奶,她用放大镜整整看了一下午的报纸。而我,也趁机读完了一整本《图解 HTTP》。不过,为了确保面试顺利,还得专门背诵一些关于 HTTP 的面试题。


2024.8.30


早上,我给蚂蚁国际的猎头发了简历,时间不等人,无论如何我也得硬着头皮上了。她给了我几道历年真题,但都是大路货,没什么用。


下午的时候,base 在韩国的一个同事来问我现状,推荐我可以看看 Booking 和 AWX。Booking 我知道已经没有 HC 了,AWX 还想再准备一下。虽然没什么帮助,但是哥们这么老远还特地来关心我,还是很讲义气的,感动……


2024.8.31


今天礼拜六,对于找工作的人来说,没有双休日。我又去了社区图书馆,这里每天都开放。道听途说某些公司的前端可能会有 UI 设计面,我看完了《用户体验要素》。不过,囫囵吞枣,应该对面试起不了太大作用。说实在这个阶段最难的是:不知道自己缺什么;感觉什么都要准备,但是什么都不够。
老婆比我更加焦虑了,大着肚子,看她也没睡好。然后催着我快点给 AWX 投简历。说实在,它们家是现在我能发现难得有我这种 HC 的外企了,第一面就是它们家很担心凉凉了。


2024.9.01


今天又是学习的一天。早上第一件事是背六级单词;每天 20 个单词,累计打卡第 254 天。在 CP 这些年,最大的收获还是上英语课——Speexx。两次半年的口语培训,让我有了很大的成长;虽然和 Native English speaker 相比还是有本质差距的,但是对国内有英语要求的公司,这些年我不再那么心虚了。


中午时分,老婆在刷 boss 直聘的时候,看到 Paypal 放出了 HC。虽然这样的公司一次可能就放一两个 HC 吧,但还是让我阴霾的心闪现出一丝光亮:“金九银十”要来了?我马上托同事帮我打听内部情况——他老婆正好在 paypal 当前端,应该周一才能知道详情。他又提醒我可以海投国内大厂,比如美团、字节、腾讯什么的,不要总是想着小而美的外企。他去过很多公司,身经百战;而我九年就跳过一次槽,心中还有”面试恐惧症“。他的话一下把我点醒了——我现在的工作就是“面试”,没什么可患得患失了。


2024.9.02


早上本来要陪老婆去产检的,但是被她厉声喝止了:让我专心在家改简历——把 AWX 的简历交了。这种糟糕的心态,不可避免地传递到了老婆身上了。于是我又改了版简历,给 AWX 的师兄交了过去;他帮我指出了几处拼写错误——幸好师兄心善,真的是太丢脸了。不到一个小时,HR 就加我微信了。我想缓缓,就把 HR 的电话面约到了第二天。(真没出息,竟然三年没面过试,HR 面都紧张成这样了)
下午的时候,又一个同事来找我;他也快到期了。从我这里得到的消息,让他心里瞬间凉了一截。看样子大家都是差不多的情况:到了这个岁数,能不能延续职业生涯,是绝大多数人的心头病了。


2024.9.03


早上十点和 AWX 的 HR 视频了半小时。他们家没有 behavioral 面,就是随便介绍一下自己的期望薪资,以及面试流程。



  • 一面 coding:leetcode,手撸 promise,实现 UI 组件都有可能(跟没说一样)

  • 二面设计面:应该不是市面上正统的系统设计面

  • 三面 Line manager:聊项目

  • 四面 VP:看他心情,可能是人生面吧


其实没啥有价值的信息,并没有缩小我的准备范围。我还特地花了 79 块钱开通了 leetcode 会员,就是为了看看真题;结果就五题,亏大了。


吃完晚饭,四个同事几乎同时向问我打听现状,并表示有需要可以帮助内推他们之前的公司。感觉他们应该是有个小群正好说到我的事情吧。虽然暂时帮不到什么忙,但还是很感激的。说实在,我们的老板工作中已经有点去人格化了,但是他手下的人还都是温情默默的。


2024.9.04


今天,新前端正式加入公司。本来预计他是两周后才上班;可能真的是缺人手吧,催着他提前入职了。爽文小说里“裁员裁到大动脉”的剧情现实中说很难发生;我离开的一个礼拜里,部门里也仅仅发生了一个 minor 的 incident。可能对于老板来说,他又一次成功地实现了“以旧换新”。至于同行,也没有恨意,祝愿他在新公司一切顺利;并期望自己也能成功找到下一份工作。至于不开心的事,就让它随风而去吧;收下伤感,继续背八股了。


2024.9.05


今天终于参加了第一次面试——zoom 面,这两天刷了十几道 leetcode 题。但是面试的时候,前五十分钟在聊项目,最后十分才做了到算法题;跟预期差距也太大了。说实在聊项目的细节我还有所欠缺,本想 coding 和设计面后再恶补一下,没想到第一面就来了。复盘一下我自己的缺陷:



  • 讲项目的时候,应该分享个画板,给面试官更好的体验

  • 微前端这块写到了简历里,但是八股知识不够扎实

  • UI 这块,design system 得预习一下


当然,上述缺陷的本质问题是面试经历太少了,还没把自己的各个方面都武装过一遍。算了,放平心态,即便是挂了,至少也攒到了些经验。


2024.9.06


一夜无眠,还在想昨天的那道算法题。虽然不难,但是我漏掉了负数的判断,不知道面试官有没有注意到。这种心态真的很糟糕,一直提醒自己:这仅仅是一次面试而已,不能影响后面的准备。早上十点,我主动问了 HR 一面结果;等了一会儿,她回答我可以准备二面了。一下子心态平了很多。
之后我看了会儿阮一峰的博客,他的博客有个《谁在招人》的板块,但很可惜没有什么理想的公司。不过,他介绍了一个神奇网站,叫轻松游牧:一个远程工作聚合网站,每天从网上收集支持国内远程的岗位。我听说有一种面向国外的远程外包,也是通过类似网站招人的;每年给个固定的包工费,但是价位会比国内的外包高很多。再过段时间如果还是找不到工作的话,得试试这个模式了。


2024.9.07


礼拜六继续图书馆走起,坐在我傍边的依旧是同一帮爷爷奶奶们——看年纪他们应该都有八十好几了;他们真的是全年无休,人手一个放大镜,一直沉静在自己的书海里。上海确实是一个不一般的地方,这种人文的气质很是让我这种“乡下人”鼓舞的。下午看完了《微前端实战》——豆瓣 8.8 分,应该是评分太少,有点虚高了。不过,读完还是让我开阔了许多眼界,它顺便还提到了点 design system,与我上一次面试所欠缺的知识点不谋而合;希望下一轮面试能帮到我一点吧。回忆起这三年,我还是买了了挺多书的(公司每季 200 元图书福利),但可惜真正读完的没几本;现在临走了,却逼着我看了好几本,真是有点好笑的。


2024.9.08


今日 leetcode:977,1589(之后把每天 leetcode 题也记一下)


早上我一般都是先背英语单词,然后两道 leetcode。今天,我特意试了一下 leetcode 里 Paypal 原题:超过 1/4 是 hard 题;即便是 medium 题,也是包着算法外衣的数学题。很好奇,这个公司真的这么卷算法吗?
下午主要在看设计题,说实在前端系统设计很小众,网上的资料也就《News Feed》和《autocomplete》两题。我三年前进 CP 厂的时候面过一次设计题——《前端的 web log》,那时答得稀巴烂。这次比之前多看了些资料,只能说稍微了解了些套路;但从来没有实战过,说实在比之 coding 面更加没有信心。


2024.9.09


今日 leetcode:2181, 1969


不知道大家在网上是怎么找面经的,我之前主要在看准网找留言。但是今天登录看准网后,出了个弹窗,意思大致是它们家要关门了。哎,真是让人唏嘘不已;猜测写这个弹窗的前端小哥应该也已经被裁了吧。后来,我又去看了一亩三分地。这里的面经谈到这家设计题主要是 OOD 的题目,和传统的 system design 不同。所以白天我一直在油管上看某些高频题目的设计视频。但心里也明白,这些都是盲猜;很可能是浪费一天宝贵时间。说实在,面试也是信息检索的一种考验,要是又靠谱的信息渠道,面试成功率就能高很多了。


2024.9.10


今日 leetcode:2554、2559


下午 2 点二面。果然每次面试内容和预期的都不一样。所谓的设计面,根本和设计无关;事实上是聊项目+coding。项目面,前几天看的《微前端实战》倒是给了我点解答问题的灵感;但是 coding 表现很不好,时间还剩下十几分钟,我怕来不及,竟然选择纯口嗨——给面试官口头解释如何实现。有点后悔了,面试结束我自己又试了一下,其实这道题对我来说时间是充裕的。哎,还是太紧张了,策略错误……所幸,一个小时后,HR 邀我两天后三面;谢谢面试官网开一面。


2024.9.11


今日 leetcode:1999、2380


今天主要还是集中精力准备第二天的面试,虽然被告知是项目面,但是我心里还是没底——之前的两面都是 surprise。不过事已至此,我也只能全力总结项目了(再让我背八股,我也来不及了)。二面的经验让我想到了一个面试策略:就是事先把项目的架构图画好,面试的时候直接对着架构图讲业务;有点类似于 UI 设计人员在面试时会展示自己作品集的那个意思。我面经不足,不知道大家是不是都这么干的。


2024.9.12


今日 leetcode:2524、2576


上午 11 点 Line Manager 面,他让我聊聊个人最得意的项目;昨天画的架构图倒是派上了点用场。但是涉及到更深的问题解决方案,我还是没回答上来。老板一般想知道候选人的技术边界在哪里,被问懵也很正常。只是我个人有点焦虑,体感很差。面试结束后一直放不下心;HR 没联系我,我也心虚不敢主动问;真想“给个痛快”算了。
上午有面试,老婆没跟我说自己一个人去了产检;然后怕影响到我,一直到面试结束才告知:羊水有点少,医生让她下午去住院。我听完脑子一懵,很懊悔最近让老婆担惊受怕了。吃完午饭我就载她去了住院部,医生说先观察两天,如果羊水继续减少,娃娃必须提前出生。下午两边的妈妈都来了,老婆让我先回家继续学习,家里的事情不要但心,瞬间泪奔了。


2024.9.13


今日 leetcode:256、265


又是一夜未面,妻子、孩子、工作,反复地在脑中回荡。早上我向 HR 问了结果,但是她迟迟不回,只能干等着。谁叫我在“求职”,而不是在"应聘“呢?中午时分终于得到 HR 回复,可以去第四面了;但是大老板中秋后才有空——这一等又得是一个礼拜。最近我又投了几家,但是都没人鸟我;说实在,在这个时间点,它是我唯一的希望了。
之前问我签约事宜的同事好像成功续约了;我也很替他高兴。他告诉我,他直线老板还是很有人情味的:看到他三年期将至就 nominate 他了。怎么说呢,每级老板确实都有流动率指标,但事实上也有卡 bug 的方法的:比如正好在 promotion cycle 里,一般都能续约;虽然晋升渺茫,但是至少能保住饭碗。只可惜我没这个运气。


2024.9.14


今日 leetcode:2390、2056


老婆还在住院,所幸今天测羊水,比之前高了一点;但是还需要观察,至少住院 4 天才能回家。她住在了 40 一天的五人病房里,旁边娃娃晚上一直哭闹,她也睡不好觉。我很心疼她,想让她换到 4000 的单人病房里。但是她执意不肯,说“4000 一晚,我什么时候生不知道的,这得花多少钱?我的事你别操心了。”有妻如此,夫复何求?


我继续回家学习;上一次天天学习的时光应该是 2012 年考研的那段时间吧。年纪大了,我倒是比年轻时更静得下心了;但是身体是真扛不住了,尤其是肩颈,已经疼得我彻夜难免。颈椎好坏有个简单的测试:看你下巴能不能碰到喉结。我试图测了一下,结果脖子直接抽筋了。老婆很担心我,对我说:“即便你找到了工作,身体还能承受得住吗?三年后四十岁,再碰一次裁员,我们又该怎么办?”今天全网都在讨论延迟退休,我们都吃到了多工作三年的福利;三年又三年,每次都只能走一步算一步吧。


2024.9.15


今日 leetcode:2183、2848


今天是中秋假期第一天,我依旧保持着日常学习的节奏。但是,早上就有点偏头痛了;我一直有偏头痛的老毛病,每个月都得疼一次,尤其是焦虑的时候更明显。所幸今天没有面试,不然赶上面试当天真的是太灾难了。最近两边的妈妈帮了大忙,一个烧饭,一个照顾老婆,让我得以安心学习。在最困难的时候家里人还是最坚实的后盾,我真的很感激他们。下午稍微恢复了一点,我又在 boss 直聘里看到一家又 AI 又汽车又金融的外企有 HC;稍许翻了一下一亩三分地,感觉不差,遂 ping 了一下对方,但是 HR 应该也在过中秋节吧。还是希望全世界优秀的公司都能入驻国内,给我们这样的普通人带来更多的机会吧。


2024.9.16


今日 leetcode:1148、1473


今天好消息是老婆出院了:羊水恢复到了正常水平线,可能是前段时间喝水太少导致的。但是娃娃胎位不正,大概率要提前剖腹产;他现在才五斤左右,稍显轻了点,希望能抓紧最后一个礼拜努力长点身体。一切都开始变得好起来了,愿老婆和娃娃都能健康平安。
最近一直在做 leetcode 上 P 家的题目,真的是太难了——上来就三维动态规划。说实在我年轻时也不见得做得出来,更何况现在呢?帮我内推的同事告诉我,我的简历还在筛选阶段;这个岗位要求比较高,可能前面有几百个人排着队。我又看了一下他们家招聘页,只有这个岗位有 HC,根本没有其他 low 一点的选择了。
下午,在 Linkedin 上看到某四大有 HC,但是马上又在朋友圈看到他们家今天大裁员;简直了,这真的是一个魔幻的时代。


2024.9.17


今日 leetcode:146、157


今天是中秋佳节,网络上热议着月饼销量大减的现象。由于我个人对月饼并无太大喜好,因此购买月饼的念头从未在我脑海中浮现。然而,下午与老婆漫步时,我们恰巧路过一家香气扑鼻的烘焙店。我突然意识到,尽管与老婆共度了这么多时光,我却未曾询问过她是否有品尝月饼的愿望。在我的印象中,她一直是个对食物颇为挑剔的人。今年,她仅仅吃了点单位食堂提供的月饼。于是,我轻声问道:“要不要买点月饼尝尝?”她微笑着回答:“这里的月饼口感挺不错的,不过明天就打三折了,我们到时候再来买吧。”她的话让我瞬间意识到,这两天我或许对她的关心有所疏忽。我们携手走过了七个年头,我依稀记得七年前的她,还是个充满青春活力、略带中二气质的大学毕业生。而如今,我们都已踏入中年,面对生活的种种变迁,我们不得不学会更加成熟、稳重地应对。


2024.9.18


今日 leetcode:282、2332


明天就是四面了,说实在大老板面其实也准备不了什么。听 HR 说要英文自我介绍,想了一下好像之前也没像样准备过,就打算今天花一些时间背一下。Kimi 倒是挺好用的,把简历 pdf 上传给它,让它生成英文自我介绍,一下就出来了。我把自己背的内容录下来听了一下,这个重音和停顿还是非常的 Chinglish;英语还是差太多了,希望明天能顺利一点吧。很多人说以后有同声传译软件了就不需要学英语了;但是我觉得英语作为一种删选机制还是会长期存在的。所以无论如何都不能放弃英语学习,尤其是我们非 native English speaker 更是要坚持终身学习。


2024.9.19


今日 leetcode:163、2414


今天总算迎来了终面。1:40,HR 小姐姐带我参观了一下公司,公司里每人一张升降桌还是很有范儿的。闲逛的时候碰到了我两个师兄,年纪大了能遇到熟人真的是很激动的。2 点正式开面,大老板很 nice,全程都没有发表“重要讲话”。和他交流,一下子就能感觉得出他不是那种长期脱离产线的高管,因为很容易和我形成开发上的共鸣。当然,Behavior 面还是必备流程。我以前对这类 BQ 有点抵触,像有些国内厂就是要问你“卷不卷”,也听说北美有些企业会问“喜欢吃草还是吃肉”——吃肉的才是狼。但是后来渐渐意识到,BQ 面也许真的很有必要,比如,网上有“粉红”和“美分”之争,价值观差太多放在一起会很难受。只可惜,国内求职者很多就是要碗饭吃,不可能像某些帝国主义的应聘者那样能挑三拣四。
面试结束后,我走回了家,很累但是躺在床上一点也睡不着觉。我能做的都已尽力了,一切未知就看天命了。


2024.9.20


今日 leetcode:29、170


早上起来得到消息:offer 还在 pending 中;反馈是我用的技术栈太老了……有点震惊,我用的是 next 14 + shadcn/ui,这个怎么再新点呢?不过,回过头来一想,面试的时候我一直在强调我们的技术债务如何苦大仇深:一二三四五,等对方 buy in 了痛点,再提出使用特定技术解决这些遗产问题(日常 design doc 惯性)。面试时候就显得前摆太长了,之后我又没反复强调我解决的方案是最新的技术栈(之前老板不在乎技术新不新);导致别人只记住 CP 技术栈落后这件事了。这种点,不常面试的我真的是完全没有准备到,太痛了。大家平日里无论如何要多去了解业界动态,试试水,不然这类经验不可能凭空获得的。


2024.9.21


今日 leetcode:243


下午和 HR 谈了 offer 的事,很感谢 HR 小姐姐在周末加班帮我搞定 offer。这段时间真的很累,但能在 last day 之前拿到 offer 也是奇迹了。AWX 还是很够意思的,在这个年景给到了我心里价位。只可惜在 CP 三年没能 promotion,title 太低了;因此一开始就只能面 senior 岗,之后再怎么努力也很难在级别上有所突破了。这个倒不怪人家,行业规矩放在那。
我们到了一定年龄后,大家选择工作时不能再简单地看钱了:有些工作可能钱暂时多一点,但是 scope 太小了,发展空间受限,几年后就会反噬。就业市场上对每个年龄段的要求是不一样的,若在特定年龄段没有突破特定限制,那以后就很难了。我们程序员某种意义上需要了解更大的世界,比如人脉、行业动态、市场趋势等,这些都不是简单码代码能实现的。



即使身处最冷的寒冬,我知道自己的内心深处,有一个不可战胜的夏天。 -- 加缪,著名法国小说家



2024.9.22


今日 leetcode:246


早上七点起床去做了一次体检,算是把 CP 仅有的一点福利也给用完了。我最新的体重是是 137 斤,记得去年这时候是 150 的样子,这段时间我也几乎没有运动就是单纯地降体重了。期间在刷手机的时候听说一个消息:某个前同事去了发发奇;今年被 CP 收购了,然后也不出意外地被裁了。一切的行事风格都是那么商业,倒不是说有什么对错,只是没有一丝温情罢了。


2024.9.23


今日 leetcode:359、1014


今天是老婆的生日,阳光明媚,气温 23 摄氏度;难得的好日子,所以我们决定去徐汇的网红街吃顿大餐。午饭的时候,邮箱收到了 AWX 的 offer。无疑,这一天是我漫长时光中最值得欢欣鼓舞的时刻。
自去年年末开始,我便察觉到了形势的异常:部门只有 4 个 L5,上海韩国各两个;其中韩国那俩,一个刚从 4 升到 5,一个被 nominate 了,所以年度 performance 的 PIP 指标大概率在上海这边产生;而且即便我过了第一道坎,还有续约这第二道坎。从那时起,我就开始焦虑了,只能每天晚上回家后刷 leetcode 来减轻一些不安。所幸去年有两同事跑路了,正好吃掉了当年的 PIP 名额——让我没有在三月份速死,给了我一段较长时间的缓冲期。若非如此,我真难想象如何在短短三个礼拜内找到新工作。想想真的是后怕,那段时间即便有小幅的涨薪,即便 CP 股票一直在上扬,我都没有一丝喜悦之情;我甚至觉得自己因工作丧失了最基本的人格感知,一切理因欣喜的事都被我当做了回光返照,甚至连老婆怀孕的消息都让我感到压力倍增。如今,这一切终于结束了……


2024.9.24


今日 leetcode: 252


早上陪老婆去产检,羊水又降了,娃娃也像爸爸一样正经历者人生的磨难。医生建议再住一次院,但是考虑到之前也遇到了同样的问题;在住院部根本休息不好,我们决定先租个胎心仪,回家观察,两天后复查羊水。现在只能走一步算一步,娃娃才 5 斤半,略显瘦小,能在娘胎里待一天是一天。


本来约了 HR 两天后聊赔偿的事,但是和复查冲突了,所以我调整了会面时间至今天下午。有点小意外,是“小 n+1”,可能是我之前听错了成了“小 n”吧;但是确实也不高,在外企里依旧是地板流。我提到了娃娃可能在 last day 之前出生,陪产假能否适当赔偿,但被断然拒绝;另外,我有一笔 Q3 激励的 RSU 在 last day 之后“一天”才发放,这笔钱是否能到账,HR 表示让我自己联系美国的 stock 组,她不负责这块。


晚上,我找到了 CP 前员工的 PIP 离职交流群,询问了群主是否能拿到 RSU;他表示,没戏,我这个情况只能 n+1 走人——赔偿就是踩着法律线的地板流。很难想象这家企业贴的 HC 标的是阿里 P8、P9、P10,但是遣散费就这德行。


2024.9.25


今日 leetcode: 266


昨天我邮件联系了美国的 stock 组,今天终于回复了;他们表示无能为力:这是一开始在合约了规定的条款。看来我只能死心了。随后,我与昨天的群主闲聊了几句,他又抖了点黑料;我也不想传谣,但若这些消息属实,那确实令人感到心寒——始作俑者其无后乎?下午,我与一位新入职的同事交谈了片刻。他坦言:在入职之前就知晓了这里的 PIP 政策;不过即便如此,他还是会来的,因为他也是被之前的公司裁员了,好几个月才找到下家,不能考虑太多了。没办法,经济如此,国内互联网已是明日黄花;现在是买方市场,每个人的命运都已转向。


2024.9.26


今日 leetcode: 2535


昨晚,娃娃的胎心再次出现异常,情况紧急,我们不得不连夜办理了住院手续。吸取上次四人间的拥挤与不便的教训,我决心为老婆选择一个稍好一些的住院环境。然而,我未曾料到红房子的床位竟如此紧张,不仅单人间、双人间已全部满员,连四人间的加床也一张不剩。无奈之下,我们只得在过道上安顿下来——这一次的艰辛,远比上次更甚。


面对这样的困境,我心中五味杂陈,却也只能眼睁睁看着老婆承受这份苦难。今晨,我们及时联系了门诊医生,经过综合考虑,决定于 30 号进行剖腹产手术。


然而,手术前的这段时间,老婆仍需在医院等待,期盼着能排到一个稍微好一些的病房。想到她至少还要在这样的环境中度过五天,我实在是心疼不已。这段时间对我们来说无疑是巨大的考验,一切的一切只愿换来新生命的安全到来。


2024.9.27


今日 leetcode: 293


今天是我在上家公司的 last day,我重走了一遍上班路,在地铁上背单词,然后十点多踏入公司。离职手续进行很简单,不到十一点就已经全部办妥。我穿梭在公司的每一层楼,与那些熟悉的面孔一一道别。


中午时分,我和组里的小伙伴们聚在一起吃了最后的散伙饭。尽管这是告别的时刻,但大家依然保持着往日的激情,餐桌上热烈地讨论着技术话题。我本打算为这顿饭买单,以表达我的感激之情,然而同事们却抢先一步结了账。这让我心中不禁涌起一股暖流,同时也夹杂着一丝歉意:大家平日里都过着节俭的生活,一顿午餐通常只需三十几块,而今天这顿饭的人均消费却近两百元。


饭后,我们像往常一样漫步至 Manner,我点了一份多年未变的“小澳白”。只是这次,我没有带上自己的杯子,无法再享受那 5 块钱的优惠了。这个小小的变化,似乎也在提醒着我,今天的一切都与往日不同了。


最后,我们在欢笑中一一握手告别。这一别,只能再会江湖了……


2024.9.28


今日 leetcode: 270


等啊等,自费病房始终空不出来。这两天,老婆只能屈身于四人病房的加床之上。倒是我丈母娘挺乐观的,她含笑说道:“这孩子似乎天生带有财运。他的爸爸费尽心思,终于为他找到了奶粉钱;而他的妈妈,虽然历经艰辛却没能花了他的钱;现在,就连股票也呈现上涨趋势……”对我来说,吃些苦头并无大碍,我只祈求他们母子能够平安健康。


晚上,又一位前同事联系我,他正处于 PIP 阶段,自称已快承受不住。我只能不住得给他灌鸡汤,为他打气。说实话,作为旁观者,我们很难提供具体且实用的帮助。我所能给的,只是一些宽泛的建议,譬如那句老话,“好死不如赖活着”。我与他分享了亲身经历,并阐明一个观点:坚持下去,只是为了给自己争取更多的缓冲时间,以便找到新的工作机会,从而摆脱现状;而并非为了“适应这里的 PUA”。他和几个月前的我如出一辙,总是患得患失,害怕寻找新工作。但其实,最艰难的部分并非找工作本身,而是下定决心,勇敢迈出那第一步。一旦跨出那一步,找工作便只剩下概率乘以时间的期望值问题了。


2024.9.29


今日 leetcode: 346


今天,老婆终于住进了 LDR 病房;临行前,普通病房的床友们都为她加油助威,仪式感拉得满满的,只有经历过才能体会到生育的不易吧。我们加了一个增值服务——爸爸陪护入产房;然后几个护士轮番教我手术室注意事项,有七步洗手法、如何抱孩子、以及最难的戴无菌手套。她们还分享了一些准爸爸的糗事——在手术室里晕血了,然后医生护士们还得先照顾那位爸爸。不知道我明天会不会成为她们下一段趣事。老婆倒是一切正常,身体也没有异样,中午我们还一起去散步去喝了杯 M-stand。进产房前的一切物件,早就被娃娃妈妈准备的一应俱全,我们只等着新生命的到来了。


2024.9.30


今日leetcode:1064


早晨 8 点 52 分,娃娃一声啼哭,宣誓着新生命的降临;我颤抖着双手戴上了无菌手套,为他剪下了脐带。然后,回到手术台旁,紧紧握住老婆的手,告诉她:“儿子 6 斤半,黄金体重”。娃娃妈含着泪说:“长得磕碜吗?”(这颜控……)娃娃出生时,全身红紫色,很小的一只;但眼角很宽,皮肤光洁,一看就是帅小伙。手术很成功,二十分钟后就结束了;母子随后被转移到了观察室里。娃娃出生后缺少安全感,所以最好有肌肤接触;医生要我解开衣襟,让娃娃趴在了我身上。人类幼崽还是很有趣的:出厂设置极简——啥都不会,只保留了一个本能——吸奶;这好大儿竟在老父亲胸口边爬边种草莓。一个小时后,我们回到了病房,老婆还需要休息一会儿;大家便离开了病房,开始围着娃娃看。这时候,娃娃全身的红紫色已然退去,一双小手白皙粉嫩,面色清秀很像爸爸,看样子注定要迷倒万千少女了。全家人都乐呵呵地围着娃娃,连他竖个兰花指都能逗乐奶奶;外婆更是把娃娃拉粑粑的片段都给录了下来分享给全家人。最最重要的是,他出生后 A 股竟然当天涨了 8 个点,大家都啧啧称赞这娃娃自带财运。新的篇章从此开始……


作者:anOnion
来源:juejin.cn/post/7430031817254944805
收起阅读 »

每一个失业的前端er都必须有一个稳定盈利的独立开发项目

如题,最近非常焦虑,因为考试临近了,所以只好来祸害一下网友了 俺从2023年离职,经历了考研,独立开发,remote,好几段经历 首先是考研,去年考的其实还行,但还是复试被刷,至今被刷原因未知,盲猜是因为本科是民办三本吧 然后remote就是找了个美国的区块链...
继续阅读 »

如题,最近非常焦虑,因为考试临近了,所以只好来祸害一下网友了


俺从2023年离职,经历了考研,独立开发,remote,好几段经历


首先是考研,去年考的其实还行,但还是复试被刷,至今被刷原因未知,盲猜是因为本科是民办三本吧


然后remote就是找了个美国的区块链公司,但是因为四月份我忙着搞调剂,过程十分煎熬,根本无心顾暇remote那边天天开会的节奏,所以只能离职,当然啦,最终也没调剂上


这都不是重点,重点是独立开发


从我离职到现在,也快两年了,聪明的人已经发现了,整个互联网技术栈这两年可以说毫无变化,新的端没有,新的框架没有,新的红利也没有,新的独角兽公司也没有


道理很简单,因为现在是僧多粥少的时代,每个人手机上就固定几个app,而且都是存量状态(不需要推翻重来,只需要shi山跳舞)


与此同时,还有若干小公司不断倒闭


懂了吧,现在是需求没了,业务没了,招聘的公司没了


独立开发就只不过是,没有业务,我们自己发现制造业务罢了


但是呢,会更难,因为,资本虽然是傻逼,但它们也不是完全没脑子,如果轻易能成功,他们就不需要跑路了


现实就是,我朋友圈有很多独立开发的,推特上也有很多,但能做到稳定盈利的人,几乎为0


有的是卖小册,有的是搞博客,还有开公司做面试辅导的,也有外包接活的,也有收费技术咨询的


这些统统都是噶韭菜——因为我说的很清楚了,现在是业务没了,是需求没了,但凡不制造需求的,都是瞎扯


——所以我把c站卖了,c站转让前日活5w,但是动漫行业实在太卷了,各种各样的竞品,让我自己都不想看番,更别提服务给他人看了


之前在携程,我的老板和我说,你就当独立创业,携程三万人就是你的第一批客户,我觉得老板说的没错,就是比起b端,我更喜欢c端的用户


所以毫无疑问,我不可能再回去写前端框架了,纯粹浪费时间,浪费我的❤


唉,说了这么多,总而言之,言而总之


回到题目,那就是,每个人失业的前端er都必须有一个稳定盈利的独立开发项目


我也在开新坑了,敬请期待~


作者:132
来源:juejin.cn/post/7426258631161528335
收起阅读 »

一起读本书吧~《认知觉醒》,潜意识里有你要的答案

读后感 书中改变我的话: 佼佼者更愿意做高耗能的事——消除模糊,制造清晰。 先用感性选择,再用理性思考,或许是一个更好的策略,尤其是在做哪些重大选择时。 针对当下的时间,保持觉知,审视第一反应,产生明确的主张;针对全天的日程,保持清醒,时刻明确下一步要做的事...
继续阅读 »


读后感


书中改变我的话:



  • 佼佼者更愿意做高耗能的事——消除模糊,制造清晰。

  • 先用感性选择,再用理性思考,或许是一个更好的策略,尤其是在做哪些重大选择时。

  • 针对当下的时间,保持觉知,审视第一反应,产生明确的主张;针对全天的日程,保持清醒,时刻明确下一步要做的事情;针对长远的目标,保持思考,想清楚长远意义和内在动机。


第二章书摘



  1. “学霸”和普通同学之间的差异不仅体现在勤奋的程度上,还体现在努力的模式上:谁更愿意做高耗能的事——消除模糊,制造清晰。

  2. 多数人为了逃避真正的思考,愿意做任何事。

  3. 记住,任何痛苦事件都不会自动消失,哪怕再小的事情也是如此。要想不受其困扰,唯一的办法就是正视他、看清它、拆解它、化解它,不给它进入潜意识的机会,不给它变模糊的机会,即使已经进入潜意识,也要想办法将它挖出来。

  4. 恐惧就是一个欺软怕硬的货色,你躲避它,它就张牙舞爪,你正视它,它就原形毕露。一旦把它看的清清楚楚,情绪就会慢慢从潜意识中消散,你的生活将会舒畅无比。

  5. 认知清晰,情绪平和,最终还要行动坚定。很多人把行动力不足的原因归结为环境干扰或是意志力弱,其实,行动力不足的真正原因是选择模糊。

  6. 潜意识的感性总能帮我们发现什么是真正适合自己的,从而引导精力投入,快速提升自己。

  7. 先用感性选择,再用理性思考,或许是一个更好的策略,尤其是在做哪些重大选择时。诚如洪兰教授的建议:小事听从你的脑,大事听从你的心。

  8. 梦境。梦境是潜意识传递信息的一种方式,它可能是内心最真实想法的展示,也可能是灵感的启发。

  9. 针对当下的时间,保持觉知,审视第一反应,产生明确的主张;针对全天的日程,保持清醒,时刻明确下一步要做的事情;针对长远的目标,保持思考,想清楚长远意义和内在动机。


针对书摘1:如此道理,当你面对不了解的事物时,唯有抽丝剥茧、不断细化,并且直面它,你才能清晰的了解到事物的全貌,否则就是管中窥豹,同样,这也是消除焦虑的最好方式。


针对书摘2:无论多么庞大的任务,最怕的就是任务分解,分解它的过程也是你直面和了解它的过程,在拆解的过程中你将对它越来越清晰,在此过程中,会消除你因为对其不了解而产生的焦虑,同样也是让自己的工作具象化、透明化的过程。


针对书摘5:你迟迟不肯行动,也许是担心自己做不好(低期望值),或许是觉得这件事没有意义(价值感不足),也可能是自己每次在行动时总三心二意(高冲动),也可能最终日期很遥远,当下没有一定要做这件事的压力,但是无论什么原因,都请把握这件事自己可以把握的部分,让事情本身对自己变得有意义、有助于自己成长,做自己当下应该做的事。


针对书摘6:兴趣是最好的老师,在前行的路上保持好奇心。


针对书摘7:潜意识往往不会骗自己,且更符合自己的内心最真实的想法,首先选择你喜欢的,选择后再经过自己理性的思考,得到最终结果。


针对书摘8:明确当下的任务(当下目标),保持清晰的思路做事(短期目标),坚持长期人生主义。


每一次克制自己,就意味着比以前更强大。——高尔基


作者:FirstMrRight
来源:juejin.cn/post/7430801077455798299
收起阅读 »

Java已死,大模型才是未来?

引言 在数字技术的浪潮中,编程语言始终扮演着至关重要的角色。Java,自1995年诞生以来,便以其跨平台的特性和丰富的生态系统,成为了全球范围内开发者们最为青睐的编程语言之一 然而,随着技术的不断进步和新兴语言的崛起,近年来,“Java已死”的论调开始不绝于耳...
继续阅读 »

引言


在数字技术的浪潮中,编程语言始终扮演着至关重要的角色。Java,自1995年诞生以来,便以其跨平台的特性和丰富的生态系统,成为了全球范围内开发者们最为青睐的编程语言之一


然而,随着技术的不断进步和新兴语言的崛起,近年来,“Java已死”的论调开始不绝于耳。尤其是在大模型技术迅猛发展的今天,Java的地位似乎更加岌岌可危。然而,事实真的如此吗?Java的春天,真的已经渐行渐远了吗?本文将从多个维度深入探讨Java的现状、大模型技术的影响,以及Java与大模型融合的可能性,为读者提供一个更为全面和深入的视角。


Java的辉煌历史与稳健地位


Java,作为Sun Microsystems在1995年推出的编程语言,一经问世便凭借其独特的跨平台特性和丰富的生态系统,迅速在全球范围内赢得了广泛的认可和应用。从最初的Java Applet,到后来的Java Web开发、Java EE企业级应用,再到如今的Android应用开发、大数据处理等领域,Java都展现出了其强大的生命力和广泛的应用前景。


在最新的TIOBE编程语言排行榜上,Java长期位居前列,这足以证明其在开发界的重要地位。而在中国这个拥有庞大IT市场的国家中,Java更是受到了广泛的关注和追捧。无论是大型企业还是初创公司,Java都成为了其首选的开发语言之一。这背后,是Java的跨平台特性、丰富的库和框架、强大的社区支持等多方面的优势所共同铸就的。


请在此添加图片描述


然而,随着技术的不断进步和新兴语言的崛起,Java也面临着一些挑战和质疑。


一些人认为,Java的语法过于繁琐、性能不够优越、新兴语言如Python、Go等更加轻便灵活。这些观点在一定程度上反映了Java在某些方面的不足和局限性。


但是,我们也不能忽视Java在企业级应用、Web开发、大数据处理等领域的深厚积累和广泛应用。这些领域对Java的稳定性和可靠性有着极高的要求,而Java正是凭借其在这方面的优势,赢得了众多企业和开发者的青睐。


大模型技术的崛起与影响


近年来,随着人工智能和机器学习技术的飞速发展,大模型技术逐渐成为了人工智能领域的一大热点,可谓是百家争鸣。大模型技术通过构建庞大的神经网络模型,实现对海量数据的深度学习和处理,从而在各种应用场景中取得了令人瞩目的成果。


请在此添加图片描述


在自然语言处理领域,大模型技术通过训练庞大的语言模型,实现了对自然语言的深入理解和生成。这使得机器能够更加智能地处理人类的语言信息,从而实现更加自然和流畅的人机交互。在图像处理领域,大模型技术也展现出了强大的能力。通过训练庞大的卷积神经网络模型,机器能够实现对图像的精准识别和分析,从而在各种应用场景中发挥出巨大的作用。


大模型技术的崛起对软件开发产生了深远的影响。


首先,大模型技术为开发者提供了更加高级别的抽象和智能化解决方案。这使得开发者能够更加专注于核心业务逻辑的实现,而无需过多关注底层技术的细节。其次,大模型技术降低了AI应用的开发门槛。传统的AI应用开发需要深厚的数学和编程基础,而大模型技术则通过提供易于使用的工具和框架,使得开发者能够更加方便地构建和部署AI应用。最后,大模型技术推动了软件开发的智能化升级。从需求分析、设计到开发、测试和维护等各个环节都在经历着智能化的变革,这使得软件开发过程更加高效和智能。


Java与大模型的融合与变革


在大模型技术崛起的背景下,Java作为一种成熟且广泛应用的编程语言,自然也在探索与大模型技术的融合之路。事实上,Java与大模型的融合已经取得了不少进展和成果。


请在此添加图片描述


首先,Java社区对于大模型技术的支持和探索已经初见成效。一些开源项目和框架在Java环境中实现了深度学习和大模型技术的支持,如Deeplearning4j、ND4J等。这些项目和框架为Java开发者提供了丰富的工具和资源,使得他们能够更加方便地构建和部署基于大模型的应用。


其次,Java自身的特性和优势也为其与大模型的融合提供了有力的支持。Java作为一种面向对象的语言,具有强大的抽象能力和封装性,这使得它能够更好地处理大模型中的复杂数据结构和算法。同时,Java的跨平台特性也使得基于Java的大模型应用能够在不同的操作系统和硬件平台上运行,从而提高了应用的兼容性和可移植性。


最后,Java与大模型的融合也推动了软件开发的智能化升级。在需求分析阶段,大模型技术可以通过对海量数据的学习和分析,帮助开发者更加准确地把握用户需求和市场趋势。在设计阶段,大模型技术可以通过对已有设计的分析和优化,提高设计的合理性和效率。在开发阶段,大模型技术可以为开发者提供智能化的编程辅助和错误检查功能,从而提高开发效率和代码质量。在测试和维护阶段,大模型技术可以通过对应用的持续监控和分析,及时发现和修复潜在的问题和缺陷。


未来趋势与展望


随着AI和机器学习技术的不断发展,大模型技术将在未来继续发挥重要的作用。而Java作为一种成熟且广泛应用的编程语言,也将继续在大模型时代发挥其独特的优势和作用。


请在此添加图片描述


首先,Java将继续优化其性能和语法,提高开发者的开发效率和代码质量。同时,Java还将加强对大模型技术的支持和整合,为开发者提供更加全面和强大的工具和框架。


其次,Java将与更多新兴技术进行融合和创新。例如,随着云计算和边缘计算的兴起,Java将加强与这些技术的融合,推动云计算和边缘计算应用的发展。此外,Java还将与物联网、区块链等新兴技术进行深度融合,开拓新的应用领域和市场空间。


最后,Java将继续发挥其在企业级应用、Web开发、大数据处理等领域的优势,为各行各业提供更加稳定、可靠、安全的解决方案。同时,Java也将积极拥抱开源文化和社区文化,与全球开发者共同推动Java生态系统的繁荣和发展。


总之,Java作为一种历久弥新的编程语言巨头,将在大模型时代继续发挥其独特的优势和作用。通过与大模型技术的深度融合与创新,Java将引领编程世界的潮流,为各行各业带来更加智能化和自动化的解决方案。让我们共同期待Java在未来的辉煌!


写在最后


我不禁要感慨Java这一编程语言的深厚底蕴和持久魅力。它不仅是一段技术史,更是无数开发者智慧与汗水的结晶。在大模型时代,Java也会以其独特的稳定性和可靠性,持续为各行各业提供着坚实的支撑。正如历史的河流永不停息,Java也在不断地进化与创新,与新兴技术深度融合,共同推动着科技发展的浪潮。让我们携手前行,继续书写Java的辉煌篇章,为构建更加智能、更加美好的未来贡献力量。


作者:不惑_
来源:juejin.cn/post/7419967609451675700
收起阅读 »

作为前端开发,这些年跟设计师的斗智斗勇

我无意中在知乎上看到这样一个话题, 让我不得不有感而发。 因为曾经的我也是被设计师给虐惨了。 我是工作了 8 年的老前端了, 如果算上实习那就有 9 年了。 我做过 C 端应用, 做过 B 端应用, 做过 SaaS 应用, 我经历的所有设计师, 都不接...
继续阅读 »

我无意中在知乎上看到这样一个话题, 让我不得不有感而发。


image.png




因为曾经的我也是被设计师给虐惨了。


image.png




我是工作了 8 年的老前端了, 如果算上实习那就有 9 年了。


我做过 C 端应用, 做过 B 端应用, 做过 SaaS 应用, 我经历的所有设计师, 都不接受 0.5px 的像素偏差。 可以说是对像素偏差 0 容忍。


所以想作为前端工程师, 来来给大家聊聊我的日常工作中是怎么跟设计师斗智斗勇的。


1. 给设计师设置门槛


这个设置门槛意思很简单, 你不能拿着电脑, 指着我屏幕就说, 这这这不行, 那那那不行的。


你得走系统工单, 一个样式一个工单。 得注明, 哪儿样式不对齐, 差多少像素, 预期重新验收的时间, 走查报告, 样式走查进度等等。如果没有系统工单的流程, 搞一个复杂的文档丢给设计同学也行, 让设计师同学把每一个问题都尽可能的详细记录下来。


还要明确设计走查验收时间, 定稿的设计稿件, 非特殊原因不允许修改等方式, 增加设计师自身的成本。


和设计师合作完成一个项目, 完成之后大家都分蛋糕, 自己改样式是有成本投入, 设计师别人是零成本投入, 哪儿那行? 所以这个就是门槛的来源。


2. 告诉设计师我修改某一些样式的成本, 这个成本超过了预期, 需要设计师额外承担成本付出


举一个简单的例子哈。 设计是要求做 移动端 和 PC 端兼容, 我预估做移动端和PC 端兼容, 需要 5 天时间。 已经拍板定下来了。 做到了一半, 设计说, 我的移动端, 要适配 小屏幕手机和大屏幕手机以及 平板 拥有独立的样式展现。 这个成本是预估之外的额外成本, 可能需要多加 5 天时间。 那么这个 5 天时间, 是需要设计师去向项目经理申请的, 项目经理如果同意, 多给我加五天我就做。(其实相当于转移矛盾)


3. 给出设计师无法拒绝的理由


就说到了静态和动态的问题了。 比如设计师给了一个版本的设计, 是没有数据情况下的设计, 但是前端数据加载出来了, 渲染出来的结果, 跟设计师预期的不一样。 而且设计师自己也没有给设计稿。 这个就直接专业碾压就行了, 黑话直接就来,比如:我的架构能力已经做好了, 实在是改不了了, 否则的推翻了重新做; 你这个 1 PX 的像素偏差, 真的有必要吗,你如何论证你这部分必要性;它是一个共性问题,以前的需求都是这样子的, 如果你这次改了,那之前的那些样式也都改吗,否则是不一致的;..........


这个方向, 就是主要针对一些可有可无的样式调整。如果修改成本较大, 而且设计稿本身就模棱两可的, 就可以使用专业知识碾压。


4. 设计稿变动要周知


其实很多时候在开发过程中是, 会出现一个情况, 设计师改了设计稿(在没有跟前端同学商量的情况下改了设计稿)。这个我相信是很多前端同学最头疼的事情之一。


我之前合作过一个设计师, 很喜欢临时改设计稿,但是改了又不周知,让我跟着后面反复改, 最后项目导致了一定时间的延期。 最后项目复盘的时候, 我就直接跳出来喷这个情况,有理有据,让 leader 们去核算这部分成本了。


其实一定要达成一个一致意见, 甚至可以在做项目之前就商量好, 如果遇到设计稿变更, 导致开发工作要返工的情况, 总计返工超过 0.5 日的情况, 要提出需求变更,不通过需求变更的设计稿变更, 一律不接受。


5. 提升自己专业能力


最后这个没啥好说的, 吃这个饭, 就的接受这个设定;尽量想办法还原设计师的设计稿即可。


曾经我也常被设计师折磨得体无完肤, 甚至想过要转行算了。 想想, 后端同学还不是一样被数据、稳定性、服务器运维等问题折磨得体无完肤。 各行都有各行的难处, 吃这个饭就得接受这个设定。


提升自己专业能力, 只会有利无害, 就比如我现在也能算是半个像素眼。


作者:晴小篆
来源:juejin.cn/post/7429981053039312934
收起阅读 »

回顾我转前端的这一年。。

✊不积跬步,无以至千里;不积小流,无以成江海 从去年年尾意外发生,突然“找工作”,23年10月24号注册掘金写下第一篇博客,到今天刚好一年。这一年经历了写毕业论文、从0做项目找实习,答辩,刷算法,准备秋招,最终拿到四个大厂offer。也算是天糊开局,完美收官...
继续阅读 »

✊不积跬步,无以至千里;不积小流,无以成江海



从去年年尾意外发生,突然“找工作”,23年10月24号注册掘金写下第一篇博客,到今天刚好一年。这一年经历了写毕业论文、从0做项目找实习,答辩,刷算法,准备秋招,最终拿到四个大厂offer。也算是天糊开局,完美收官。


说实话最开始并不是以进入大厂作为target来规划今年的秋招的,因此也还算走了一些“弯路”。但也许offer真的和运气是相关的,索性殊途同归了吧。当然9本给我了折腾的底气,但我相信就算是非92,一年时间(其实是用不了的)好好规划,是一定能够在秋招季收获一个好的结果的。


回顾这一年,做的最正确的决定之一,就是坚持写博客。虽然也是写到差不多第十个月才感受到什么是“写博客输出”,但没有前面十个月的坚持,也不会有后几个月的蜕变。所以!没有一点努力是白费的!就像我每一篇文章的quota:’✊不积跬步,无以至千里;不积小流,无以成江海‘。种下一棵树最好的时间是十年前,其次是现在。所以看到这篇文章的你,不妨从现在开始尝试写下自己的第一个博客文章~~


这一年来,除去整理其他公司的前端笔试题这种博客,应该写了差不多70篇左右的博客。先介绍一下博客,也大概是我的学习过程的缩影。


前三十篇左右的博客更像是知识点的罗列复习。其实我并不是第一次接触前端,但曾经系统学过的知识点已经不够熟悉了,我坚信好记性不如烂笔头,所以连查带写带输出,完成了前端知识点的第一轮复习。


之后十篇左右的博客记录了三个月跟着网上视频学项目的时候遇到的问题,比如场景,或者问题解法等等。一方面是觉得这些点比较有趣,另一方面也是为了面试的时候和面试官沟通的话不用干巴巴讲,有博客+动图能够尽量完整的将信息传递。(毕竟考虑别人的【用户体验】也是前端工程师要在意的事)


再然后到了找实习之前,为了面试写了一系列的面试复习笔记,大概十多篇。都是实习时候会被问到的各种前端知识点,应该是比较全和具有代表性的。这个时候开始试图自己归纳、总结、整理输出成自己的想法。“自己的感悟”开始有一点雏形。也是这个时候明显觉得自己的前端知识上了一个台阶,能够理解知识点之间的关系并可以串联,能初步构建自己的前端知识网络。


之后就是实习的感悟。其实实习的时候因为太忙(实习任务、新城市适应、生活变动、学校杂事、回学校答辩),并没有写什么博客。反而是要准备离开实习公司,开始罗列自己的收获的时候,把自己日常的工作记录摘抄一些“精品”而有趣的点,写了几篇博客。也是这个时候我自我反思觉得不坚持写博客真的时间会“溜走”,还是记下来更有安全感,坚定了要坚持写下去的信念。


后面就是到了秋招,其实这个阶段大框架上的知识点已经很少有哪里需要查漏补缺了。但和一些有经验的大佬沟通,觉得似乎“沉淀和思考”还可以做的更好。所以花了相当一部分精力修正或者说串联之前的博客,以及酝酿了几篇非常好的博客。一篇博客光写就要写两天的那种。虽然数据一般,但我相信是金子总会发光哈哈。基本这个阶段走完,自己前端知识点网络已经构建的比较全面了,很多问题都已经有了自己的见解,不止仅仅是那种看几个博客看几个视频的见解,而是真的自己也知道怎么回事,什么原理,要怎么样去用这种。


综上所述,自己也完成了从罗列博客,到写博客,再到输出博客的蜕变。还是对自己的这一年很满意的。


对于看到这篇文章的朋友,并且想自己找工作能有好结果的,我能给出的一些建议:



  • 坚持做一件事,写博客只是其中一件。每个工作日github push代码也可以是一件事。量变到质变的积累,要先有量才可以,没有人是天才。

  • 实习经历(有效,不是混日子那种)大于项目经历。实际工作场景中能够获得的成长是个人项目没法获得的。

  • 如果因为某些原因没办法有实习,那么只能通过疯狂背“八股”来展示自己的’优秀‘基础。但别气馁,没实习的人很多的。

  • leetcode代码是不能逃掉的一个待办项。比起我那时极度痛苦疯狂恶补,不如给自己三个月,每天都刷一点点。leetcode对每个人都很公平,只能靠量,几乎不可能速成。

  • 如果从大一就开始为前端做准备,那不同大厂间的不同业务线实习是最优解。这能帮助你更好的了解不同大厂/不同业务的风格,能帮助你找到自己想要的到底是什么。当然,如果你找到的第一个就发现是自己所爱,那恭喜你,持续在这里实习吧!

  • 如果再给我一个月,也许我会静下心来好好研究一下react源码/fiber架构这类的。尽管关于这些网上有长视频讲的很好,但想真的有自己的理解,唯有自己沉下心来好好研究,所有视频资料都不过是辅助工具。当然,更好的理解方式是在工作中慢慢感悟。

  • 找工作是一场马拉松,没到最后,万物皆有可能,心态要稳。我一周收获了三个offer,我相信如果我肯多约几个面试,也许能创造更多的不可能。


很高兴你能看到最后,回首这一年,虽然很苦,但是真的很开心。希望你回顾自己的一年,也会觉得很开心~


有些什么问题也可以在评论区留言,打破零回复哈哈


作者:适余
来源:juejin.cn/post/7429321661491462155
收起阅读 »

已老实!公司的代码再也不敢乱改了!

开篇 大家好,我是聪。想必对于很多初入职场,心中怀着无限激情的兄弟们,对于接手老代码都会有很多愤慨,碰到同事的代码十分丑陋应不应该改!我也是这样,我相信有很多人同样有跟我一样的经历。满打满算实习 + 正式工作,我也敲了两年多代码,我今天来说说我自己的看法吧。 ...
继续阅读 »

开篇


大家好,我是聪。想必对于很多初入职场,心中怀着无限激情的兄弟们,对于接手老代码都会有很多愤慨,碰到同事的代码十分丑陋应不应该改!我也是这样,我相信有很多人同样有跟我一样的经历。满打满算实习 + 正式工作,我也敲了两年多代码,我今天来说说我自己的看法吧。


亲身经历


我第一次接手老代码的时候,映入我眼帘的就是侧边栏满页的黄色提示以及代码下面的众多黄色波浪线,以及提交代码时的提示,如下图:


image-20240620084453396.png


我内心 OS:


1)大干一场,把黄色波浪线全干掉!


2)同事这写的也太不优雅了吧,改成我这样!


3)这代码怎么也没格式化,我来 Ctrl + Alt + L 格式化一波!


已老实,求放过


image-20240620095636440.png


干掉黄色波浪线,将代码改 ”优雅“ 结局如下:


1)不声不吭动了同事代码,换来同事怒骂,毕竟人家逻辑写好,然后你按你想法来搞,也没有跟人家商量。


2)后续领导找你加需求,你发现原来之前的代码有妙用,你悔不当初,被扣绩效。


3)格式化后,在项目修改记录上面是你的修改,这代码出问题,负责人先来找你。


说说我的看法


代码能跑不要动


前几日我要在老项目中,新增一点小功能,在新增完功能后,我扫了一眼代码,发现有几处逻辑根本不会执行,比如:抛异常后,执行删除操作类似,我也不会去义愤填膺的去干掉这块代码,毕竟我想到一点!项目都跑七八年没出问题了,能跑就别动它。


代码强迫症不要强加于别人


前几日在某金看见了这样一个沸点:


image-20240620095955748.png

这样的事情其实在小公司经常发生,你觉得它写的不优雅,封装少,可能是别人也有别人的难处,至少不能将自己想法强加于别人,比如领导突然来一个需求,跟你说今天你得完成,然后第二天这个需求,你要这样改、再给我加点新需求上去,你能想到的封装其实只是你冷静下来,而且没有近乎疯狂的迭代需求得到的想法,当你每天都要在原代码上面疯狂按照领导要求修改,可能你会有自己的看法。


新增代码,尽量不影响以前逻辑


image-20240618163649720.png


新增代码的时候,尽量按照以前的规则逻辑来进行,比如我改的一个老项目,使用的公司自己写的一套 SQL 处理逻辑,我总不能说不行!我用不惯这个!我要用 MyBatis!!!!那真的直接被 T 出门口了。


尊重他人代码风格


每个人的代码风格都有所不同,这个很正常,不同厨师的老师教法不一样,做出的味道还不一样呢,没有最好的代码,只有更适合的代码,刚好我就有这样的例子:


我注入 Spring 依赖喜欢用构造注入、用 Lombook 的注解 @RequiredArgsConstructor 注入,我同事喜欢 @Autowired ,我能说他不准用这个吗,这个是人家的习惯,虽然 Spring 也不推荐使用这个,但改不改这个都不会影响公司收益,反而能少一件事情,促进同事友好关系,哈哈哈哈,我是这样认为的。


处理好同事之间的关系


哈哈哈哈这个真的就是人情事故了,你换位想象一下,如果你写的幸幸苦苦的代码,新来的同事或者实习生,来批评你的代码不规范,要 Diss 你,偷偷改你代码,就算他说的超级对,你心里都十分不好受,会想一万个理由去反驳。


我一般如果需求需要改动同事的代码,我会先虚心的向同事请求,xx哥,我这个需求要改动你这边的代码来配合一下,你来帮我一起看看,你这部分的代码这样改合理吗,或者你自己改下你自己的部分,然后我合并一下~ 谢谢 xx哥。




作者:cong_
来源:juejin.cn/post/7383342927508799539
收起阅读 »

程序员节快乐!– 致所有 1024 码农的幽默与哲思

今天是 10 月 24 日,也就是传说中的 “1024 程序员节”,这一天是属于全世界程序员的“狂欢日”。为什么是 1024 呢?因为 1024 是 2 的 10 次方,是计算机世界里最常见的数字之一——特别是在存储和数据的单位里,如 1KB = 1024 字...
继续阅读 »

今天是 10 月 24 日,也就是传说中的 “1024 程序员节”,这一天是属于全世界程序员的“狂欢日”。为什么是 1024 呢?因为 1024 是 2 的 10 次方,是计算机世界里最常见的数字之一——特别是在存储和数据的单位里,如 1KB = 1024 字节。它象征着二进制与数字化生活的核心。


程序员们每天的生活总是充满了奇思妙想、反复调试和对代码的无限热爱。所以,今天我们不聊崩溃的服务器、也不谈工期紧张的项目,来一点轻松幽默,借助我们熟悉的 PHP,用代码带来一些欢乐!


1. 程序员的内心独白


作为一个程序员,最常见的恐惧是什么?是生产环境里的“意外”。让我们看看如何在 PHP 中模拟这种恐惧的场景:


<?php
// 在生产环境执行的一段不该存在的代码
if (getenv('APP_ENV') === 'production') {
echo "啊!为什么这段代码会在生产环境运行?!\n";
} else {
echo "你还在开发环境,放轻松。\n";
}
?>

输出:


啊!为什么这段代码会在生产环境运行?!

程序员的噩梦就是这种了:忘记屏蔽的调试代码在上线后引发了一场“灾难”,手忙脚乱地撤回。还好我们有版本控制和备份。


2. 程序员的平凡一天


程序员的一天通常由无数的 bugdebug 组成。我们来看一段有趣的 PHP 代码,模拟一位程序员一天的工作流程:


<?php
$bugs = 10;
$debugs = 0;
$coffee = 1;

while ($bugs > 0) {
$debugs++;
echo "调试第 $debugs 次,修复了1个bug。\n";
$bugs--;

if ($debugs % 3 === 0) {
echo "喝杯咖啡提提神吧!\n";
$coffee++;
}
}

echo "所有bug修复完毕!你喝了 $coffee 杯咖啡。\n";
?>

输出:


调试第 1 次,修复了1个bug。
调试第 2 次,修复了1个bug。
调试第 3 次,修复了1个bug。
喝杯咖啡提提神吧!
调试第 4 次,修复了1个bug。
调试第 5 次,修复了1个bug。
调试第 6 次,修复了1个bug。
喝杯咖啡提提神吧!
调试第 7 次,修复了1个bug。
调试第 8 次,修复了1个bug。
调试第 9 次,修复了1个bug。
喝杯咖啡提提神吧!
调试第 10 次,修复了1个bug。
所有bug修复完毕!你喝了 4 杯咖啡。

这就是程序员的一天,似乎修复一个 bug 的代价往往是多喝一杯咖啡。喝杯咖啡是充满仪式感的事情,只有这样,程序员才能在层出不穷的 bug 中找到自我。


3. 程序员的经典吐槽


编程界有很多经典的笑话,最常见的就是 "It works on my machine",意思是代码在我的电脑上运行没问题,那为什么在其他地方总是崩溃呢?让我们用 PHP 来重现这个场景:


<?php
$environment = "development"; // 在开发环境完美运行

function itWorksOnMyMachine($env) {
if ($env === "production") {
throw new Exception("在生产环境中崩溃了!");
} else {
echo "在开发环境中运行良好!\n";
}
}

try {
itWorksOnMyMachine($environment);
} catch (Exception $e) {
echo $e->getMessage();
}
?>

输出:


在开发环境中运行良好!

然而当我们切换到生产环境时:


$environment = "production"; // 在生产环境突然崩溃

输出:


在生产环境中崩溃了!

这就是所谓的“本机没问题,但上线必然出问题”的尴尬。


4. 程序员的哲学思考


程序员常常思考这样的问题:究竟是我在调试代码,还是代码在调试我?这是每个开发者都要面对的编程哲学问题。我们用 PHP 代码来表达这种深刻的哲学思考:


<?php
function whoIsDebuggingWho($iterations) {
$you = "程序员";
$code = "代码";

for ($i = 0; $i < $iterations; $i++) {
if ($i % 2 == 0) {
echo "$you 在调试 $code\n";
} else {
echo "$code 在调试 $you\n";
}
}
}

whoIsDebuggingWho(5);
?>

输出:


程序员 在调试 代码
代码 在调试 程序员
程序员 在调试 代码
代码 在调试 程序员
程序员 在调试 代码

在调试的过程中,有时候会让你感觉代码有它自己的意志,总是在你修复一个 bug 的时候带来另一个问题,就像代码在调试你一样。


总结


在程序员节这天,致敬所有在键盘前日夜奋斗的开发者们,你们的努力创造了现代数字世界的奇迹。程序员的工作可能常常伴随着压力和挑战,但每一次解决问题的瞬间,都是无价的成就感。1024,不只是一个数字,它是程序员精神的象征:精简、高效、充满逻辑的美感。


祝大家 1024 节快乐,愿每行代码都顺利运行,每次编译都能一键通过!


作者:Golang开发者
来源:juejin.cn/post/7429349035893784630
收起阅读 »

研发团队没有战斗力,怎么解?

研发团队没有战斗力,怎么解? 在现代企业中,研发团队的战斗力是企业竞争力的重要组成部分,尤其是在技术驱动型的公司。 一个高效、有战斗力的研发团队不仅能快速适应市场变化,还能通过技术创新为企业创造更多的价值。那么,如何才能打造一个有战斗力的研发团队? 我们先界定...
继续阅读 »

研发团队没有战斗力,怎么解?


在现代企业中,研发团队的战斗力是企业竞争力的重要组成部分,尤其是在技术驱动型的公司。


一个高效、有战斗力的研发团队不仅能快速适应市场变化,还能通过技术创新为企业创造更多的价值。那么,如何才能打造一个有战斗力的研发团队?


我们先界定问题,拆解问题,然后再看怎么系统化的去解。


1 界定问题


我们需要明确什么是「有战斗力的研发团队」,并清楚当前团队与理想状态之间的差距。


用我和我们家闺女常说的,当有人和你说一些事情的时候,需要看一下他说的「是一个观点还是一个事实」。「研发团队没有战斗力」,这明显是一个观点。基于这个观点,接下来我们要做的,就是去拆解这个观点背后的事实,并找到支撑这个观点的具体原因。


那事实有哪些呢?


1.1 任务完成效率低


团队的任务完成效率可以通过数据来衡量。如果团队频繁出现项目延期、任务积压,或者在完成某些任务时总是比预期时间拖延很多,这通常会被认为是研发团队没有足够战斗力的重要表现之一。这里的事实包括:



  • 项目计划与实际进度的差距有多大?

  • 每个任务的平均完成时间是否过长?

  • 团队在解决问题时是否常常遇到瓶颈?


这些数据可以通过项目管理工具(如 Jira、Trello 等)来进行追踪和量化。一旦明确了当前的情况,我们就能更好地了解团队效率低下的具体原因。


1.2 沟通不畅


沟通问题是研发团队中非常常见的困扰之一。它可以通过以下事实来体现:



  • 团队成员之间是否常常因为沟通不足而产生误解?

  • 在跨部门协作中,是否有任务交接不清、信息传递不准确的情况?

  • 是否存在因为沟通问题导致的工作重复或返工?


通过团队内部的回顾会议、跨部门的反馈等方式,可以明确沟通问题的具体表现和影响。沟通不畅往往会拖慢整体效率,降低团队的战斗力。


1.3 团队士气低落


士气低落是另一个常见的观点化描述,但它背后有很多具体的事实可以支撑:



  • 团队成员是否主动承担任务,还是常常出现推诿现象?

  • 团队的离职率是否高于行业平均水平?

  • 团队成员是否经常表现出疲惫、倦怠,缺乏对工作的积极性?


如果团队中缺乏成就感、归属感,激励机制不到位,这些都会导致士气低落,进而影响团队的整体战斗力。通过员工满意度调查、绩效考核结果等数据,我们可以准确捕捉到士气低落的事实。


1.4 技术债务积累


「技术债务」经常会被忽视,但它实际上是研发团队战斗力不足的重要原因之一。以下事实可以帮助我们判断团队是否面临技术债务问题:



  • 系统是否频繁出现 BUG,导致大量时间用于修复问题而非开发新功能?

  • 是否有大量遗留的代码或架构问题,导致团队在进行新功能开发时效率低下?

  • 系统的可维护性和可扩展性是否在不断下降?


技术债务的积累不仅会拖慢整个团队的开发进度,还可能让团队陷入“救火”而非创新的状态,这无疑是战斗力下降的一个重要体现。


1.5 质量问题严重


质量问题也是影响研发团队战斗力的一个重要因素,并且算是一种非常关键的事实表现。质量问题不仅影响产品的稳定性和用户体验,还会对团队的效率、士气和创新能力造成负面影响。在「研发团队没有战斗力」这一观点下,质量问题可以归结为以下几个具体事实:



  • 有频繁的产品缺陷和返工,可以使用缺陷率、线上故障数、SLA 等指标来衡量

  • 项目交付质量不达标,如功能不完整,性能问题,用户反馈差等

  • 缺乏严格的代码审查和质量控制流程


1.6 工程化和系统化问题


「工程化和系统化问题」是影响研发团队战斗力的重要因素之一,尤其是在团队规模扩大、项目复杂性增加的情况下。工程化和系统化不足通常会导致团队的开发流程混乱、效率低下、交付质量不稳定、可扩展性差,甚至会影响团队的整体协作能力和长期发展。其主要体现在如下几个方面:



  • 缺乏标准化流程

  • 自动化程度不足,缺乏自动化测试,手动操作的事项较多,重复劳动多

  • 系统化不足,缺乏整体架构设计,模块耦合度高或者扩展性差


1.7 人才梯队问题


人才梯队是指团队中不同层级的人才储备和发展体系。如果团队中缺乏明确的人才梯队,意味着团队内部没有清晰的发展路径,成员的技能水平参差不齐,导致团队的整体战斗力不足。以下是一些具体的事实表现:



  • 缺乏明确的晋升机制:团队中没有明确的晋升机制和路径,导致优秀的员工看不到职业发展前景,逐渐失去动力。

  • 关键人员依赖严重:团队中的某些核心人员承担了过多的技术关键任务,一旦这些人离职或出问题,整个项目或团队都会陷入停滞。

  • 缺乏接班人:当团队中的高层或资深技术人员调岗或离职时,缺乏能够快速接替其工作的接班人,导致项目推进或技术维护出现断档。


这些现象说明团队在人才梯队建设上存在严重不足,导致团队的持续作战能力和抗风险能力较差。


1.8 人才密度问题


人才密度指的是团队中高水平技术人才的比例。如果团队的人才密度不足,即高水平人才较少,团队整体的战斗力自然会大打折扣。以下是一些具体的事实表现:



  • 技术水平不均衡:团队中技术能力强的人数较少,大多数成员的技术能力不足以支撑复杂的项目开发,导致高水平的成员承担了大部分工作,而低水平的成员拉低了整体效率。

  • 问题解决能力差:团队整体在面对复杂问题时,解决问题的能力不足,往往需要依赖外部资源或高层决策,无法自主高效地解决技术难题。

  • 技术创新动力不足:由于缺乏高水平人才的引领,团队内部的技术创新能力较弱,难以提出具有前瞻性的技术方案。


人才密度直接影响到团队的技术创新和问题解决能力,因此提升人才密度是打造高战斗力团队的关键。


2 分解问题


在明确了研发团队战斗力不足的主要表现后,我们需要进一步分解问题,以便逐步分析并找到解决方案。根据 MECE 的原则,可以将战斗力不足的问题分解为下列几个方面:


2.1 效率问题


效率是衡量研发团队战斗力的最直接指标之一。如果团队的任务完成效率低下,项目延期频繁,势必会影响整体战斗力。这一问题可以分为以下几个子问题:



  • 流程不清晰:团队的开发流程、测试流程、发布流程是否标准化?是否有明确的职责划分和操作步骤?

  • 工具使用不当:项目管理工具、代码管理工具、自动化工具是否充分使用?是否存在大量的手动操作和重复劳动?

  • 不合理的资源分配:团队成员的任务分配是否合理?是否存在某些成员工作过载,而其他成员任务量不足的情况?

  • 瓶颈无法突破:团队在某些技术领域或开发阶段是否经常遇到瓶颈,导致任务卡住?


2.2 沟通协作问题


沟通不畅往往是导致研发团队效率低下和战斗力不足的主要原因之一。沟通问题可以进一步分解为:



  • 跨部门沟通障碍:研发团队和其他部门(如产品、运营、市场等)之间的沟通是否频繁出现误解或信息不对称?

  • 内部沟通不畅:团队内部成员之间是否缺乏有效的沟通渠道?是否存在信息流动不畅或不透明的情况?

  • 技术与业务脱节:研发团队是否充分理解业务需求?技术方案是否能够及时响应业务的变化?


2.3 士气和激励问题


研发团队的士气低落通常是由激励机制不合理、工作压力过大或缺乏成就感引起的。这个问题可以进一步分解为:



  • 激励机制不健全:绩效考核、薪资、奖金等激励机制是否能够有效激励员工?团队中是否存在“吃大锅饭”的问题,导致优秀员工失去动力?

  • 成就感缺失:团队成员是否能感受到工作的意义?是否有足够的成就感和归属感?

  • 工作倦怠:团队成员是否长期处于高压、加班的状态,导致出现工作倦怠?


2.4 技术债务与质量问题


技术债务和质量问题会严重影响团队的战斗力,因为它们导致团队需要花费大量时间在修复错误和维护上,而不是开发新功能或创新。技术债务和质量问题的细分包括:



  • 代码质量差:团队是否有严格的代码评审流程?代码是否有良好的可读性、可维护性?

  • 技术债务积累:系统中是否存在大量的历史遗留问题(如未重构的老旧代码、架构问题等),导致维护成本高、开发效率低?

  • 缺乏自动化测试:团队是否有足够的自动化测试覆盖?是否依赖大量的手工测试,增加了测试和发布的成本?


2.5 人才梯队建设不足


人才梯队建设不足意味着团队缺乏不同层次的人才储备,导致团队的整体战斗力和可持续发展能力受限。具体问题包括:



  • 晋升机制不明确:是否有清晰的晋升机制和职业发展通道?员工是否知道如何通过努力获得晋升或更多的成长机会?

  • 接班人缺失:是否有计划培养接班人,确保每个关键岗位都有后备力量?

  • 关键依赖严重:团队是否过度依赖某些核心人员,一旦这些人离职或请假,项目进展是否会受到严重影响?


2.6 人才密度不够


人才密度不够会导致团队在面对复杂技术问题时缺乏足够的解决能力,团队的技术创新能力也会因此受到影响。这个问题可以进一步分解为:



  • 招不到合适的人:招聘过程是否存在瓶颈,导致无法及时引入高水平的技术人才?

  • 人才培养不足:是否有系统的内部培训机制,帮助团队成员提升技术水平?

  • 技术水平参差不齐:团队成员的技术能力是否存在较大的差异,导致整体效率不高?


2.7 工程化和系统化不足


工程化和系统化不足会导致团队效率低下、交付质量不稳定,无法应对复杂的项目需求。具体问题包括:



  • 开发流程不标准:是否有统一的开发、测试、发布流程?是否存在大量的手动操作?

  • 自动化程度不够:系统的开发、测试、部署等环节是否充分利用了自动化工具?是否存在大量重复的手工劳动?

  • 架构设计不合理:系统的架构设计是否能够支持业务的扩展和未来的发展需求?是否存在模块耦合度过高、扩展性差等问题?


3 体系化的解决问题


解决研发团队没有战斗力的问题,是一个多维度、跨职能的系统性工程。它涉及到组织文化、组织结构、技术架构、流程设计、工程系统和度量考核等多个方面。每个维度的优化和提升都能够为研发团队带来战斗力的增强,但这些维度并非孤立存在,而是相互关联、彼此支撑的。


我们需要明确的是,研发团队战斗力的提升不仅仅是为了提高「速度」,更是为了提高「质量」和「价值」,即更高效地交付更优质的产品,满足业务需求,并为公司创造长期的价值。


3.1 组织文化和沟通机制构建


组织文化是企业的灵魂,它直接影响员工的行为和思维方式。一个以创新和协作为核心的组织文化能激发员工的创造力,鼓励他们尝试新方法和新技术,并在失败中学习和改进。文化的塑造对研发效能提升而言,是打下「地基」的工作。


如何构建?



  • 建立跨部门沟通机制:通过定期的跨部门会议或项目复盘,确保技术、产品、业务等不同职能部门之间的沟通顺畅。可以采用 OKR双向沟通机制,让各部门了解彼此的目标和进展,减少信息孤岛。

  • 鼓励知识共享:定期组织 技术分享会内部培训,以及设立 技术博客Wiki,这样可以促进技术积累和知识在团队内的流动。还可以通过内部的 导师制,帮助新员工快速融入团队。

  • 认可和激励创新:设立相应的 奖项肯定机制,对提出创新方案或成功实施新技术的员工进行公开表扬和奖励。比如可以设立 季度创新奖,以鼓励员工在日常工作中不断试验和改进。

  • 领导层的共识:研发负责人应确保与高层管理者达成一致,使研发效能提升工作得到高层支持。领导层的共识会帮助在资源分配、目标设定、团队管理等层面为研发效能的提升提供保障。


我们可以进行如下的一些具体的操作:



  • 定期组织 跨部门的需求讨论会研发复盘会,确保各个部门的需求和反馈能够及时传递。

  • 设立 激励计划,对优秀的创新项目和技术方案进行奖励。

  • 通过 员工满意度调查一对一访谈,了解员工对现有文化的看法,并持续改进。


3.2 调整组织结构


组织结构决定了信息的流动、资源的分配以及决策的效率。一个灵活的、扁平化的组织结构能够促进创新,加速决策过程,同时减少层级间的沟通障碍。通过合理的组织结构设计,可以让团队在面对复杂问题时具备更强的反应能力。


组织结构的调整需要根据实际的团队情况以及业务情况来做优化,是职能型,还是项目型,还是矩阵型等等,可以有如下的一些参考思路:



  • 小型化、自治化的团队:采用 跨职能团队 的形式,促进团队成员之间的紧密合作。每个团队都拥有相对独立的决策权,能够快速响应业务需求。采用 Spotify 模式Scrum 团队 的形式,打破职能部门壁垒,形成更快速决策和执行的团队。

  • 灵活的项目管理机制:引入 动态人员管理内部创业机制,让团队能够根据项目的需求灵活调整人员和资源配置。通过设立 内部孵化器,让员工能够在公司内部尝试新的项目和解决方案。

  • 减少管理层级:通过扁平化管理,减少中间层级的沟通障碍,形成更直接的反馈机制。管理者应该更多地起到 协调者支持者 的作用,而不是微观管理。


在实际操作过程中,我们可以:



  • 设立多个 跨职能团队,每个团队独立负责某个产品或项目的端到端交付。

  • 引入 OKR 管理机制,确保各个团队的目标与公司整体战略保持一致,并且团队间可以灵活协作。

  • 定期进行 组织结构评估,根据业务需求和人员成长情况灵活调整团队架构。


3.3 评估并调整技术架构


技术架构的合理性直接影响团队的研发效率。如果架构设计不合理,团队的开发成本会持续增加,迭代速度会变慢,系统的稳定性和可扩展性也会下降。通过合理的架构设计,可以让团队更高效地应对变化和扩展需求。


以下为一些评估和调整的思路或原则:



  • 模块化、低耦合的架构设计:在架构设计中,遵循 高内聚、低耦合 的原则,确保系统模块之间的依赖性降到最低,便于独立开发和部署。采用 微服务架构服务化架构,将系统拆分为相对独立的服务,确保每个模块可以独立扩展和维护。这虽然是老生常谈,但是很少有组织做得很好。且这里需要根据实际的业务需要和当前架构形态来决策。

  • 云原生架构:通过云原生架构,使用 DockerKubernetes 等容器化和编排技术,实现系统的一致性和可移植性,支持快速部署和环境隔离。

  • 灵活的技术栈:根据业务需求选择合适的技术栈,而不是盲目追求技术潮流。技术选择要与团队的技术能力和业务发展阶段相匹配。

  • DevOps 和 CI/CD 实践:通过持续集成和持续交付(CI/CD)来加速产品发布,减少人工操作的错误,提升发布频率和质量。


具体操作过程中,我们可以:



  • 进行 架构评审,定期对系统的技术架构进行审查,确保架构能够支持当前和未来的业务发展。

  • 引入 DevOps 实践,通过自动化工具(如 Jenkins、GitLab CI 等)实现持续集成和交付。

  • 采用 微服务架构 进行系统划分,确保各个服务可以独立开发、测试和部署。


3.4 优化研发流程


研发流程设计是确保研发活动高效进行的关键。良好的流程设计可以减少非必要的工作,清晰定义各个阶段的输入、输出和质量标准。同时,优秀的流程设计能帮助团队在每个环节上减少浪费,提升整体效率。


以下为常用的一些优化思路:



  • 引入敏捷开发方法:采用 ScrumKanban 等敏捷开发方法,确保团队能够快速响应需求变化,并通过短周期迭代逐步交付产品。不能为了敏捷而敏捷,根据当前团队情况来实施。

  • 精益开发思想:通过 精益思想(Lean),消除流程中的浪费,减少不增值的工作。例如,减少不必要的会议、文档、审批流程,提升团队专注于高价值任务的时间。

  • 自动化流程:通过引入自动化工具,简化开发、测试和发布流程,减少手工操作和人为错误。比如自动化代码检查、自动化测试、自动化部署等。

  • 数据驱动的流程优化:通过 数据分析工具(如 Jira、SonarQube 等)监控流程中的瓶颈点和低效环节,并持续优化流程。


实际操作过程中可以通过以下的方式来做一些落地的操作:



  • 定期进行 流程审查会议,分析当前流程中的低效环节和瓶颈,提出改进方案。

  • 采用 需求交付周期需求吞吐量 等指标,衡量每个迭代的效率,并根据数据优化流程。

  • 使用 自动化工具 完成代码检查、测试和部署,减少人工干预。


3.5 优化工程系统


工程系统是研发效能提升的基础设施。包括代码管理、构建、测试、部署等一系列工程实践。通过系统化的工具和方法,可以减少重复性工作,提升研发的效率和稳定性。


工程系统如何优化?



  • 统一的开发环境:建立统一的开发环境和工具链,确保团队成员在同一套标准下工作,降低环境差异带来的问题。采用 Docker 等容器化技术,确保本地开发环境与生产环境的一致性。

  • 自动化测试平台:通过自动化测试平台(如 Selenium、JUnit、TestNG 等),实现单元测试、集成测试、回归测试的自动化,提高产品质量,减少人工测试的负担。

  • 版本控制系统:采用 Git 等版本控制系统,建立合理的分支管理策略(如 GitFlow),确保代码的安全性和可追溯性。

  • 监控和日志分析系统:引入 监控工具(如 Prometheus、Grafana)和 日志分析工具(如 ELK Stack),确保系统的运行状况可视化,尽早发现问题并采取措施。


在实际操作过程中我们可以:



  • 建立统一的 Docker 镜像仓库,确保开发和生产使用相同的基础环境。

  • 使用 持续集成工具(如 Jenkins)进行代码的自动化构建和测试。

  • 设立 监控和报警机制,确保系统的健康状况能够被实时监控。


3.6 构建度量考核


度量考核是研发效能提升的反馈机制。它为团队提供了衡量成果和改进的依据,帮助团队识别问题、跟踪进度,并调整优化策略。没有量化的度量,研发效能的提升就缺乏方向和依据。


同时,度量可以让战斗力这个概念可视化出来,更明确什么是有战斗力,什么是没有战斗力。


我们可以用如下的方式落地:



  • 建立科学的度量体系:用一套符合团队实际情况的指标体系来衡量效能,覆盖项目进度、产品质量、团队效率等方面。常见的度量指标包括 需求交付周期缺陷率代码覆盖率部署频率 等。

  • 定期审视数据:定期对这些指标进行审查,分析趋势和异常,找出影响效能的主要原因,并制定改进措施。

  • 将度量结果与激励机制挂钩:通过绩效考核,确保团队成员的贡献能够被量化和认可,并通过奖励机制激励团队不断提升效能。


实际操作:



  • 建立 研发效能仪表盘,实时监控团队的效能指标。

  • 每月定期召开 效能回顾会议,根据数据分析报告,制定下一步的改进计划。

  • 研发效能指标 纳入团队的 OKR 或绩效考核体系,确保团队成员的目标与效能提升保持一致。


4 小结


提升研发团队的战斗力是一个体系化、系统化的工程,涉及到组织文化、组织结构、技术架构、流程设计、工程系统和度量考核等多个层面。通过在这些维度上进行持续优化,可以显著增强研发团队的战斗力,提升产品交付的速度、质量和创新能力。


如果要真正的解决研发团队没有战斗力的问题,在上面界定问题、分析问题和解决问题的基础上,还需要有如下的一些操作和逻辑:



  • 建立目标和成功判断

  • 制定详细的解决方案

  • 设定里程碑

  • 制定详细的工作计划

  • 风险判断和未来改进


只有完整落地详细的工作计划,完成里程碑,一步一个脚印,才能真正的打造出有战斗力的研发团队。


每个企业的实际情况不同,因此在执行时需要根据具体场景进行灵活调整。最终目标是帮助研发团队在高速变化的市场环境中,更高效、更稳定地交付高质量的产品,创造更大的商业价值。


作者:潘锦
来源:juejin.cn/post/7430058214982926386
收起阅读 »

从《逆行人生》聊聊中年程序员的出路

赶在下架前去看了《逆行人生》。 这部电影讲述了高志垒——一个架构师,被裁员后,在找工作两个月颗粒无收的情况下,被逼无奈去跑外卖的故事。 个人感觉还是很值得一看的,是一部很好的现实题材电影,并没有网上说的资本迫害打工人还要打工人努力奋斗的感觉。 有年轻人说,难以...
继续阅读 »

a84ac789e4ab76f547708661ed1630f2367c47ce.jpg


赶在下架前去看了《逆行人生》。


这部电影讲述了高志垒——一个架构师,被裁员后,在找工作两个月颗粒无收的情况下,被逼无奈去跑外卖的故事。


个人感觉还是很值得一看的,是一部很好的现实题材电影,并没有网上说的资本迫害打工人还要打工人努力奋斗的感觉。


有年轻人说,难以共情。70万年薪的人最后要落到为了 15k 的月薪而奔波,他不理解为什么。然而就我亲身经历而言,无路可走的时候,我们的确会做这样的选择。


我们先来看看中年程序员有哪些选择。


中年程序员有哪些出路?


中年三宝插画-2.jpeg


继续打工


打工,无疑是多数人的选择。毕竟上一天班赚一天的钱,这种稳稳的幸福还是大部分人的追求。但打工也不能停滞不前,还是要不断学习、拓展自己的能力,尤其是我们IT行业,技术更新迭代快。如果不学习,很可能 3 到 5 年就被淘汰了。


程序员要晋升、跳槽,主要学习方向以下两种:



  • 拓展技术的深度与广度:高级开发、架构师、热门行业的开发如AI等;

  • 向外拓展自己的能力:培训机构老师、高校老师;技术管理;


自己单干


继续打工,无疑都会碰到被裁员的风险,你个人的命运始终掌握在老板甚至顶头上司的手里。如果你不甘于此,就要开创性地走其他路了。这对个人的挑战都是极大的。


程序员可以凭借技术能力逐渐向外扩展:



  • 独立开发:承接项目或者自研产品

  • 创业:成立公司、团队,完成开发工作


彻底转行


也有部分人被彻底伤透了心,完全不再进入这个行业了,转向其他行业了。



  • 网络兼职:写手、影视剪辑等;

  • 中年三保、铁人三项:保安、保姆、保洁、快递、司机、外卖。这个是被大家调侃最多的;

  • 其他行业的打工者:如制造业、外贸等行业;

  • 开店或者创业:存上一笔钱开店或者做一间自己喜欢的公司,也是一些人的选择。


我们应该如何选择?


如上所见,程序员能做的选择还是比较多的。我们将这些工作列个表,列一下所需要的能力与所承担的责任,以及最后的风险,以便做选择:


截屏2024-09-16 14.25.39.png


可以看到,每个方向其实都是有风险的,并没有不存在无风险的职业与方向。那是不是我们就可以完全凭借个人喜好来决定呢?并非如此,这些选择对大部分人而言,还是有优劣之分的。


不推荐铁人三项、中年三宝


中年三宝插画-7.jpeg


首先,我个人其实非常不建议程序员转行去做起他行业的,除非迫不得已,尤其是从事体力劳动。


因为这需要消耗大量的体力与时间。中年人无法靠比拼体力取胜,工作时间长,也无法取得工作生活平衡。在电影《逆行人生》中,高志垒虽然赢了第一个单王,但可以看出其靠的更多是运气,行业老大哥或退出竞赛、或家里有事提早离开。


另外就是,AI 技术发展和市场供需变化。不久前武汉的萝卜快跑落地,相信大部分滴滴司机都感受到了被淘汰的可能。而且这类工作市场基本上已经饱和,所以薪酬只会越来越低。


其他的网络兼职、去制造业服务业打工,这些都是门槛低,程序员即使有技术与能力,也不见得有任何优势的,所以也是不推荐的。


而开店或按自己的兴趣来创业,则非常看你个人能力了,同样需要更谨慎的考虑,当然你如果家财万贯,倒是可以任性一把。


更推荐提早规划、提早行动


剩下的职业方向其实都是推荐的,因为多多少少跟我们自身学习的技术是相关的。将我们的能力逐步往外扩,逐渐走出舒适圈,是更合适的一个发展路径。但是需要注意的是,建议尽早立下目标,提前规划,尽快行动的。


如,希望做老师,可以提早在企业内部做讲师、技术讲师,给新人讲解。锻炼好自己的沟通表达能力,多想想如何让新人更好地融入企业、进入工作状态。


又如,你想自己创业,那可以开始就留意你手头上做的产品是如何开发、运营的。公司如何分配人力物力去做的,如何做商业变现的,如何寻找客户的等等这些问题。不仅要站在技术角度、也要站在公司的角度多思考、多学习、多实践。甚至在时机成熟的时候,提出转岗去做产品、技术管理,更早地锻炼自己所需的创业的能力,能让自己日后的路走的更顺。


高志垒为何还是选择送外卖?


中年三宝插画-5.jpeg


回到电影,既然都不建议程序员从事体力劳动,高志垒好好的一个架构师,也是有脑子的,为啥最后还是选择了外卖员呢?


首先,从影片一开始可以看出,高志垒选择了架构师或者技术管理偏技术方向,因其手头上还有一线开发的任务。显然对于 45 岁的他,在打工这条路上几乎已经到顶了。


然而,他并没有做好职业规划,甚至从未考虑过失业的风险。在突然失业时,才发现市场上几乎找不到自己的职位、薪酬,最后简历也是乱投一气了;而中产返贫三件套:高额房贷、全职太太、国际学校,他几乎全都拥有;并且还大笔地投资了 P2P ,因其爆雷导致家庭财产大量损失;再加上其父亲突发重病,住院急需要钱。


所有的状况同时出现,所有的压力压在身上,在两个月投递简历无果时,他听说送外卖能补上房贷月供差额的数目,宛如找到救命稻草一般,毅然加入了外卖行业。


如何避免陷入被动状况?


如何避免我们也陷入高志垒的状况?


除了像上面说的提早积攒自己的能力,提早做规划、更早地行动外,程序员也应提升技能多样性,特别是专业外的技能;同时在职业中后期应寻找到更利于个人发展的公司或项目;还需要拓展人脉,保持与行业内的沟通交流;在最后,保持健康的生活习惯和平衡好工作,让自己的职业寿命尽可能地延长。


中年三宝插画-9.jpeg


而在财务上,做好失业准备、甚至为后续独立开发、创业等积攒资金都是必要的,所以需要采取一些措施,做好家庭财务的规划,如:



  1. 留出紧急备用金:为应对突发事件,如失业或疾病,应建立足够的紧急基金,一般建议为家庭日常开支的3-6个月。

  2. 谨慎投资:只投资自己熟悉的产品;了解自身的风险承受能力再投资;同时避免将所有资金投入到单一的高风险产品中,如P2P,应进行资产配置,分散风险。

  3. 购买保险:为家庭成员购买适当的健康保险,以减轻因病致贫的风险。

  4. 做好财务预算、规划:每年、每月做好财务预算;同时对于房贷和教育投资等大额支出,应进行详细的财务规划,确保在收入中断时也能应对。

  5. 增加收入来源:尽可能地增加家庭收入来源,比如配偶就业或开展副业,减少对单一收入的依赖。


总结与思考


66bf3e22-63b4-443c-9411-038325654067.jpg


在戏里的高志垒无疑是幸运的,家庭和睦,家人都给予最大的支持,愿意一起度过难关。再加上自己开发的小程序“路路通”,同事间互助互利,最后,成功拿到了单王,并帮家里度过经济危机。


然而最后的结局,高志垒并没有“逆袭”人生,而是在“逆行”人生中,调整了自己。最后他卖掉了大房子,搬到了小房子住,老婆依然在工作,孩子也放弃了就读国际学校、老人靠自身意志力完成了康复。


这也是我觉得这部电影还算现实主义之处。并没有理想中的事情发生,就像现实生活中那些受挫的人们一样,最后选择降低生活标准,继续前行。


最后的最后,问一下大家,如果你面临电影结尾彩蛋中的情景,有一个外卖公司的高层老板对你开发的“路路通”小程序感兴趣,你会如何选择?



  • 卖掉小程序,拿钱走人

  • 加入外卖公司,继续开发

  • 不卖,开源


欢迎留下你的答案与思考,一起讨论。


作者:陈佬昔的编程人生
来源:juejin.cn/post/7414732910240972835
收起阅读 »

如果你想做副业,不妨看看我这3个月的奋斗史

看过我文章的小伙伴应该也都知道,去年我是坚持了每周更新一篇技术文章,去年文章总数算下来也有个50篇左右,然后今年立下的flag是: 再学一门语言,比如鸿蒙开发、游戏开发等等。这个flag是做到了,目前为止可以运用kotlin开发Android原生应用。 继续...
继续阅读 »

看过我文章的小伙伴应该也都知道,去年我是坚持了每周更新一篇技术文章,去年文章总数算下来也有个50篇左右,然后今年立下的flag是:



  • 再学一门语言,比如鸿蒙开发、游戏开发等等。这个flag是做到了,目前为止可以运用kotlin开发Android原生应用。

  • 继续在掘金平台输出文章,至少做到每周一更。年初原本想着是每周2-3更,但是目前看来是完全没做到,因为这2个月的个人时间全都扑在了“副业”上。


所以接下来,我会将这3个月的心路历程讲给大家听,如果大家想做副业,可以参考一下我的经历。


过年这段时间的思考


时间回退到去年过年的时候,我没记错的话应该是今年2月份是去年过年的时间点。我司是放了2周的假,那个时候我的工作年限是2年半(可以出道了,哈哈哈)。从大学到目前为止,心里一直有个声音告诉我:



我不可能通过打工来实现理想中的生活状态。原因如下:

1、房贷、车贷、孩子教育、大病、未知的风险,这些因素会导致生活质量非常脆弱。当然这也要因人而异,毕竟过的是否开心只有自己知道。

2、疫情后时代,裁员潮一浪更比一浪强,毕业人数越来越多,岗位越来越少,谋得一份自己满意的工作也趋近于“99%的运气 + 1%的努力”。

3、原来我努力学习技术是为了更好的打工,有人的地方就有江湖,你不能独善其身,因为并不是所有的人都喜欢双赢。



所以,年后在回北京的路上,我决定今年要尝试一下,不要把所有的时间全扑在技术上,可以考虑做一下“副业”。


如何做副业?


我个人比较喜欢看电影、电视剧、动漫、NBA。影视解说这个赛道可能就比较适合我,定了赛道以后,视频发到哪个平台呢?今年短视频平台特别多,抖音、快手、视频号、B站、西瓜、甚至是支付宝里都可以刷视频等等。在综合考虑之后,我选择了微信视频号。原因如下:



  • 微信不缺流量,也不缺广告商赞助。

  • 视频号绝对是某讯今年发力的重点,因为官方不止一次在公共场合里说明了视频号的重要性,而且春节晚会上也出现了视频号的赞助。

  • 视频号上目前竞争不激烈(这句话只在2024年6月前生效),因为用的人还不是很多,所以这个阶段对视频质量的管控还不是很严,毕竟它要吸引用户进来,前期肯定不会管控太严,而且流量也会给的很足。


于是2024年2月18日,我的第一条影视作品在视频号上发布了。


视频号2.jpeg


这是我第一次剪辑影视作品,花了3天时间。当时的播放量就是200多,你现在看到710播放量是2月18日 - 6月16日的播放量。那个时候粉丝数量是1,对,没错,就是你们想的那样,那个1就是我自己,哈哈哈。当时剪辑第一条视频的时候,说实话完全是一边学习一边剪辑,而且那个时候我进入了一个误区,就是必须要剪辑的完美,所以前2天一直没有产出,这个时候我慌了,2天一点产出都没有,所以第3天的时候我告诉我自己,先把视频发出去,你又不是只发一条视频,后面的视频慢慢优化,不要想着一口吃个胖子。


前2条视频都是有关三国的视频,那个时候播放量都是200多,但是从第3条视频开始,播放量直接破万,有的能达到10w。为啥会有大的播放差距?后来我复盘了一下,是因为我当时正好踩中热点了,并且竞争不激烈。第三条视频以后,我开始剪辑《南来北往》这部影视剧,当时这部电视剧可以说是非常火,没看过的小伙伴强烈建议你去爱奇艺上观看一遍,真的超级好看。


因为周一到周五上班嘛,所以周六周天我会把下周要发的视频全都剪出来,一天至少按时发一个作品,就这样,差不多2周左右的时间吧,我的有效粉丝突破了100个。


视频号4.jpeg


视频号是分等级的,等级跟粉丝有关系,等级越高,视频的基础播放量就越高,能解锁的权益也会越来越多。


有效粉丝数量突破100个,这个阶段是比较难的,原因如下:



  • 你要审视自己的作品质量。自己剪出来的东西是否有待提高等等。

  • 你要确定细分赛道,影视解说都算是一个大概念,它可以再细分为 “影视解说”、“影视混剪”、“影视情感”。

  • 一天分很多个时间段,每个时间段流量不一样,所以你要测出自己的作品在哪个时间段里,播放量比较高。


我原以为影视解说这条道路会这么顺的走下去,结果因为没有版权+播放量太高,被投诉侵权了。不是我吹,如果那个时候你在视频号里搜索“南来北往”,你看到的视频大部分都是我剪出来的。


视频号5.jpeg


说实话,我也是第一次见到这种阵仗,吓的我把所有关于“南来北往”的20多部作品连夜下架删除了。


在对比了其他平台后,我得出了如下结论:



  • 平台之间是有合作的,这部影视剧在这个平台算侵权,但是在其他平台里就不算侵权。

  • 二次创作的质量要高,要不然很容易就会被判违规,所以我已经完全转为纯影视解说。

  • 还是要看平台规则,要尊重平台的规则。


影视号在视频号里如何赚钱?


相信这个话题是你们比较喜欢看的,根据我的历程,影视号在视频号里的变现途径有以下几个方向:



  • 当你的作品播放量能够稳定突破10w的时候,或者每周的播放总量能够稳定突破50w的时候,会有很多人主动找你合作。

  • 视频号里有视频变现任务,你可以主动去接一些变现任务,然后等待任务结束后结算。当然,这个只有当你的有效粉丝数量突破100的时候,你才有资格去接任务。

  • 如果你的有效粉丝数量突破1000的时候,你可以挂商品链接,用户从你的链接点进去后,如果发生了交易,你会在中间赚一些分成,这个跟抖音的规则差不多。

  • 如果你的有效粉丝突破了5000的时候,你的账号就可以解锁商单功能。就是将自己的报价放出去,如果广告主找你合作,那么他就要遵循你的视频报价。一条1分钟以下的视频报价是多少,一分钟以上的视频报价是多少等等。


当然我说的这几个方向,都必须要遵循平台的规则。所以前2年,在抖音上,80%的探店账号都赚到了钱,就是因为前几年,探店视频在抖音上是趋势,如果前几年你在抖音上发探店视频,能够做到基础的每日一更,你的流量一定不会差,而且你也一定能够接到商单。


最后


又到了该和大家说再见的时候啦,这3个月确实是学到了很多东西,这3个月的奋斗史也绝对不仅仅是视频号,在其他方面上我也有很多很深入的尝试。


以上内容绝对没有任何的引导,只是自己上半年的一个分享,如果你还想看更多的,有关我在其他方面的尝试,欢迎评论区里发言,嘿嘿,我们下期再见,拜拜~~


作者:小九九的爸爸
来源:juejin.cn/post/7380510171640446988
收起阅读 »

大龄程序员尝试了不一样的兼职体验

自我理解        我可能和大部分程序员是一样的,就是一个普普通通的程序员,没有远大理想,没有清晰的职业规划,踏踏实实的做好工作,平时做好技术积累。即使目前已经36了,但不善于交际,依然是一个最底层的程序员,每天依然是写代码。在一家很小的小公司里面干了十...
继续阅读 »

  • 自我理解


       我可能和大部分程序员是一样的,就是一个普普通通的程序员,没有远大理想,没有清晰的职业规划,踏踏实实的做好工作,平时做好技术积累。即使目前已经36了,但不善于交际,依然是一个最底层的程序员,每天依然是写代码。在一家很小的小公司里面干了十多年了,可能公司比较小,危机也没有大公司那么强烈,即使经历了三年疫情,一个小公司活下来也是奇迹。在35岁前,我也并没有什么工作危机感。但是随着过了35岁,感觉可能程序员并不能干一辈子,而且这个感觉越来越强烈(不知道为什么会有)。所以一直就想找找其他的职业方向,列如兼职什么的,先尝试一下,毕竟之前什么也没做过。



  • 想法的迸发


       自从有了这个想法,我就开始不断的去了解那些是可以做的。例如自媒体,自媒体的选材又很多,知识分享类的,感受分享类的,直播讲课类的等。总之想了很多,但由于自己表达能力不是很好。多次录视频尝试后,还是不行。不得以放弃掉。后来接触送外卖是从一个朋友那里了解的,他也是兼职送,每周末兼职。大概每天能赚个200到300左右。经过朋友的鼓励,我选择尝试一下。



  • 开始准备工作


       可能送外卖和大家理解的还不一样,不是有个电动车就能送的。得租一个或者买一个能够换电的电动车,能够随时换电,不用担心没电的情况。接单也不是注册app就能接,这个也得有方法的,下面讲。开始准备租车,租车方式很多,大概租车价格都差不多,基本在500到700之间,包含租车和租电。总之租好车和注册号APP,按照流程做好认证,把学习课程做完就可以正式跑单了。



  • 跑单开始


       开始跑单的时候是由朋友带着跑了一次,怎么接单,接派单,怎么取单,怎么送单。跑了一次后也就明白了整个流程。我就开始自己跑,由于自己刚开始跑,我就选择接一单跑一单(外卖大神都是一次接十多单)。但是跑的过程中也是好多问题,商家找不到了,客户楼栋找错了啊,路线导航错了,送错人了,车到一半没电了等等。好多问题,但是万幸的是到目前还没有超时过。



  • 跑单时间和收入


       最开始是周末跑的,后来感觉停不下来了,现在每天中午休息的时候跑一个半小时,晚上不跑好好休息,毕竟还要上班,主业还是很重要的,周末继续跑。现在收入大概平时中午能收入二三十左右。周末能到200左右了。截至目前已经连续跑了两周了。



  • 跑单后的感受


       第一个身体上的感受,感觉之前的身体太弱了,最开始非常累,现在已经习惯点了。感觉自己的精神和专注度比之前要提升很多。虽然累,但是第二天还是很精神的,最起码感觉比之前要有很大的提升。 第二个就是眼界上面,每天都能够接触不同行业的人,看到很多的事情,比之前接触的人要多得多,而且大多数人对送外卖的是非常友好的。第三个就是通过送外卖可以看清很多东西,列如有些外卖真的环境很差,而且点的人还超级多。每次我都想提醒下这些人下次不要点了。有的时候打包外卖的人很快,有的就非常慢(这大概也是摸鱼),通过别人看自己也能理解一些东西。



  • 给大家的建议


       虽然感觉大家不一定能够点进来看,但是万一你点进来,并且看到了这里。我希望给你的建议就是如果你找到一个兼职的方向,请马上行动起来,并且坚持,如果不行,就换一个,马上行动,再坚持。


       也希望大家能够给我一些兼职方面的建议,我的眼界太局限了。可能有些行业我能够做好的,但是我并不知道的。在这里我谢谢大家。


作者:王二端茶倒水
来源:juejin.cn/post/7428785902640316451
收起阅读 »

90后在技术上开始被00后嘲笑了,90后该何去何从?

只要你不断的学习,哪怕学习一项新技术生命周期只有五年,未来十年内这个行业找口饭吃还是不难的, 如果互联网赛道太卷,也可以换个赛道 前言 事情是这样的,最近我正在做一个项目需要用到Elasticsearch做全文检索,我们组刚好进了一个00后新人,这个项目需求...
继续阅读 »

只要你不断的学习,哪怕学习一项新技术生命周期只有五年,未来十年内这个行业找口饭吃还是不难的, 如果互联网赛道太卷,也可以换个赛道



前言


事情是这样的,最近我正在做一个项目需要用到Elasticsearch做全文检索,我们组刚好进了一个00后新人,这个项目需求是在原来的搜索上增加很多新的字段,他说:新增加的字段他一会整理下然后添加到老索引上,我当时说:我们Elasticsearch索引里面有好几千万的数据,有一套添加字段的流程,需要重建索引比较麻烦的,大致流程是:先创建一个新的索引,然后reindex老数据到新索引中,然后再将别名重新指向新索引,具体流程可以参考我之前的文章《EalsticSearch添加字段后重建索引方法》。他说不需要这么麻烦啊,直接添加就好了,当时我就愣住了,我说你这有点超出了我的认知,在我的认知里Elasticsearch添加字段都是需要重建索引了,你确定索引里添加新字段不需要重建索引也能被检索到,他被我这么一问也有点不自信,然后我就实际求正了一下,在Elasticsearch7.10里添加字段确实不需要重建索引,就和Mysql添加字段一样,可能是我的知识有点落伍了,所以这里也学习、记录、反思一下。


一、添加索引


1.1 创建索引


第一步我们创建一个user索引,里面添加一个id字段:




PUT /user
{
"mappings": {
"properties":
{
"id": {
"type": "long"
}
}
}
}

然后我们添加一条数据:




POST /user/_doc/1
{
"id":1
}

1.2 添加字段


现在我们需要为user索引添加一个userName字段,类型为keyword




PUT /user/_mapping
{
"properties": {
"userName": {
"type": "keyword"
}
}
}

然后 GET /user/_mapping 发现字段已经添加上了




{
"user" : {
"mappings" : {
"properties" : {
"id" : {
"type" : "long"
},
"userName" : {
"type" : "keyword"
}
}
}
}
}

为了验证添加字段是否能补检索,我们添加一条数据




POST /user/_doc/2
{
"id":2,
"userName":"赵侠客"
}


▲可以搜索出添加的字段


验证完全没有问题,字段添加上了,也能搜索,事实证明我的知识确实需要更新了,我也不知道为什么我的认知里添加字段是需要重建索引的,而且我身边的开发者也是这么认为的,可能是最初使用者用了这个方法,后来留给我们了,然后大家都觉得添加新字段需要重建索引,也就一直这么用下来了!!!


1.3 历史数据处理


新加字段后新数据都有了userName字段,但是老数据是没有userName字段的,处理方法有两种



  • 老数据从数据库批量同步一下

  • 老数据可以通过_update_by_query设置个默认值



POST /user/_update_by_query
{
"script":{
"source": "ctx._source['userName'] = "公众号:【赵侠客】""
},
"query": {
"range": {
"id": {
"gte": 0,
"lte": 1
}
}
}
}

_update_by_query还有很多其它参数,比如异步执行、查看执行任务、取消任务等等,具体可以参考官方文档: Update By Query API


二、修改|删除索引字段类型


2.1 修改索引字段类型


在 Elasticsearch 中,一旦创建索引,就不能更改现有字段的数据类型,因为Elasticsearch是构建了倒排序索引,试想一下比如userName现在是keyword类型,如果我想改成text类型并且使用ik_max_word分词器分词,如果Elasticsearch能支持修改,那么它需要 将所有的历史数据都使用ik_max_word分词一下再重建索引,如果数据量巨大这个过程是非常缓慢,就像Mysql大表修改索引是非常慢的,所以就不支持了。想要修改字段类型,最好的方法应该是按我之前写的使用别名+reindex方式《EalsticSearch添加字段后重建索引方法》


2.2 删除索引字段


Elasticsearch已经建立好的索引数据是无法直接删除一个字段的,不过可以有两种方式来解决:



  • 第一种:是和修改字段类型一样,使用别名+reindex方式重建索引,

  • 第二种


是通过_update_by_query将历史数据中的字段删除掉,这种方法只能删除数据中的userName 字段值,mapping中的userName还是存在的,不过只要数据中没有userName字段其实和删除字段效果是一样的




POST /user/_update_by_query
{
"script": "ctx._source.remove("userName")",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "userName"
}
}
]
}
}
}

2.3 批量删除数据


既然有了_update_by_query,那肯定就有_delete_by_query,我们可以批量删除数据




POST /user/_delete_by_query
{
"query": {
"match_all": {}
}
}

同样_delete_by_query也有很多其它用法,可以参考官方文档: Delete by query API


最后总结:



  • 索引可以添加字段

  • 索引字段类型不能修改

  • 索引字段不能删除


三、焦虑的原因


前面写Elasticsearch不是本文的重点,只是我的引言,我是想让真正爱学习、有耐心看到最后的人能看到接下来的内容,本文的重点我是想聊聊对程序员这个行业的一点看法,为什么这个行业大都数人都非常的焦虑,刚工作的焦虑自己技术差,工作几年的焦虑自己要非升即走,工作很多年的焦虑自己会被裁。我觉得主要的原因就和上面写的案例有点关系。数学老师为什么不焦虑,越老越吃香?因为数学老师的教学经验会随着工作年限的增长而不断积累。比如三角函数有很多很难记的公式如:sin(A+B)=sinAcosB+cosAsinB,对于老师来说在刚工作可能25岁的时候下功夫记住,探索出一套自己的教学方法,在他65岁的时间照样可以用,如果每年还能优化一下教学方法,那么他会在教学岗位上干的越来越顺,教学效果也会越来越好,自然越老越吃香。反观我们这个行业,10年前你可能对SSH框架(struts+spring+hibernate)非常精通,可是现在呢?完全没人用了,不仅不能帮助你,写在简历上别人肯定觉得你比较落后,也就是说你的经验是不能一直积累的。就好比今天上面这个添加字段的案列,可能今天来看Elasticsearch不支持修改字段类型,但是5年后你还敢说Elasticsearch不支持修改字段类型吗?你现在学习的知识也许只能使用5年,5年后现在学习的知识很可能不但不能帮助你 还可能拖累你,而且随着年龄的增长,你的学习的时间、精力和效率还在不断的下降,这放在谁身上都会焦虑的。还拿数据老师教三角函数来说,如果每年都有几个三角函数公式被证明是错误,然后会有新的公式来取代,老的教学方法就不适用了,要探索新的教学方法 那我觉得老师可能比程序员更焦虑。


四、破解之法


4.1、职业选择


选择大于努力,第一步我觉得要认清程序员这个行业的现状,不能因为初期工资高就一门脑袋往里扎,就像最近比较火的太原理工大学2024软件工程招60个班,近2000人,有多少人是了解这个行业的,现在不清楚自己是不是适合这个行业,一门脑子扎进去,以后会随着时间的发展会陷的越来越深,想跳出来也会越来越难。所以我觉得前期要定位自己适不适合这个行业非常重要,我觉得有以下特点的人是非常适合这个行业的:



  • 逻辑思维强:编程工作需要严谨的逻辑推理,能将复杂问题拆解成简单的步骤,并用代码实现。

  • 耐心 和专注:编程过程中常遇到调试错误、修复bug等琐碎但关键的工作,这需要有足够的耐心和专注力。

  • 好奇心和学习 能力:技术更新快,编程语言和框架不断变化,适合做程序员的人通常对新知识感兴趣,并有较强的学习能力。

  • 解决问题的能力:编程本质上是解决问题的过程,适合做程序员的人喜欢面对挑战,乐于通过逻辑推理和分析找到解决方案。

  • 自我驱动力强:编程项目通常需要独立完成或长时间集中开发,具备自我激励、主动学习的能力尤为重要。

  • 注重细节:代码中的小错误可能会导致程序崩溃,适合做程序员的人往往对细节有高度敏感性,善于发现和修复问题。

  • 抽象思维:编程需要将现实问题抽象成数据结构和算法,适合做程序员的人通常能在高度抽象的层次上思考问题。

  • 沟通与协作能力:尽管编程看似是独立工作,但在实际项目中,程序员需要与产品经理、设计师、其他开发者等团队成员密切合作,清晰的沟通能力是关键。

  • 抗压能力:程序开发过程中难免会遇到紧急需求、临时修改或技术难题,良好的抗压能力能够帮助程序员在高压环境下保持冷静。

  • 结果导向:编程工作最终是为了实现功能或解决业务需求,适合做程序员的人能够以目标为导向,高效达成任务。


同时我觉得有以下特点的人是不适合干程序员:



  • 不喜欢学习新技术:程序员需要不断学习和适应新技术、编程语言、框架等。如果对新知识没有兴趣,或排斥学习,那么很难跟上技术发展的步伐。

  • 缺乏耐心和细心:编程需要大量的调试和修复错误,这些过程往往繁琐且时间长。如果缺乏耐心或不注重细节,容易导致代码质量低或频繁出错。

  • 逻辑思维较弱:编程本质上是逻辑的工作,如果无法清晰地理解和推理复杂的逻辑问题,或者在面对问题时感觉思路混乱,可能会在编程中遇到较大困难。

  • 不喜欢长时间独立工作:程序员的工作常常需要长时间独立思考和编码。如果不喜欢独处或静心工作,可能难以适应编程的工作节奏。

  • 抗压能力差:程序开发中常会遇到紧急需求、项目延期、复杂的技术难题等高压情况。如果在压力下容易崩溃或无法保持稳定的心态,可能会影响工作效率和结果。

  • 缺乏责任感和自律性:编程工作需要高度的自律和责任感,特别是在解决bug、优化性能时。如果没有足够的责任心,容易出现偷工减料或敷衍了事的情况,进而影响项目的整体质量。

  • 不擅长沟通和团队协作:尽管编程常被认为是独立工作,但在实际项目中,需要与团队中的其他角色(如产品经理、测试人员等)频繁沟通。如果不善于沟通或抗拒与他人合作,可能难以融入团队工作环境。

  • 厌恶重复性工作:编程虽然涉及创新和解决问题,但也有大量重复性的编码、调试、测试等工作。如果对这些重复性任务感到极度厌烦,可能会降低工作热情和效率。

  • 缺乏结果导向:编程最终是为了实现功能和解决问题。如果过于追求完美或沉迷于技术细节,无法在规定时间内交付有用的结果,可能会影响项目进度和团队合作。

  • 对电脑和技术无兴趣:程序员需要长时间与电脑打交道,对技术本身的兴趣是持续发展的动力。如果对电脑操作、技术细节等完全无感或厌烦,难以在这个行业长期坚持。


4.2、职业规划


如果你已经选择进入了这个行业,那我觉得必须要有一个清晰的职业规划,毕竟程序员的职业生涯是比较短暂的,黄金时期可能也就十年左右,我觉得程序员的职业规划主要分为三部分,前期工作三年内、中期工作四到七年,后期工作八年以上,这三个阶段的工作重点或者说目标是不一样的。



  • 前期(三年内)


这个阶段我觉得是:面向技术开发。因为是刚参加工作,技术能力比较差的,工资也是非常低的,所以我觉得这个时期的工作重点是快速提升自己的技术能力,你所做的一切必须要快速的提升你的技术能力,要快速的多做项目、多学习,如果公司升职加薪通道比较窄,我觉得要果断跳槽, 因为你的技术在快速的提升,如果你的工资和职位增速与你的技术增速不匹配,唯有跳槽。



  • 中期(四到七年)


这个阶段我觉得是:面向履历开发。拥有一个好的履历将会受益终生,比如你在BAT待过,比如你参加了某某公司的双十一架构设计,这些写在简历上都是浓墨重彩的一笔。这一时期你的技术基本稳定成长,如果有去大厂的机会,建议还是去大厂。如果没有,我觉得需要在当前公司找到属于自己的位置,要有自己的核心负责产品,能帮助自己稳步晋升,如果没有而且技术也增长不上去、自己学习也没什么动力,我觉得这个时期转型是比较明智的。因为在这时期你大概三十不到,可能没有结婚,没有房贷,不需要养娃,也不用养老人,自己应该也有点积蓄,是工作后最没有压力的时期,所以有大把的时间和精力来寻找机会。如果到了后期,可能有房贷、车贷、养娃、养老人,压力是非常大的,没有太多的空窗期让你转型,你很可能就只能向生活低头,在公司一直苟着,担心自己终于有一天被裁,也会越来越焦虑,这就是所谓的中年危机,这一时期也是避免后期中年危机的最好时间段。



  • 后期 (八年以上)


这个阶段如果还能做技术,我觉得是:面向管理开发。因为这个阶段你在技术方面,如果不是那种不断学习进步,你的技术可能慢慢不如新人,你的技术慢慢变的没有优势,你对公司的价值也在慢慢变小,但是能在公司项目组留下来的都是元老级人物,对公司的环境、 业务、领导、同事、甚至行业都非常的了解,公司是需要一个有经验和公司一起成长的人来管理、带团队的,所以这时期我觉得工作重点是要了解公司的整体业务、行业的发展,要提升自己管理能力,向管理岗位不断靠近。但是管理岗位毕竟是少数,如果自己没有管理能力该怎么办?破解之法 就是:副业。我有很多同事都是副业转正,现在赚的可不是打工人每月这点工资了。作为程序员具体的副业就太多了,常见的如:做外包、做开源、做自建站、写工具、做自媒体,还有一点要重点说的是:程序员一定要关注海外市场,还记录承德的程序员Github接单被没收百万收入并处以罚款的新闻吗?国内是个小市场,只有打开国际视野你才能看到一个更大的市场,会有更多的机会。


最后


以上仅仅是我个人的一些浅薄观点,不一定适合你,需要根据自己的实际情况多加思考,今年的整体行情非常的差,在可预见的几年内可能都不会有太大的转变,未来程序员这个行业可能会越来越卷。我也在一直思考自己在这个行业的定位,和未来的发展方向, 其实也没能找到自己的答案,也是走一步,看一步,再想一步。未来行情是卷的,但是中国在未来十年内随着人口的减少,必须要加大数字化和智能化建设,所以只要你不断的学习,哪怕学习一项新技术生命周期只有五年,未来十年内这个行业找口饭吃还是不难的, 如何互联网赛道太卷,也可以换个赛道,比如去传统行业做数字化,目前传统行业对程序员需求量非常大,互联网过去的都算是高级人才,而且很有可能比在互联拿的更多!!



作者:赵侠客
来源:juejin.cn/post/7403576996394385444
收起阅读 »

社会现实告诉我,00后整顿职场就是个笑话

00后整顿职场,也算是我之前的关键词吧。 我硬怼老板要加班费和提成,和他们辩论什么是我的财产,什么是公司的财产。 甚至还能在即将被开除的时候,反将一军把老板开除。 而正是因为这一次把老板开除,让我得到了机会。可以站在了相对于之前更高的位置,来俯瞰整个职场。 也...
继续阅读 »

00后整顿职场,也算是我之前的关键词吧。


我硬怼老板要加班费和提成,和他们辩论什么是我的财产,什么是公司的财产。


甚至还能在即将被开除的时候,反将一军把老板开除。


而正是因为这一次把老板开除,让我得到了机会。可以站在了相对于之前更高的位置,来俯瞰整个职场。


也真正意义上让我感受到了,00后整顿职场,就是一个互联网笑话罢了。


1、职场宫斗,成功上位


我之前在苏州工作,堪称工作中的宫斗,并且在这场宫斗大戏中胜出,将原有的项目负责人开除,成功上位。


而这个项目存在的问题非常多,我就在六月被派遣去项目的总部合肥进行学习,等到打通项目的全部链路后,再回到苏州。


届时我将以这个项目的负责人,重新搭建团队,开展这个项目。所以我在合肥那边,以员工的身份深入各个工作组进行学习。


在市场部,运营部的办公大厅工作过,也在各部门的独立办公室工作过。


我感觉自己像个间谍,一边在以平级的打工人身份和我的同事们相处,一边又以苏州负责人的身份,参与那些领导才能参与的内部会议。


2、内心变化的开端


我在合肥总部工作中,接触了很多躺平摆烂的同事,但这个“躺平摆烂“要加上双引号。


他们是00后,90后,甚至有85后。如果放在三个月前,我可以不假思索地说,他们全都是我最讨厌的人。他们如同牛羊一般任人宰割,上级让加班,他们就加班,有时候加班甚至超过四五个小时也没有怨言。


我甚至从来没听他们感慨过为什么没有加班费。亲眼看着他们被自己的上级用一些与工作无关的鸡毛蒜皮之事骂得狗血淋头,但他们也只会在被骂完之后,背地里吐槽那个领导估计是在家被老婆骂了,才来拿他们泄愤。


我打听了他们的工资,只能说中规中矩,起码不是能让人当牛做马的数字。偶尔我见到一两个有骨气的人,觉得拿这么点钱就应该干这么点事。干不爽就马上离职,但马上就会有下一个人替补他的位置,形成闭环。


我惊讶于怎么有人能惹到这个地步,但后来和他们日渐熟落,我们一起吃饭,一起打游戏,一起下班顺路回家,还参加了他们的生日聚会。我发现他们活得其实真的很洒脱。一切都是随遇而安,下班时间一到,他们就真的可以无忧无虑。


因为他们有一份工资还行的工作,养活自己。他们没有啃老,也没有用卑鄙的手段,去抢想要努力的人应该分到的蛋糕,也压根不去想要赚很多钱,因为没有什么需要太高消费的需求。


加上现在的环境,找到一份可观收入的工作确实很难。所以公司偶尔的加班,领导偶尔的泄愤,这些毕竟还是少数时候的偶尔,也都没有超过他们的心理承受阈值,那也就得过且过了。


所以我们其实都一样,只是个普通人罢了。而像我们这样的普通人,取之不尽,用之不竭。这到底是好事还是坏事呢?


3、复杂的职场生态环境


建立在这个基础上,视觉转换到高层领导们这里。他们当着我的面说,这样的人就是个底层打工仔,缺人就招,加班照旧,心情不好还要扣他们的全勤绩效。


压根就不怕这些底层打工仔闹事,纵使有一两个所谓的决心者辞职,也能在很快时间找到下一位。


两者形成互补,共同铸就了这样恶劣的职场生态环境。但我说职场无法改变,远不止这么一点原因。


在这个项目中,我说好听一些只能算是项目负责人,在此之上还有着项目股东,这还要细分成大股东和小股东。而我所在的项目属于互联网赛道,也就是说需要一些新鲜事物的眼光和思维来对待。


但这些股东们经常提出一些奇怪的意见,就如同用微商时代的卖货思维,来指点直播带货,并且他们是出钱的股东,他们提出的战略方针不容我驳回,因为在他们的光辉历史中,有大量的成功案例,来佐证他们的思路是对的。


我刚开始觉得也有道理。他们能有钱投资,肯定是有什么过人的本领能让他们赚到钱,但是随着相处下来,我发现不过是他们本身家里条件就优越,在九几年就能拿出一百万给他们创业。


他们把这一百万分散到二十个领域,每个投资五万总能撞上那么一两个风口,让他们实现钱生钱。


九几年的五万也算是一笔不少的投资。他们这样的发财经历,让我很难不产生质疑,这不是给我我也行吗?


毕竟他们如果真的有什么过人的本领和远见,也不至于在每次内部开会之前,都要组织喊这样的口号:“好,很好,非常好,越来越好“


甚至试图把这样的口号,带到每一次迎接客户的项目介绍会上。我以自曝式要挟制止他们这个行为,我说如果你们这么干,那我当天就辞职,内部都是自己人,我可以陪你们这样弄,但如果对外这么搞,被录下来说我们是传销,我都不知道怎么辩解。


4、职场中的背锅人


他们就是这样坚信着自己能成功,是因为自己有过人的才华。所以自我洗脑着自己提出的方向没有错。如果出错了,亏损了,那一定是负责人的问题。


但好巧不巧,我就是那个负责人。我已经无数次告诉他们,我们这个项目压根就不需要穿黑丝短裙跳舞的小姐姐。


我甚至写了一篇报告给他们,分析我们的项目为什么不能用擦边这种手段引流。但他们执意要,说这样来流量快,我都有点分不清到底是他们自己想看,还是深信这样做确实是可行。


但如果最后这样还是没成功,导致项目亏损,大概率还是在我身上找原因吧。


面对他们这样的大佬,我心里很清楚,这已经远远不是宫斗了,这也绝对不是靠几个心计,或者有实力撑腰就能取胜上位了。这场权力的游戏,不是我等草民玩得起的。


5、换个思路,创造属于自己的职场


一边是被提供资金,但是瞎指挥的股东们摧残,一边是在有限的预算下,我作为负责人,确实很难做到尊重打工人的内心挣扎,回到苏州我虽然能身居高位,但我终将成为我曾经最鄙视的人。


我不要当这个背锅侠,我也不想在这个环境中,去逐渐接受这样的价值观。


这样看来确实如此,00后整顿职场不过是一场互联网的狂欢罢了。


这个题材的故事,也永远只能发生在职场的最底层。由一群家境优越,体验生活的公子哥和我这种不知好歹的普通人共同出演。


大部分人只是在手机屏幕前把我们当个乐子,成了扣个666,然后一起吃胜利的果实。没成,那就确实是看了个乐子。


或许是因为他们心里也清楚,凭我们压根就做不到。


00后现在确实整顿不了职场,因为社会的资源和命脉还不掌握在00后手上。


但就止步于此了吗?我曾说过我想有一个自己的小工作室,遵守劳动法,双休,按时发工资,交纳五险一金。


是的,换个思路,也许00后不需要整顿职场,而是直接创造属于自己的职场,那么接下来我就要向着这个目标去努力了,毕竟二十年后我也还是00后,不如到时候再来说00后整顿职场吧。


作者:程序员Winn
来源:juejin.cn/post/7311603432929984552
收起阅读 »

HR的骚操作,真的是卧龙凤雏!

现在基本已经对通过面试找工作不抱啥希望了。 有时候面试官和我聊的,还没有前面hr小姐姐和我聊的多,我一听开场白就基本知道就是拿我走个过场,没戏! 现在的面试流程都是人事先和你聊半天,没什么硬伤大坑才会放你去见面试官。 二零一几年那会可不是这样,第一次的详聊都是...
继续阅读 »

现在基本已经对通过面试找工作不抱啥希望了。


有时候面试官和我聊的,还没有前面hr小姐姐和我聊的多,我一听开场白就基本知道就是拿我走个过场,没戏!


现在的面试流程都是人事先和你聊半天,没什么硬伤大坑才会放你去见面试官。


二零一几年那会可不是这样,第一次的详聊都是直接业务层,业务的人觉得你ok,你再和人事沟通,定个薪资就完了。


13年的时候我在一家外企,三千的月薪。当时我一个小目标就是月薪过五千。


可别笑,13年的月薪五千,那还是能勉强算上一个小白领的。


我就老琢磨着升职加薪。但眼下的公司规模小,人员基本不扩增,不流通,我就想跳槽了。


当时我同时面了AB两家外资游戏公司。都过了业务层的面试,只剩和人事定薪资。


我给A公司报价5500,给B公司报价6000,因为我知道B公司刚来国内开拓业务,属于扩张期。


这时候,A公司HR的骚操作就来了,她说:“嗯,5500嘛,有难度,但不是不可能,我可以帮你跟老板争取。”


然后又问我:“你已经从现在的公司里面离职了吗?”


我说:“还没呢,我想先把下家定了。”


她就说:“哎呀,那有点难办,你得先从现在这家公司离职,我得确保我帮你争取下来后,你不会鸽我,不然我没法和老板交代,要不你先把那边离职办了吧。”


我说:“那我再考虑考虑吧。”


然后没过两天,我收到了B公司的offer。人家都没还价,直接定了6000,我就开始走离职手续。


这时候A公司的HR又出来问我,你从现在的公司离职了吗?


我说离了,她说你给我看看离职证明,我就拍照给她看离职证明。


然后她连假装让我等一会儿,说自己去问一下老板的戏都不演了,直接秒回说:“我帮你问了老板了,老板说不行,5500给不了,最多给到4500,要不你先入职呢,后面有机会提加薪的。”


瞬间给我恶心的,怎么会有这么恶心的人事!先把你忽悠离职,然后翻脸不认人,可劲往下砍价,为了公司的KPI,自己做人的脸都不要了。


我当时就觉得这样的人真傻,就算我认了4500的杀价入了职,我把和她的对话记录公司群里一发,老板会怎么看她,同事会怎么看她。


咱做人得有底线呀,你用这种脏办法帮公司省那几百块钱,还把自己的名声信誉搭进去了,真的值得吗?


后来我在入职B公司差不多半年后,传来了A公司解散倒闭的消息,我心里还暗爽了一把,幸亏当年没进那个火坑。


但半年后,我所在的B公司也解散了。


2013年那是一个手游刚兴起的疯狂年代,数不清的大小公司起家,创业,失败,解散,换批核心班子,再起家,再失败,浮浮沉沉,我也成了疯狂年代下的沧海一粟。


作者:程序员Winn
来源:juejin.cn/post/7426685644230213643
收起阅读 »

初中都没念完的我,是怎么从IT这行坚持下去的...

大家好,我是一名二线(伪三线,毕竟连续两年二线城市了)的程序员。 现阶段状态在职,28岁,工作了10年左右,码农从事了5年左右,现薪资9k左右。如文章标题所说,初二辍学,第一学历中专,自己报的成人大专。 在掘金也看了不少经历性质的文章,大多都是很多大牛的文章,...
继续阅读 »

大家好,我是一名二线(伪三线,毕竟连续两年二线城市了)的程序员。


现阶段状态在职,28岁,工作了10年左右,码农从事了5年左右,现薪资9k左右。如文章标题所说,初二辍学,第一学历中专,自己报的成人大专。


在掘金也看了不少经历性质的文章,大多都是很多大牛的文章,在大城市的焦虑,在大厂的烦恼,所以今天换换口味,看一看我这个没有学历的二线的程序员的经历。


1.jpg


1.辍学


我是在初二的时候辍学不上的,原因很简单,太二笔了。


现在想来当时的我非常的der,刚从村里的小学出来上中学之后(我还是年级第7名进中学,殊不知这就是我这辈子最好的成绩了),认为别人欺负我我就一定要还回来,完全不知道那是别人的地盘,嚣张的一批,不出意外就被锤了,但是当时个人武力还是很充沛的,按着一个往地上锤,1V7的战绩也算可以了。自此之后,我就开始走上了不良的道路,抽烟喝酒打架,直到中专毕业那天。



我清楚的记得我推着电车望着天,心里只想着一个问题,我毕业了,要工作了,我除了打游戏还会什么呢,我要拿什么生存呢...



这是当时我心里真实的想法,我好像就在这一刻、这一瞬间长大了。


2.jpg


2.深圳之旅


因为我特别喜欢玩游戏,而且家里电脑总是出问题,所以我就来到了我们这当地的一个电脑城打工,打了半年工左右想学习一下真正的维修技术,也就是芯片级维修,毅然决然踏上了深圳的路。


在深圳有一家机构叫做迅维的机构,还算是在业内比较出名的这么一个机构,学习主板显卡的维修,学习电路知识,学习手机维修的技术。现在的我想想当时也不太明白我怎么敢自己一个人就往深圳冲,家里人怎么拦着我都没用,当时我就好像着了魔一样必须要去...


不过在深圳的生活真的很不错,那一年的时光仍旧是我现在非常怀念的,早晨有便宜好吃的肠粉、米粉、甜包,中午有猪脚饭、汤饭、叉烧饭,晚上偶尔还会吃一顿火锅,来自五湖四海的朋友也是非常的友好,教会了我很多东西,生活非常的不错。


3.jpg


3.回家开店


为什么说我工作了10年左右呢,因为我清楚记得我18岁那年在本地开了一个小店,一个电脑手机维修的小店。现在想想我当时也是非常的二笔,以下列举几个事件:



  1. 修了一个显示器因为没接地线烧了,还跟人家顾客吵了一架。

  2. 修苹果手机翘芯片主板线都翘出来了,赔了一块。

  3. 自己说过要给人家上门保修,也忘了,人家一打电话还怼了一顿。

  4. 因为打游戏不接活儿。


以上这几种情况比比皆是,哪怕我当时这么二笔也是赚了一些钱,还是可以维持的,唯一让我毅然决然转行的就是店被偷了,大概损失了顾客机器、我的机器、图纸、二手电脑等一系列的商品,共计7万元左右,至今仍没找回!


4.jpg


4.迷茫


接下来这三年就是迷茫的几年了,第一件事就是报成人大专,主要从事的行业就杂乱无章了,跟我爸跑过车,当过网吧网管,超市里的理货员,但是这些都不是很满意,也是从这时候开始接触了C和C++开始正式踏入自学编程的路,直到有一次在招聘信息里看到java,于是在b站开始自学java,当时学的时候jdk还是1.6,学习资料也比较古老,但是好歹是入了门了。


5.jpg


5.入职


在入门以后自我感觉非常良好,去应聘了一个外包公司,当时那个经理就问了我一句话,会SSM吗,我说会,于是我就这么入职了,现在想想还是非常幸运的。


当时的我连SSM都用不明白,就懂一些java基础,会一些线程知识,前端更是一窍不通,在外包公司这两年也是感谢前辈带我做一些项目,当时自己也是非常争气,不懂就学,回去百度、b站、csdn各种网站开始学习,前端学习了H5、JS、CSS还有一个经典前端框架,贤心的Layui。


干的这两年我除了学习态度非常认真,工作还是非常不在意,工作两年从来没有任何一个月满勤过,拖延症严重,出现问题从来就是逃避问题,职场的知识是一点也不懂,当时的领导也很包容我,老板都主持了我的婚礼哈哈哈。但是后来我也为我的嚣张买了单,怀着侥幸心理喝了酒开车,这一次事情真真正正的打醒了我,我以后不能这样了...


6.jpg


6.第二家公司


在第二家公司我的态度就变了很多很多 当时已经25岁了,开始真真正正是一个大人了,遵纪守法,为了父母和家人考虑,生活方面也慢慢的好了起来(在刚结婚两年和老婆经常吵架,从这时候开始到现在没有吵过任何架了就),生活非常和睦。工作方面也是从来不迟到早退,听领导的安排,认真工作,认真学习,认识了很多同行,也得到了一些人的认可,从那开始才开始学习springboot、mq、redis、ES一些中间件,学习了很多知识,线程知识、堆栈、微服务等一系列的知识,也算是能独当一面了。但好景不长,当时我的薪资已经到13K左右了,也是因为我们部门的薪资成本、服务器成本太大,入不敷出,公司决定代理大厂的产品而不是自研了,所以当时一个部门就这么毕业了...


7.png


7.现阶段公司


再一次找工作就希望去一些自研的大公司去做事情了,但是也是碍于学历,一直没有合适的,可以说是人厌狗嫌,好的公司看不上我,小公司我又不想去,直到在面试现在公司的时候聊得非常的好,也是给我个机会,说走个特批,让我降薪入职,算上年终奖每个月到手大概10k(构成:9k月薪,扣除五险一金到手7.5k,年终奖27k,仨月全薪,所以每个月到手10k),我也是本着这个公司非常的大、非常的稳定、制度非常健全、工作也不是很忙也就来了,工作至今。


8.jpg


总结



  1. 任何时候想改变都不晚,改变不了别人改变自己。

  2. 面对问题绝对不能逃避,逃避没有任何用,只有面对才能更好的继续下去。

  3. 不要忘了自己为什么踏入这行,因为我想做游戏。

  4. 解决问题不要为了解决而解决,一定要从头学到尾,要不然以后出现并发问题无从下手。

  5. 任何事情都要合规合法。

  6. 工作了不要脱产做任何事情,我是因为家里非常支持,我妈至今都难以相信我能走到今天(我认为我大部分是运气好,加上赶上互联网浪潮的尾巴)。

  7. 最重要的,任何事情都没有家人重要,想回家就回家吧,挣钱多少放一边,IT行业找个副业还是非常简单的,多陪陪他们!


作者:奇怪的程序员
来源:juejin.cn/post/7309645869644480522
收起阅读 »

架构师蔡超亲身经历的十年架构感悟分享

一、介绍 最近在学习的时候,看到了蔡超老师自己的十年架构感悟的分享,非常棒,感觉很多内容都是目前实际工作的问题,很不错,今天分享给大家。 蔡超老师已经工作 17 年了, 担任架构师的职位也超过了 10 年,担任过像 HP、Amazon 这样的世界级团队的架构师...
继续阅读 »

一、介绍


最近在学习的时候,看到了蔡超老师自己的十年架构感悟的分享,非常棒,感觉很多内容都是目前实际工作的问题,很不错,今天分享给大家。


蔡超老师已经工作 17 年了, 担任架构师的职位也超过了 10 年,担任过像 HP、Amazon 这样的世界级团队的架构师,也担任过像汇量科技这样快速成长的中小企业的技术领导。Mobvista 技术 VP 兼首席架构师。SpotMax 云服务创始人。
原文视频链接如下:
time.geekbang.org/opencourse/…


二、正文


以下是老师分享的内容:


“提出问题”难于“解决问题”


跟大家分享的第一个感悟是:“提出问题”难于“解决问题”。包括我在内,工程师们最大的一个特点就是善于解决问题,因为我们通常都是从问题解决者的角度来进行工作的。但是,我们很少会主动提出一些问题,主动从用户的场景出发去提出问题、提出需求。


很多时候,公司里的一些矛盾就来自于工程师和产品经理之间,比如我们常常会说产品经理不懂技术,需求提得不够专业。但我们作为工程师也可以想一下,我们是不是应该把自己的位置再往前挪一点,去看看用户到底有哪些困惑,然后提出一个合理的需求去解决它;或者我们自己去体验一下用户的场景,然后提出一个全新的问题并解决它。


简而言之,我们不要仅仅去做一个解决问题的人,也要做一个提出问题的人,主动去思考什么样的问题、需求,能让我们的业务更加先进。


很多时候,我们会觉得设计一个架构、写一个程序去解决问题是一件很难的事情,当然这也是一个很棒的工作。但如果你静下心来去尝试提出一些问题,改进一些用户的需求,你会发现,这是一件更难的事情,至少对我来讲是如此。


当然,这样的感觉不仅仅是我有,很多伟大的科学家也会有这样的困惑和感悟。



“The mere formulation of a problem is far more essential than its solution, which may be merely a matter of mathematical or experimental skills. To raise new questions, new possibilities, to regard old problems from a new angle requires creative imagination and marks real advances in science.”



这是爱因斯坦说过的一段话,大致意思是:我们解决一个问题的时候,常常只需要用到一些数学以及实验的能力就可以了,但提出一个新的问题,以一种新的角度去看待旧的问题,是需要用到我们的创造力才能够做到的,而这恰恰是真正推动科学进步的一部分。


不仅仅是爱因斯坦,软件大师 Frederick P. Brooks Jr.,《人月神话》的作者,在他最新一本讲设计原理的书《The Design of Design(设计原本)》里也谈到,“The hardest part of design is deciding what to design”,大概意思就是,设计最难的部分就是去决定我们要设计什么。


决定“不要什么”比“要做什么”更难


跟大家分享的第二个感悟是:决定“不要什么”比“要做什么”更难。也许因为人性的本质是贪婪的,所以我们在做项目或架构的时候,常常是什么都想要,什么需求都往里放,对于非功能性需求就更是这样了。


我们去看一个架构设计说明书,往往会看到它在开头提到高的可用性、高的性能、高的扩展性、高的可维护性……几乎所有的架构设计书都是这样,这些非功能性需求仿佛成了一个公共的列表,所有的架构都要满足这些需求。当然,功能性需求更是不用说,产品经理会一个不拉地往里面塞。


我们回过头来仔细想想什么是架构。其实在很多层面上,架构是一种 tradeoff,一种权衡和平衡。作为一个架构师,你才最应该是那个说不的人。


在现实中,有很多东西是不可兼得的。比如产品是尽早发布,还是把所有功能都加上,发布一个完美的产品;再比如一致性和性能之间的 balance,我们是选择强一致性,还是选择性能等等。所有架构师都非常熟悉的 CAP 原则,其实本质上就是一个关于 balance 的准则。


因此,作为架构师,我非常推荐大家在做架构设计的一开始,就去确立一些做事的原则。比如数据一致性优先级最高,再比如尽早发布基础功能版本的优先级大于延迟发布完善功能产品等。当出现矛盾的时候,我们就可以利用这些原则来进行取舍。


这些原则是非常重要的,它们能够指导我们在做架构的时候做出正确的取舍,而不会随着工作的推进而迷失。



“Deciding what not to do is as important as deciding what to do.”



这是引自乔布斯的一句话,意思是决定不做什么和决定做什么同样重要。他在取舍方面一直做得非常棒。


可能大家都知道,由于和董事会的关系,乔布斯在 Apple 2 发布一段时间后,就被逐出了苹果。之后他去创办了自己的事业,NeXT,也非常成功。1997 年的时候,苹果收购 NeXT,乔布斯以顾问的形式回到苹果,却发现苹果有很多问题。


当然,那个时候,苹果之所以请他回来做临时 CEO,也是因为意识到自身出现了很多问题。乔布斯意识到苹果最大的问题在于它的产品线非常多,非常的繁杂,他就在白板上画了一个象限图,四个维度分别是 Desktop、Portable、Pro 和 Consumer,并要求苹果在每个象限里面只做一个产品,然后把这个产品做到极致。



“People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully.I’m actually as proud of the things we haven’t done as the things I have done. Innovation is saying no to 1,000 things.



”这就是乔布斯非常著名的谈专注的那段话,大概意思是,人们认为专注意味着对你需要专注的事情说 Yes。但并非如此,专注意味着你要对其他 100 个好主意说 No,你必须谨慎选择。相比已经完成的工作,他对那些没有完成的工作一样感到自豪。创新就是对 1000 件事情说 No。


非功能性需求决定架构


跟大家分享的第三个感悟是:非功能性需求决定架构。在很多人心目中,做架构的第一步是收集需求,把各种需求都收集上,这个架构的目的就是要满足这些功能性需求的,毕竟最终产品是要为用户服务的。


事实并非如此,一个好的架构,其实是由非功能性需求决定的,而不是由功能性需求决定的。你会发现,一个功能可以有无数的架构方案来实现,但你为什么最终选择了某个方案,其实是由非功能性需求来进行筛选的。


大家非常清楚什么是非功能性需求,包括性能、伸缩性、可扩展性、可维护性等,甚至还包括了你的团队结构,你团队的技术水平,你对发布周期的要求等等,通过所有这些需求来筛选可使用的方案,最终找到一个合适的架构。


所以,非功能性需求是非常重要的,甚至可以说是在你的架构设计中起到决定性因素的。架构设计完之后,少一个功能性需求,我们很容易就能看出来,未来也可以加上去,它对你的架构不会有本质上的影响。但如果我们忽略的是某一种非功能性需求,那在未来这可以说是一种灾难性的麻烦,很有可能你就需要重写了。比如你架构中的数据一致性问题无法解决,或者在设计的时候没有充分考虑性能问题,这样,所有的功能性的实现其实都没有意义。基本就是 Refactor 了,甚至不应该叫 Refactor,要叫 Recreate 或者 Rewrite,等于你要完全重写整个架构。


实际上在架构领域,大家对这点也是有共识的。比如下图中这个 Micro-Kernel 的架构模式来自《面向模式的软件架构》的第一卷,它一大特点就是有比较好的可扩展性,同时通过 Plugin 之间的隔离,能够提高系统的可用性。


s1.png


《面向模式的软件架构》这套书多年来一直是架构师的必读经典,书中很多架构都是从非功能性需求的角度展开去讲的,如果你想成为架构师,那就非常推荐给你去看。


“简单”并不容易


跟大家分享的第四个感悟是:“简单”并不容易。很多架构师都会提到保持简单,keep the simple,但很多时候我们会混淆简单和容易,简单是 simple,容易是 easy,我们是 keep it easy,而不是 keep it simple。


正如乔布斯所说,简单有时候要比复杂更难,需要你对问题、事物的研究非常地深入,你才能找到真正简单的方法。简单其实是蕴含着一种巧妙在其中的。例如我们熟知的布隆过滤器,是一个十分简单的高效重复数据过滤算法,它就非常巧妙地解决了一个问题。如果你想把一个事情做简单,你需要做很多深入的工作,比如对于架构的简化,很大程度上来自于我们对于技术、开发过程,以及不同业务场景的深入理解,而不仅仅是这个架构写起来好不好写。


举个例子,我们来回顾一下软件生命周期中各个阶段的成本消耗占比。


s2.png


可以看到,在整个软件生命周期中,成本消耗最高的并不是设计、编码这些阶段,而是维护阶段。也就是说,如果你让维护变得简单,这会是最有性价比的。


我之前在一家国际公司工作过,主要是为移动运营商设计一个移动设备管理系统,运营商可以通过这个系统实现移动设备的自动注册,固件和软件的同步更新等。当时的移动设备还是摩托罗拉、爱立信之类早期智能手机的时代,打开手机会看到移动菜单或联通菜单,移动运营商就通过这些菜单跟你同步更新,也会对你的系统固件进行升级。这些工作是根据一些管理系统与移动设备之间预定义的协议来完成的,比如 SyncML。而电信专家们会根据业务场景及需求不断调整和新增这些交互协议。


刚开始设计系统的时候,我们也想着 keep it simple,就采用了一种看似简单的实现方式,团队里的软件工程师拿到电信专家设计好的协议后,把协议翻译成对应的程序语言,每一种协议对应一个程序语言。这时候每个程序语言都是一个插件,扩展也很容易,把这个语言实现的 Plugin 插到系统中,或者 Update 一个 Plugin,就可以支持一种新功能了。


这么看你可能觉得还行,反正也是插件结构,看起来也相当简单、直接,于是照着这个设计我们实现了一个系统:任何一个新业务过来,先由电信专家设计协议,再由工程师把协议转换为代码,然后将这个代码写成一个 Server 插件部署到 Server 端,这个协议就被支持了。


但很快,我们就发现事情没那么简单,这套系统的维护成本高到令人发指。为什么?原因其实可以用 Martin Fowler 的一句话来解释:



“I believe that the hardest part of software projects, the most common source of project failure, is communication with the customers and users of that software.



沟通往往是导致软件项目失败的主要问题,的确是这样。


这个系统最大的问题是在上线后的运行维护阶段,电信专家和工程师之间会不断地就新的协议修改和增加进行持续的沟通,但是他们之间的领域知识和词汇都有很大的差别,对彼此专业领域的理解有限,结果就大大影响沟通的效率。这期间系统修改每次都十分艰难,不仅协议更新上线时间慢,而且很多问题由于工程师对于电信协议理解程度有限,都要在开发完成,实际使用后才能被电信专家发现。导致了很多的交换和反复,也造成了很多客户的抱怨。


所以,这个系统只是表面上看起来简单,最终整个过程演变得没那么简单。那什么才是真正的简单?发现上面提到的这些问题,以及背后的原因是沟通后,我们开始重新思考解决的方法。后来我们和电信专家一起设计了一种协议设计语言 DSL,Domain Specific Language。DSL 是用电信专家熟悉的词汇来进行描述的,我们还提供了可视化工具,让电信专家能非常轻松容易地使用。然后这个协议会通过一个类似于编辑器的工具,将电信专家定义好的协议模型转换为内存中的 Java 结构,在线上进行运行。这样整个项目的运行和维护就变得更加简单高效了,省去了低效的交流和不准确人工转换。


这其实并不是一件简单的事情,不论是设计 DSL 语言、做类似编译器的工具,还是构建内存模型,都不简单,但一旦上线,一切就变得简单了。而一开始按电信专家的需求直接实现协议的方法是更为容易的,但是就整个软件生命周期来看,它却不是一个简单高效的方法。


通过这个例子,你应该能体会到什么是简单、什么是容易,两者之间的差别。真正的简单是来自于不容易的,就像那句话说的,It's hard to simple,It's easy to complex,简单是很难的,复杂反而是很容易的


永远不要停止编码


跟大家分享的第五个感悟是:永远不要停止编码。
这一点非常重要,对一个架构师来说,要永远记住自己是一个程序员。作为架构师,我们可能设计了一个非常 high-level 的架构,但代码是软件的最终实现形态,每一个程序员在架构落地过程中的实现,都可能会影响架构的最终呈现。


另外,如果你放弃编码,最大的影响不是说你代码的技术落后了,或者是敲代码变慢了,最大的影响是你会逐渐丧失对编程的敬畏,忘记作为程序员的感受,特别是编码过程中的那些痛苦所在。你会有一些不切实际的幻想,做出一些不切实际的设计,这才是最大的问题。


大家都知道的 Java 之父 James Gosling,他在 Amazon 的职位是 Distinguished Engineer,level 相当于 SVP,而他依旧在坚持编码,每年的代码量是非常惊人的,常常会超过 10 万行。总而言之,作为一个架构师,一旦你开始放弃编码,那你一定要非常小心,因为你可能正在走向一条不归路,一条为大家设计一些充满幻想但又较为虚无的设计的不归路。


风险优先


跟大家分享的第六个感悟是:风险优先。


可以先思考一个问题,我们为什么要做架构设计?


在我看来,架构设计最主要的功能就是转化、降低、避免整个开发过程中的风险。而架构师很大的一个职责就是在早期识别出系统可能存在的风险,并通过你的设计来转换它、去除它。


我们常说的原型方式,或者架构切片的快速迭代方式,其实也是从另一个角度在早期尽量去测试风险,去测试我们的架构能不能解决相关问题,尤其是那些非功能性需求实现的风险,这些风险往往没有功能性需求这么容易在初期被发现,但修正的代价通常要比修正功能性需求大非常多,甚至可能导致项目的失败。


比如敏捷开发,很多人认为敏捷开发就是更快地开发出一个产品,然后快速地 deliver 到市场上,其实这只是敏捷的一部分。另一部分很重要的是,如果一个项目要失败,也要快速地失败,绝对不要把风险放到最后,这也是一种敏捷。这里再给大家推荐一本书《Just Enough Software Architecture(恰如其分的软件架构)》,这是最近非常流行的一本架构书籍,书中强调,架构设计的目的就是为了化解软件实现中的风险。如果你项目中所有的风险都可以通过未来重构来解决的话,那你根本就不需要进行架构设计,直接等着重构就可以了。这也是我非常赞同的观点,风险优先。


从“问题”开始,而不是“技术”


跟大家分享的第七个感悟是:从“问题”开始,而不是“技术”。


作为技术人员,我们非常乐意学习一些新技术,并且学了之后,我们还会非常有热情去应用这个技术。我经常会有这样的感觉,感觉在某一时刻被某个技术上身,特别想去实践它,以至于忽略当前手上的问题用这个技术来解决是不是最合适的,不知道你有没有相同的感觉。


冷静的时候,其实我们每个人都知道,要从实际出发,从需求出发,从用户的问题出发,而不要从技术出发,但在实际工作中,我们却常常不自觉地忽略这一点。就像手里有了一把锤子,看到什么都是钉子。


但其实这样做有很大的害处,这里想给你分享一个故事,来自我之前工作过的一个团队。当时团队里有一个工程师,他维护的是一个非常简单的服务,就是一个利用 MySQL 作为数据存储的简单服务。后来一个他对当时新出的 DynamoDB 产生了兴趣,并学习了相关知识。然后就发生下面的事:使用 DynamoDB 替换了 MySQL,这是一个噩梦的开始。很快发现 DynamoDB 并不能很好的支持事务特性,在当时只有一个性能极差的客户端类库来支持事务,而由于采用客户端方式,引入了大量的额外交互,导致性能差别达 7 倍之多,效率非常之低。


这时候,这个同学就改用了当时在 NoSQL 领域广泛流行的最终一致技术,采用了一个消息队列来实现,这样每一个数据存储对象的改变都会发布一个消息,如果关心这个改变的业务逻辑,就会订阅这个消息,然后改变其他相关的对象,从而实现最终一致。如果过程中出现错误,就会利用消息队列的重试机制。接着发现 DynamoDB 无法提供 SQL 那样方便的查询机制,为了进行数据分析就采用 EMR/MapReduce Job 来完成。大家可以看到实现一样的功能,但是复杂性大大增加,维护工作也由一个人变成了一个团队。


如果让我总结一下这个故事的话,可以说是我们对技术的热情让事情变得复杂,是我们对技术的热情把生活搞得没有那么美好,也让自己的工作更加烦恼。


过度繁忙使你落后


跟大家分享的第八个感悟是:过度繁忙使你落后。


对于 IT 人而言,忙碌成了习惯,加班常挂在嘴边,“996”似乎也变成了公司高效的标志。但有时候我们需要反思一下,有多久没有在业余时间看和技术相关的书了。我之前在公司也问过这个问题,百分之百的人回答我,下班后已经很晚了,回到家基本上没有时间再看书,刷一下手机,就可以直接睡觉了。这是一个非常值得我们去思考的问题。


作为一个技术人,如果你不更新你的知识,或者繁忙让你没有时间更新知识,那会有什么样的结果呢?


给大家分享一个有意思的现象,我遇到过不少程序员,有之前的同事,也有自己的朋友,他们换了一份工作,一开始进入那家公司的时候跟我说,“这个公司我不是特别看好它,我了解一下它的技术,就准备换家公司。”过了两三年我再问他,“你怎么还在这,还没跳走。”结果他回答我,“我看现在的招聘形势不大好,不太好动。”干了几年倒对公司越来越“忠诚”了。


实际情况是,在一个公司没日没夜地干了几年,没有留一点学习时间给自己,忙碌的工作导致他没有时间更新知识,再想回到市场上的时候,却发现自己已经落伍了,连跳槽的能力和勇气都失去了。在这个高速发展的时代,如果因为过度忙碌,导致你没有时间学习和更新自己的知识,那必然会让你落后。即使你不跳槽,呆在同一家公司里,公司的业务不断发展,数据量会越来越大,用户需求会越来越刁钻,你要面对的问题和场景也会越来越复杂,如果你长期不更新知识,掌握的技能没有发生变化,你会觉得越来越难以应付,最终只能通过不断地加班来应对。


另外还有一种可能是,你不更新知识,不深入思考,那么很大概率,你所创造的技术和业务丧失了领先性,没有领先优势,只能被动紧紧跟随竞争对手,而紧紧跟随就意味着你只能加班。试想一下,你要是都领先同行业五年了,还会在乎通过加班来早一个月发布吗?


这其实是一个恶性循环,你花越多的时间去忙碌,就越没有时间去学习,去提高自己的工作技能,就只能靠加班来追赶,结果就更忙碌,更没有时间学习,最终成为一个井底之蛙,陷在恶性循环里无法挣脱。我是一个健身爱好者,练过健身的朋友都知道,光靠锻炼是不行的,营养的补充和锻炼同样重要,你得专门吃一些蛋白粉、补剂之类的。而且越到后面,营养的重要性就越高,至少能跟锻炼达到 50:50 的比重。个人技术成长其实也是一样的,锻炼就好像实践,营养就好像学习。


人们常说 practice makes you perfect,但光 practice 是不行的,还需要坚持学习。


我们在一个领域工作了一段时间,比方说三五年之后,会对这个领域的业务越来越熟悉,解决问题越来越顺手,但相应的,能学到的知识和技能也就会越来越少。有些人会说这是进入了舒适区,要逃离舒适区,换一个领域,我倒觉得不必如此。


本质上来说,换一个领域其实是促进你进一步学习一些新的知识,你在原来的领域也可以这么做。你可以有意识地摆脱那种麻木,挤出时间来重新学习,然后即使做的是相同的事情,也可以用不同的方式更好更高效地完成它。你会发现,即使在同一个领域,你也完全可以做和别人不一样的事情。


所以,每个技术人员都要保证充足的学习时间,否则很容易成为井底之蛙,从而陷入前面提到的低效循环。最后用一句话来跟大家共勉,不忘初心,坚持匠心,谢谢大家。


三、总结



  1. “提出问题”难于“解决问题”。程序员要学会如何从用户的角度发现困难,提出需求问题,适配用户场景。不仅仅是一个解决问题的人,而是提出问题的人,不断地思考什么样的需求问题能让我们的产品更先进。

  2. “设计最难的部分就是去设计我们要设计什么样的问题” - 《设计原本》Brooks

  3. 什么是架构? 从很多层面上说,架构是一种tradeoff,是一种权衡、平衡。作为一个架构师,你应该是那个说“不”的人。决定不要什么比要什么更难。先确定一个大原则,之后在做选择的时候根据这个原则来取舍,这样就不会随着工作的推进而迷失了。

  4. “决定不做什么和决定做什么是一样重要的” - 史蒂夫·乔布斯

  5. “人们认为专注是对你要关注的事情说yes。但是这完全不是专注的本意。专注是对其他一千个好的想法说no。你必须非常谨慎地挑选。实际上我对我拒绝做的事和我做过的事一样感到骄傲。创造力就是对一千件事说NO的能力。” - 史蒂夫·乔布斯

  6. 非功能需求决定架构。所谓的非功能需求,包括性能,伸缩性,可扩展性,可维护性,甚至还包括了你的团队结构、团队技术水平和发布周期的要求。这些因素来筛选可以使用的方案,最终找到一个合适的架构。

  7. 非功能性需求在架构中起决定性作用,因为功能性需求在设计完后,即便未来需要添加新功能,对架构的本质影响不大。但忽略非功能性需求可能会导致灾难性后果,可能需要重写整个系统,比如由于架构问题导致的数据一致性问题或性能问题。建议了解一下Micro-Kernel模式架构。

  8. “简单可以比复杂更难。你必须非常努力地把你的想法想清楚之后,才有可能把事情做得很简单。但这个努力是值得的,因为一旦你达到了这个目的,它会给你带来排山倒海的能量。为了达到真正的简单,你必须思考得足够深入。” -- 史蒂夫·乔布斯

  9. 简单不同于容易。真正的简单恰恰是来自于不容易,复杂才是容易的,简单蕴含了巧妙。

  10. 在软件开发生命周期中,软件发布后的维护占据整个成本的一半以上。如果让一件事情变得简单,后期维护也会变得简单,这是性价比最高的选择。

  11. “我相信软件开发中最难的部分,也是最经常导致失败的部分,是与软件用户的沟通交流。” -- Martin Fowler

  12. 作为一个架构师,你永远都不要停止编码。如果你停止编码,你就会丧失对编写代码的痛苦感知,容易产生不切实际的幻想,进而做出不切实际的设计。(罗胖也坚持自己做启发俱乐部磨练自己的手艺)

  13. 风险优先。架构设计中,你要在早期识别系统可能的风险,通过设计消除或转换这些风险,比如通过原型或架构切片的早期迭代,测试架构是否还存在风险。

  14. 敏捷开发的精髓是,如果项目会失败,那就让它快速失败。

  15. “如果项目中能预见的风险都可以通过重构解决,那么就没必要设计软件架构,你重写就好了。” -- 《恰如其分的软件架构》

  16. 从“问题”开始,而不是“技术”

  17. 过度繁忙使你落后。如果你没有时间更新知识,几年后你容易“被忠诚”,因为失去了跳槽的能力和勇气。随着工作中的问题变复杂,你会发现越来越难应对,只能通过不断加班解决。如果不能紧跟行业发展,就会陷入恶性循环。试想一下,如果你已经领先业界五年了,还在乎休息一个礼拜吗?

  18. 做更好的自己。锻炼配合营养,实践结合学习,才能变得更好。

  19. 要不断学习。你不一定要换领域,但可以用不同的方式做同样的事,并做得更好。

  20. 不忘初心,坚持匠心


作者:爱海贼的无处不在
来源:juejin.cn/post/7426916970662215690
收起阅读 »

虽然炒股赚了十多万,但差点倾家荡产!劝你别入坑

今天,五阳哥不打算聊技术,而是聊一下炒股的话题。我自认为在这方面有发言权,自述一个程序员的炒股经历。 2019年,我开始涉足股市,在2021年中旬为了购房,将持有的股票全部卖出,赚了十多万元。在最高峰时期,我获利超过了二十多万元,但后来又回吐了一部分利润。虽然...
继续阅读 »

今天,五阳哥不打算聊技术,而是聊一下炒股的话题。我自认为在这方面有发言权,自述一个程序员的炒股经历。


2019年,我开始涉足股市,在2021年中旬为了购房,将持有的股票全部卖出,赚了十多万元。在最高峰时期,我获利超过了二十多万元,但后来又回吐了一部分利润。虽然我的炒股成绩不是最出色的,但也超过了很多人。因为大多数股民都是亏损的,能够在股市长期盈利的人真的是凤毛麟角。


股市中普遍流传的七亏二平一赚的说法并不只是传闻,事实上,现实中的比例更加残酷,能够长期赚钱的人可能连10%都达不到。


接下来,我想谈谈我的炒股经历和心路历程,与大家分享一下我的内心体验,为那些有意向或正在炒股的朋友提供一些参考。希望劝退大家,能救一个是一个!


本文倒叙描述,先聊聊最后的疯狂和偏执!


不甘失败,疯狂上杠杆


股市有上涨就有下跌,在我卖出以后,股市继续疯涨了很多。当时长春高新,我是四百一股买入,六百一股就卖出了,只赚了2万。可是在我卖出去的两个月以后,它最高涨到了一千。相当于我本可以赚六万,结果赚了两万就跑了。


我简直想把大腿拍烂了,这严重的影响了我的认知。我开始坚信,这只股票和公司就是好的,非常牛,是我始乱终弃,我不应该早早抛弃人家。 除了悔恨,我还在期盼它下跌,好让我再次抄底,重新买入,让我有重新上车的机会!


终于这只股票后来跌了10%,我觉得跌的差不多了,于是我开始抄底买入!抄底买入的价格在900一股(复权前)。


没想到,这次抄底是我噩梦的开始。我想抄他的底,他想抄我的家!


image.png


这张图,完美的诠释了我的抄底过程。地板底下还有底,深不见底,一直到我不再敢抄底为止。一直抄到,我天天睡不着觉!


当时我九百多一股开始抄底买入,在此之前我都是100股,后来我开始投入更多的资金在这只股票上。当时的我 定下了规矩,鸡蛋不能放在一个篮子里;不能重仓一只股票,要分散投资;这些道理我都明白,但是真到了节骨眼上,我不想输,我想一把赢回来,我要抄底,摊平我的成本。


正所谓:高位加仓,一把亏光。之前我赚的两万块钱,早就因为高位加仓,亏回去了。可是我不甘心输,我想赢回来。当时意识不到也不愿意承认:这就是赌徒心理。


后来这只股票,从1000,跌倒了600,回调了40%。而我已经被深深的套牢。当时我盈利时,只买了1股。等我被套牢时,持有了9股。 按照1000一股,就是九十万。按照600一股,就是54万。


我刚毕业,哪来的那么多钱!


我的钱,早就在800一股的时候,我就全投进去了,我认为800已经算是底了吧,没想到股价很快就击穿了800。


于是我开始跟好朋友借钱。一共借了10万,商量好借一年,还他利息。后来这10万块钱,也禁不住抄底,很快手里没钱了,股价还在暴跌。我已经忘记当时亏多少钱了,我当时已经不敢看账户了,也不敢细算亏了多少钱!


于是,我又开始从支付宝和招商银行借贷,借钱的利率是相当高的,年利息在6%以上。当时一共借了30万。但是股价还不见底,我开始焦虑的睡不着觉。


不光不见底,还在一直跌,我记得当时有一天,在跌了很多以后,股价跌停 -10%。当时的我已经全部资金都投进去了,一天亏了5万,我的小心脏真的要受不了了。跌的我要吐血! 同事说,那天看见我的脸色很差,握着鼠标手还在发抖!


跌成这样,我没有勇气打开账户…… 我不知道什么时候是个头,除了恐惧只有恐惧,每天活在恐惧之中。


我盘算了一下,当时最低点的我,亏了得有二十多万。从盈利六万,一下子到亏二十多万。只需要一个多月的时间。


我哪里经历过这些,投资以来,我都是顺风顺水的,基本没有亏过钱,从来都是挣钱,怎么会成这个样子。


当时的我,没空反思,我只希望,我要赚回来!我一定会赚回来,当时能借的支付宝和招行都已经借到最大额度了…… 我也没有什么办法了,只能躺平。


所以股价最低点的时候,基本都没有钱加仓。


侥幸反弹,但不忍心止盈


股价跌了四个月,这是我人生极其灰暗的四个月。后来因为种种原因,股价涨回来了,当时被传闻的事情不攻自破,公司用实际的业绩证明了自己。


股价开始慢慢回暖,后来开始凶猛的反弹,当时的我一直认为:股价暴跌时我吃的所有苦,所有委屈,我都要股市给我补回来!


后来这段时间,股价最高又回到了1000元一股(复权前)。最高点,我赚了二十多万,但是我不忍心止盈卖出。


我觉得还会继续涨,我还在畅想:公司达到,万亿市值。


我觉得自己当时真的 失了智了。


结婚买房,卖在最高点


这段时间,不光股市顺丰顺水,感情上也比较顺利,有了女朋友,现在是老婆了。从那时起,我开始反思自己的行为,我开始意识到,自己彻彻底底是一个赌徒。


因为已经回本了,也赚了一点钱,我开始不断的纠结要不要卖出,不再炒股了。


后来因为两件事,第一件是我姐姐因为家里要做小买卖,向我借钱。 当时的我,很纠结,我的钱都在股市里啊,借她钱就得卖股票啊,我有点心疼。奈何是亲姐,就借了。


后来我盘算着,不对劲。我还有带款没还呢,一共三十万。我寻思,我从银行借钱收6%的利息,我借给别人钱,我一分利息收不到。 我TM 妥妥的冤大头啊。


不行,我要把带款全部还上,我Tm亏大了,于是我逐渐卖股票。一卖出便不可收拾。


我开始担心,万一股价再跌回去,怎么办啊。我和女朋友结婚时,还要买房,到时候需要一大笔钱,万一要是被套住了,可怎么办啊!


在这这样的焦虑之下,我把股票全部都卖光了!


冥冥之中,自有天意。等我卖出之后的第二周,长春高新开启了下一轮暴跌,而这一轮暴跌之后,直至今日,再也没有翻身的机会。从股价1000元一股,直至今天 300元一股(复权前是300,当前是150元)。暴跌程度大达 75%以上!


image.png


全是侥幸


我觉得我是幸运的,如果我迟了那么一步!假如反应迟一周,我觉得就万劫不复。因为再次开启暴跌后,我又会开始赌徒心理。


我会想,我要把失去的,重新赢回来!我不能现在卖,我要赢回来。再加上之前抄底成功一次,我更加深信不疑!


于是我可能会从1000元,一路抄底到300元。如果真会如此,我只能倾家荡产!


不是每个人都有我这么幸运,在最高点,跑了出去。 雪球上之前有一个非常活泼的用户, 寒月霖枫,就是因为投资长春高新,从盈利150万,到亏光100万本金,还倒欠银行!


然而这一切,他的家人完全不知道,他又该如何面对家人,如何面对未来的人生。他想自杀,想过很多方式了结。感兴趣的朋友可以去 雪球搜搜这个 用户,寒月霖枫。


我觉得 他就是世界上 另一个自己。我和他完全类似的经历,除了我比他幸运一点。我因为结婚买房和被借钱,及时逃顶成功,否则我和他一样,一定会输得倾家荡产!


我觉得,自己就是一个赌狗!


image.png


image.png


然而,在成为赌狗之前,我是非常认真谨慎对待投资理财的!


极其谨慎的理财开局


一开始,我从微信理财通了解到基金,当时2019年,我刚毕业两年,手里有几万块钱,一直存在活期账户里。其中一个周末,我花时间研究了一下理财通,发现有一些债券基金非常不错。于是分几批买了几个债券基金,当时的我对于理财既谨慎又盲目。


谨慎的一面是:我只敢买债券基金,就是年利息在 5%上下的。像股票基金这种我是不敢买的。


盲目的一面是:我不知道债券基金也是风险很大的,一味的找利息最多的债券基金。


后来的我好像魔怔了,知道了理财这件事,隔三差五就看看收益,找找有没有利息更高的债券基金。直到有一天,我发现了一个指数基金,收益非常稳定。


是美股的指数基金,于是我买了1万块钱,庆幸的是,这只指数基金,三个月就赚了八百多,当时的我很高兴。那一刻,我第一次体会到:不劳而获真的让人非常快乐!


如饥似渴的学习投资技巧


经过一段时间的理财,我对于理财越来越熟悉。


胆子也越来越大,美股的指数基金赚了一点钱,我害怕亏回去,就立即卖了。卖了以后就一直在找其他指数基金,这时候我也在看国内 A股的指数基金,甚至行业主题的基金。


尝到了投资的甜头以后,我开始花更多的时间用来 找基。我开始从方方面面评估一只基金。


有一段时间,我特别自豪,我在一个周末,通过 天天基金网,找到了一个基金,这只基金和社保投资基金的持仓 吻合度非常高。当时的我思想非常朴素, 社保基金可是国家队,国家管理的基金一定非常强,非常专业,眼光自然差不了。这只基金和国家队吻合度如此高,自然也差不了。


于是和朋友们,推荐了这只基金。我们都买了这只基金,而后的一个月,这只基金涨势非常喜人,赚了很多钱,朋友们在群里也都感谢我,说我很厉害,投资眼光真高!


那一刻,我飘飘然……


我开始投入更多的时间用来理财。下班后,用来学习的时间也不学习了,开始慢慢的过度到学习投资理财。我开始不停地 找基。当时研究非常深入,我会把这只基金过往的持仓记录,包括公司都研究到。花费的时间也很多。


我也开始看各种财经分析师对于股市的分析,他们会分析大盘何时突破三千点,什么时候股市情绪会高昂起来,什么行业主题会热门,什么时候该卖出跑路了。


总之,投资理财,可以学习的东西多种多样!似乎比编程有趣多了。


换句话说:我上头了


非常荒谬的炒股开局


当时我还是非常谨慎地,一直在投资基金,包括 比较火爆的 中欧医疗创新C 基金,我当时也买了。当时葛兰的名气还很响亮呢。后来股市下行,医疗股票都在暴跌,葛兰的基金 就不行了,有句话调侃:家里有钱用不完,中欧医疗找葛兰。腰缠万贯没人分,易方达那有张坤。


由此可见,股市里难有常胜将军!


当时的我,进入股市,非常荒谬。有一天,前同事偷偷告诉我,他知道用友的内幕,让我下午开盘赶紧买,我忙追问,什么内幕,他说利润得翻五倍。 我寻思一下,看了一眼用友股票还在低位趴着,心动了。于是我中午就忙不迭的线上开户,然后下午急匆匆的买了 用友。 事后证明,利润不光没有翻五倍,还下降了。当然在这之前,我早就跑了,没赚着钱,也没咋亏钱。


当时的我,深信不疑这个假的小道消息,恨不得立即买上很多股票。害怕来不及上车……


自从开了户,便一发不可收拾,此时差2个月,快到2019年底!席卷全世界的病毒即将来袭


这段时间,股市涨势非常好,半导体基金涨得非常凶猛! 我因为初次进入股市,没有历史包袱,哪个股票是热点,我追哪个,胆子非常大。而且股市行情非常好,我更加相信,自己的炒股实力不凡!


换句话说:越来越上头,胆子越来越大。 学习编程,学个屁啊,炒股能赚钱,还编个屁程序。


image.png


刚入股市,就赶上牛市,顺风顺水


2019年底到2020年上半年,A股有几年不遇的大牛市,尤其是半导体、白酒、医疗行业行情非常火爆。我因为初入股市,没有历史包袱,没有锚点。当前哪个行业火爆,我就买那个,没事就跑 雪球 刷股票论坛的时间,比上班的时间还要长。


上班摸鱼和炒股 是家常便饭。工作上虽然不算心不在焉,但是漫不经心!


image.png


在这之前,我投入的金额不多。最多时候,也就投入了10万块钱。当时基金收益达到了三万块。我开始飘飘然。


开始炒股,也尝到了甜头,一开始,我把基金里的钱,逐渐的转移到股市里。当时的我给自己定纪律。七成资金投在基金里,三成资金投在股市里。做风险平衡,不能完全投入到风险高的股市里。


我自认为,我能禁得住 炒股这个毒品。


但是逐渐的,股票的收益越来越高,这个比例很快就倒转过来,我开始把更多资金投在股市中,其中有一只股票,我非常喜欢。这只股票后来成为了很多人的噩梦,成为很多股民 人生毁灭的导火索!


长春高新 股票代码:000661。我在这只股票上赚的很多,后来我觉得股市涨了那么多,该跌了吧,于是我就全部卖出,清仓止盈。 当时的我利润有六万,我觉得非常多了,我非常高兴。


其中 长春高新 一只股票的利润在 两万多元。当时这是我最喜欢的一只股票。我做梦也想不到,后来这只股票差点让我倾家荡产……


当时每天最开心的事情就是,打开基金和证券App,查看每天的收益。有的时候一天能赚 两千多,比工资还要高。群里也非常热闹,每个人都非常兴奋,热烈的讨论哪个股票涨得好。商业互吹成风……


换句话说:岂止是炒股上头,我已经中毒了!


image.png


之后就发生了,上文说的一切,我在抄底的过程中,越套越牢……


总结


以上都是我的个人真实经历。 我没有谈 A 股是否值得投资,也不评论当前的股市行情。我只是想分享自己的个人炒股经历。


炒股就是赌博


我想告诉大家,无论你在股市赚了多少钱,迟早都会还回去,越炒股越上头,赚的越多越上头。


赌徒不是一天造成的,谁都有赢的时候,无论赚多少,最终都会因为人性的贪婪 走上赌徒的道路。迟早倾家荡产。即使你没有遇到长春高新,也会有其他暴跌的股票等着你!


什么🐶皮的价值投资! 谈价值投资,撒泡尿照照自己,你一个散户,你配吗?


漫漫人生路,总会错几步。股市里错几步,就会让你万劫不复!



”把钱还我,我不玩了“




”我只要把钱赢回来,我就不玩了“



这都是常见的赌徒心理,奉劝看到此文的 程序员朋友,千万不要炒股和买基金。


尤其是喜欢打牌、打德州扑克,喜欢买彩-票的 赌性很强的朋友,一定要远离炒股,远离投资!


能救一个是一个!


作者:五阳
来源:juejin.cn/post/7303348013934034983
收起阅读 »

离职后的这半年,我前所未有的觉得这世界是值得的

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界。 为什么要辞职,一是因为各种社会、家庭层面...
继续阅读 »

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界


为什么要辞职,一是因为各种社会、家庭层面的处境对个人身心的伤害已经达到了不可逆转的程度,传播互联网负面情绪的话我也不想多说了,经历过的朋友懂得都懂,总结来说就是,在当前处境和环境下,已经没有办法感受到任何的快乐了,只剩焦虑、压抑,只能自救;二是我觉得人这一辈子,怎么也得来一次难以忘怀、回忆起来能回甘的经历吧!然而在我的计划中,不辞职的话,做不到。


3 月


在 3 月份,我去考了个摩托车驾-照,考完后购买了一辆摩托车 DL250,便宜质量也好,开始着手准备摩旅。


webwxgetmsgimg.jpg


4 月份正式离职后,我的初步计划是先在杭州的周边上路骑骑练下车技,直接跑长途还是很危险的,这在我后面真的去摩旅时候感受颇深,差点交代了。


4 月


4.19 号我正式离职,在杭州的出租屋里狠狠地休息了一个星期,每天睡到自然醒,无聊了就打打游戏,或者骑着摩托车去周边玩,真的非常非常舒服。


不过在五一之前,我家里人打电话跟我说我母亲生病了,糖尿病引发的炎症,比较严重,花了 2w+ 住院费,也是从这个时候才知道我父母都没有交医保(更别说社保),他们也没有正式、稳定的工作,也没有一分钱存款,于是我立马打电话给老家的亲戚让一个表姐帮忙去交了农村医保。所有这些都是我一个人扛,还有个亲哥时不时问我借钱。


381728547058_ 拷贝.jpg


说实话,我不是很理解我的父母为什么在外打工那么多年,一分钱都存不下来的,因为我从小比较懂事,没让他们操过什么心,也没花过什么大钱。虽然从农村出来不是很容易,但和周围的相同条件的亲戚对比,我只能理解为我父母真的爱玩,没有存钱的概念。


我可能也继承了他们的基因吧?才敢这样任性的离职。过去几年努力地想去改变这个处境,发现根本没用,还把自己搞得心力交瘁,现在想想不如让自己活开心些吧。


5 月


母亲出院后,我回到杭州和摩友去骑了千岛湖,还有周边的一些山啊路啊,累计差不多跑了 2000 多公里,于是我开始确立我的摩旅计划,路线是杭州-海南岛-云南-成都-拉萨,后面实际跑的时候,因为云南之前去过,时间又太赶,就没去云南了。


2024-10-11 103931.jpg


6 月


在摩友的帮助下,给摩托车简单进行了一些改装,主要加了大容量的三箱和防雨的驮包,也配备了一些路上需要的药品、装备,就一个人出发了。


2024-10-11 103949.jpg


从杭州到海南这部分旅行,我也是简单记录了一下,视频我上传了 B 站,有兴趣的朋友可以看看:


拯救焦虑的29岁,考摩托车驾-照,裸辞,买车,向着自由,出发。


摩托车确实是危险的,毕竟肉包铁,即使大部分情况我已经开的很慢,但是仍然会遇到下大雨路滑、小汽车别我、大货车擦肩而过这种危险情况,有一次在过福建的某个隧道时,那时候下着大雨,刚进隧道口就轮胎打滑,对向来车是连续的大货车,打滑之后摩托车不受控制,径直朝向对向车道冲过去,那两秒钟其实我觉得已经完蛋了,倒是没有影视剧中的人生画面闪回,但是真的会在那个瞬间非常绝望,还好我的手还是强行在对龙头进行扳正,奇迹般地扳回来且稳定住了。


过了隧道惊魂未定,找了个路边小店蹲在地上大口喘气,雨水打湿了全身加上心情无法平复,我全身都是抖的,眼泪也止不住流,不是害怕,是那种久违地从人类身体发出的求生本能让我控制不住情绪的肆意发泄。


在国道开久了人也会变得很麻木,因为没什么风景,路况也是好的坏的各式各样,我现在回看自己的记录视频,有的雨天我既然能在窄路开到 100+ 码,真的很吓人,一旦摔车就是与世长辞了。


不过路上的一切不好的遭遇,在克服之后,都会被给予惊喜,到达海南岛之后,我第一次感觉到什么叫精神自由,沿着海边骑行吹着自由的风,到达一个好看的地方就停车喝水观景,玩沙子,没有工作的烦扰,没有任何让自己感受到压力的事情,就像回到了小时候无忧无虑玩泥巴的日子,非常惬意。


稿定设计导出-20241011-112615.jpg


在完成海南环岛之后,我随即就赶往成都,与前公司被裁的前同事碰面了。我们在成都玩了三天左右,主要去看了一直想看的大熊猫🐼!


2024-10-11 174426.jpg


之后我们在 6.15 号开始从成都的 318 起始点出发,那一天的心情很激动,感觉自己终于要做一件不太一样的事,见不一样的风景了。


401728642422_.pic.jpg


小时候在农村,读书后在小镇,大学又没什么经济能力去旅行,见识到的事物都非常有限,但是这一切遗憾在川藏线上彻底被弥补了。从开始进入高原地貌,一路上的风景真的美到我哭!很多时候我头盔下面都是情不自禁地笑着的,发自内心的那种笑,那种快乐的感觉,我已经很久很久很久没有了。


稿定设计导出-20241011-184041.jpg


同样地,这段经历我也以视频的方式记录了下来,有兴趣的朋友可以观看:


以前只敢想想,现在勇敢向前踏出了一步,暂时放下了工作,用摩托跑完了318


到拉萨了!


411728642433_.pic.jpg


花了 150 大洋买的奖牌,当做证明也顺便做慈善了:)


421728642441_.pic_h111d.jpg


后面到拉萨之后我和朋友分开了,他去自驾新疆,我转头走 109 国道,也就是青藏线,这条线真的巨壮美,独自一人行驶在这条路,会感觉和自然融合在了一起,一切都很飘渺,感觉自己特别渺小。不过这条线路因为冻土层和大货车非常非常多的原因,路已经凹凸不平了,许多炮弹坑,稍微骑快点就会飞起来。


这条线还会经过青海湖,我发誓青海湖真的是我看到过最震撼的景色了,绿色和蓝色的完美融合,真的非常非常美,以后还要再去!


2024-10-11 185558.jpg


拍到了自己的人生照片:


2024-10-11 185623.jpg


经历了接近一个半月的在外漂泊,我到了西宁,感觉有点累了,我就找了个顺丰把摩托车拖运了,我自己就坐飞机回家了。


这一段经历对我来说非常宝贵,遇到的有趣的人和事,遭遇的磨难,见到的美景我无法大篇幅细说,但是每次回想起这段记忆我都会由衷地感觉到快乐,感觉自己真的像个人一样活着。


这次旅行还给了我感知快乐和美的能力,回到家后,我看那些原来觉得并不怎么样的风景,现在觉得都很美,而且我很容易因为生活中的小确幸感到快乐,这种能力很重要。


7 月


回到家大概 7 月中旬。


这两个多月的经历,我的身体和心态都调整的不错了,但还不是很想找工作,感觉放下内心的很多执念后,生活还是很轻松的,就想着在家里好好陪陪母亲吧,上班那几年除了过年都没怎么回家。


在家里没什么事,但是后面工作的技能还是要继续学习的,之前工作经历是第一家公司用的 React 16,后面公司用的是 Vue3,对 React 有些生疏,我就完整地看了下 React 18 的文档,感觉变化也不是很大。


8、9 月


虽然放下了许多执念,对于社会评价(房子、结婚、孩子)也没有像之前一样过于在乎了,但还是要生活的,也要有一定积蓄应对未来风险,所以这段时间在准备面试,写简历、整理项目、看看技术知识点、刷刷 leetcode。


也上线了一个比较有意义的网站,写了一个让前端开发者更方便进行 TypeScript 类型体操的网站,名字是 TypeRoom 类型小屋,题源是基于 antfu 大佬的 type-challenges


目前 Type Challenges 官方提供了三种刷题方式



这几种方式其实都很方便,不过都在题目的可读性上有一定的不足,还对开发者有一定的工具负担、IDE 负担。


针对这个问题,也是建立 TypeRoom 的第一个主要原因之一,就是提供直接在浏览器端就能刷题的在线环境,并且从技术和布局设计上让题目描述和答题区域区分开来,更为直观和清晰。不需要额外再做任何事,打开一个网址即可直接开始刷题,并且你的答题记录会存储到云端。


欢迎大家来刷题,网址:typeroom.cn


截屏2024-10-12 21.53.26.png


因为个人维护,还有很多题目没翻译,很多题解没写,也还有很多功能没做,有兴趣一起参与的朋友可以联系我哦,让我一起造福社区!


同时也介绍下技术栈吧:


前端主要使用 Vue3 + Pinia + TypeScript,服务端一开始是 Koa2 的,后面用 Nest 重写了,所以现在服务端为 Nest + Mysql + TypeORM。


另外,作为期待了四年,每一个预告片都看好多遍的《黑神话·悟空》的铁粉,玩了四周目,白金了。


WechatIMG43.jpg


现在


现在是 10 月份了,准备开始投简历找工作了,目前元气满满,不急不躁,对工作没有排斥感了,甚至想想工作还蛮好的,可能是闲久了吧,哈哈哈,人就是贱~


最后


其实大多数我们活得很累,都是背负的东西太多了,而这些大多数其实并不一定要接受的,发挥主观能动性,让自己活得开心些最重要,加油啊,各位,感谢你看到这里,祝你快乐!


这是我的 github profile,上面有我的各种联系方式,想交个朋友的可以加我~❤️


作者:vortesnail
来源:juejin.cn/post/7424902549256224804
收起阅读 »

每一个失业的前端er都必须有一个稳定盈利的独立开发项目

如题,最近非常焦虑,因为考试临近了,所以只好来祸害一下网友了 俺从2023年离职,经历了考研,独立开发,remote,好几段经历 首先是考研,去年考的其实还行,但还是复试被刷,至今被刷原因未知,盲猜是因为本科是民办三本吧 然后remote就是找了个美国的区块链...
继续阅读 »

如题,最近非常焦虑,因为考试临近了,所以只好来祸害一下网友了


俺从2023年离职,经历了考研,独立开发,remote,好几段经历


首先是考研,去年考的其实还行,但还是复试被刷,至今被刷原因未知,盲猜是因为本科是民办三本吧


然后remote就是找了个美国的区块链公司,但是因为四月份我忙着搞调剂,过程十分煎熬,根本无心顾暇remote那边天天开会的节奏,所以只能离职,当然啦,最终也没调剂上


这都不是重点,重点是独立开发


从我离职到现在,也快两年了,聪明的人已经发现了,整个互联网技术栈这两年可以说毫无变化,新的端没有,新的框架没有,新的红利也没有,新的独角兽公司也没有


道理很简单,因为现在是僧多粥少的时代,每个人手机上就固定几个app,而且都是存量状态(不需要推翻重来,只需要shi山跳舞)


与此同时,还有若干小公司不断倒闭


懂了吧,现在是需求没了,业务没了,招聘的公司没了


独立开发就只不过是,没有业务,我们自己发现制造业务罢了


但是呢,会更难,因为,资本虽然是傻逼,但它们也不是完全没脑子,如果轻易能成功,他们就不需要跑路了


现实就是,我朋友圈有很多独立开发的,推特上也有很多,但能做到稳定盈利的人,几乎为0


有的是卖小册,有的是搞博客,还有开公司做面试辅导的,也有外包接活的,也有收费技术咨询的


这些统统都是噶韭菜——因为我说的很清楚了,现在是业务没了,是需求没了,但凡不制造需求的,都是瞎扯


——所以我把c站卖了,c站转让前日活5w,但是动漫行业实在太卷了,各种各样的竞品,让我自己都不想看番,更别提服务给他人看了


之前在携程,我的老板和我说,你就当独立创业,携程三万人就是你的第一批客户,我觉得老板说的没错,就是比起b端,我更喜欢c端的用户


所以毫无疑问,我不可能再回去写前端框架了,纯粹浪费时间,浪费我的❤


唉,说了这么多,总而言之,言而总之


回到题目,那就是,每个人失业的前端er都必须有一个稳定盈利的独立开发项目


我也在开新坑了,敬请期待~


作者:132
来源:juejin.cn/post/7426258631161528335
收起阅读 »

凌晨四点,线上CPU告警,绩效没了

前言 凌晨4点,我被一阵刺耳的手机铃声惊醒。迷迷糊糊地摸索着手机,屏幕上赫然显示着"线上CPU告警"的字样。瞬间,我的困意全无,取而代之的是一阵冷汗和心跳加速。作为公司核心系统的负责人,我深知这意味着什么——用户体验受损、可能的数据丢失,更糟糕的是,我的年终绩...
继续阅读 »

前言


凌晨4点,我被一阵刺耳的手机铃声惊醒。迷迷糊糊地摸索着手机,屏幕上赫然显示着"线上CPU告警"的字样。瞬间,我的困意全无,取而代之的是一阵冷汗和心跳加速。作为公司核心系统的负责人,我深知这意味着什么——用户体验受损、可能的数据丢失,更糟糕的是,我的年终绩效可能就此化为泡影。


我迅速起身,开始了一场与时间赛跑的故障排查之旅。


1. 初步诊断:快速定位问题


首先,我登录了服务器,使用top命令查看系统资源使用情况:


$ top

输出显示CPU使用率接近100%,load average远超服务器核心数。这确实是一个严重的问题。


接下来,我使用htop命令获取更详细的进程信息:


$ htop

我发现有几个Java进程占用了大量CPU资源。这些进程正是我们的核心服务。


2. JVM层面分析:寻找热点方法


确定了问题出在Java应用上,我开始进行JVM层面的分析。首先使用jstat命令查看GC情况:


$ jstat -gcutil [PID] 1000 10

输出显示Full GC频繁发生,这可能是导致CPU使用率高的原因之一。


接着,我使用jstack命令生成线程转储,查看线程状态:


$ jstack [PID] > thread_dump.txt

分析thread dump文件,我发现大量线程处于RUNNABLE状态,执行着相似的方法调用。


为了进一步定位热点方法,我使用了async-profiler工具:


$ ./profiler.sh -d 30 -f cpu_profile.svg [PID]

生成的火焰图清晰地显示了一个自定义的排序算法占用了大量CPU时间。


3. 应用层面优化:重构算法


找到了罪魁祸首,我立即查看了相关代码。这是一个用于大量数据的自定义排序算法,原本设计用于小规模数据,但随着业务增长,它的性能问题暴露无遗。


我迅速重构了算法,使用Java 8的并行流进行优化:


List<Data> sortedData = data.parallelStream()
.sorted(Comparator.comparing(Data::getKey))
.collect(Collectors.toList());

同时,我添加了缓存机制,避免重复计算:


@Cacheable("sortedData")
public List<Data> getSortedData() {
// 优化后的排序逻辑
}

4. 数据库优化:索引与查询改进


在排查过程中,我还发现了一些低效的数据库查询。使用explain命令分析SQL语句:


EXPLAIN SELECT * FROM large_table WHERE status = 'ACTIVE';

结果显示这个查询导致了全表扫描。我立即添加了合适的索引:


CREATE INDEX idx_status ON large_table(status);

并重写了部分ORM查询,使用更高效的原生SQL:


@Query(value = "SELECT * FROM large_table WHERE status = :status", nativeQuery = true)
List<LargeTable> findByStatus(@Param("status") String status);

5. 部署优化:资源隔离


为了防止单个服务影响整个系统,我决定使用Docker进行资源隔离。创建了如下的Dockerfile:


FROM openjdk:11-jre-slim
COPY target/myapp.jar app.jar
ENTRYPOINT ["java", "-Xmx2g", "-jar", "/app.jar"]

并使用Docker Compose进行服务编排,限制了CPU和内存使用:


version: '3'
services:
myapp:
build: .
deploy:
resources:
limits:
cpus: '0.50'
memory: 512M

6. 监控告警:防患未然


最后,为了避免类似问题再次发生,我升级了监控系统。使用Prometheus和Grafana搭建了全面的监控平台,并设置了更加智能的告警规则:


- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 5 minutes"

结语:危机与成长


经过近4小时的奋战,系统终于恢复了正常。CPU使用率降到了30%以下,服务响应时间也恢复到了毫秒级。


这次经历让我深刻意识到,在追求业务快速发展的同时,我们不能忽视技术债务的累积。定期的代码审查、性能测试和压力测试是必不可少的。同时,建立完善的监控和告警机制,能够帮助我们更快地发现和解决问题。


虽然这次事件可能会影响我的年终绩效,但它带给我的经验和教训是无价的。持续学习和改进永远是我们的必修课。


凌晨的阳台上,我望着渐亮的天空,心中暗自庆幸:又一次化险为夷。但我知道,明天将是新的挑战,我们还有很长的路要走。


作者:JustinNeil
来源:juejin.cn/post/7424522247791247394
收起阅读 »

我终于从不想上班又不能裸辞的矛盾中挣扎出来了

最近的状态有一种好像一个泄了气的皮球的感觉一样,就是对生活中很多事情都提不起来兴趣。 我希望自己可以多看一点书,但是我不想动;我希望自己可以练习书法,但是我不想动;我希望自己可以学会一门乐器,但是我不想动。 相比上面三点,我更希望的是我可以早上起来不用上班,但...
继续阅读 »

最近的状态有一种好像一个泄了气的皮球的感觉一样,就是对生活中很多事情都提不起来兴趣。


我希望自己可以多看一点书,但是我不想动;我希望自己可以练习书法,但是我不想动;我希望自己可以学会一门乐器,但是我不想动。


相比上面三点,我更希望的是我可以早上起来不用上班,但是这只是我的希望而已。


这就是我最近的生活状态。


我有一种我的生活仿佛失去了控制的感觉,每一天我的内心好像都有一个小人在不断呐喊,说我不想上班。因为这个声音,我一度非常非常想要裸辞,但是我为什么没有裸辞呢?


还不是因为我买房买车欠了十几万,我到现在才还了两万而已,再加上我每个月还有房贷要还。


然而,当我经常不情愿地做着跟我心里想法相悖的行为的时候,我发现自己常常会做一些小动作来向自己表达抗议和不满。


比如说,我的工作会变得越来越低效,上班的时候会偷偷地摸鱼,还有就是变得越来越容易拖延。


就好像这样的我,可以让那个不想上班的我,取得了一丢丢的小胜利一样。


一旦开始接受自己没有办法辞职,并且还要上个几十年班这样的结果时,就会让人有一种破罐子破摔的想法。


而且随之而来的是一种对未来,对生活的无力感。


这种无力感渐渐地渗透在我生活的方方面面,以至于让我慢慢地对很多东西都提不起兴趣,我生活中的常态就变成了不想动。


但是有趣的事情发生了,有一天我在和我朋友聊天的时候,我的脑子里面突然出现了一个想法,就是我决定两年之后我要实现我不上班的这个目标。


当有了这个想法之后,我就开始认真思考这件事情的可行度。


通过分析我现在收支情况,我把两年之内改成了2026年之前,因为我觉得这样会让我更加信服这个目标的可行性。


同时我把这个想法也拆分成了两个更为具体的目标,其中一个就是我要在2026年之前还完欠的所有钱。


第二个就是我需要给自己存够20万,这20万是不包括投资理财或者基金股票里面的钱,而是我完全可以自由支配的。


毕竟没有人可以在没有工作的情况下,没有收入的情况下。没有存款的情况下,还能保持一个不焦虑的状态。


当我得出了这两个具体的目标之后,我整个人瞬间被一种兴奋的状态填满,我瞬间找到了工作的意义和动力。


也许你会说,我的这个想法对我现在生活根本起不到任何的改变作用。


我依旧还需要每天七点起床,还是要每天重复地去过我两点一线的生活。


但是于我自己而言,当我给我上班的这件事情加了一个两年的期限之后,我突然觉得我的未来,我的生活都充满了希望。


我整个人从不想动的状态,变成了一种被兴奋的状态填满的感觉。


所以,如果你和我一样有一些类似的困扰,有一些你不想做而又不得不做的事情,让你有一种深陷泥潭,无法前进的感觉,那你不妨试一下这个方法。


结合你自己的实际情况,为你不想做这件事情,设计一个期限,这个期限必须要是你认可,你接受,并且你认为你可以在这个截止时间之前完成的。


我想这个决定应该会对你的生活带来一些改变。


作者:程序员Winn
来源:juejin.cn/post/7428154034480906278
收起阅读 »

35 岁时我改掉的三个习惯

大家好,我是双越老师,wangEditor 作者。 我正在开发一个 Nodejs 全栈 AIGC 知识库项目 划水AI,包括富文本编辑器,多人协同编辑,AI 写作,AI 处理文本等。有兴趣的同学可以围观项目。 开始 虽然标题是 35 岁,但其实本文 202...
继续阅读 »

大家好,我是双越老师,wangEditor 作者。



我正在开发一个 Nodejs 全栈 AIGC 知识库项目 划水AI,包括富文本编辑器,多人协同编辑,AI 写作,AI 处理文本等。有兴趣的同学可以围观项目。



开始


虽然标题是 35 岁,但其实本文 2024 年我 36 岁时写的。36 岁总结 35 岁,也没毛病。


35 岁对于我们程序员来说是一个非常敏感的年龄,但我已过 35 ,看看往后会越来越敏感,还是越来越麻木?


本文和大家分享一下我个人在业余生活中的,我觉得很有意义的事情。甚至我觉得这些是事情的意义,都大于工作的成绩。


生活是一个整体,工作只是其中一部分,只是我们养家糊口的一个手段。工作以外的其他部分应该更加重要,例如业余爱好、饮食、休息、娱乐、家庭等。


1. 戒烟


我从大学毕业开始学着吸烟,到 35 岁已经有十几年的烟龄了。虽然每天吸烟量不大,但也断不了,有瘾。


我为什么要戒烟呢?


是觉得吸烟有害健康?—— 对,吸烟肯定有害健康,但人类天生是一种及时行乐的动物,谁会在乎 20 年 30 年以后的健康呢?人类天生是一个心存侥幸的动物(赌徒性质),也不是每个吸烟者都会有 xxx 病,对吧?之前看过一个段子,说某呼吸外科医生做完,累几个小时做完一台手术,先出去吸烟休息一下。


我戒烟,单纯就是想戒。我想摆脱烟草和尼古丁的控制,而且是想了很久了,不是一时突发奇想,之前就有充分的心理准备。


还有,我想在 35+ 的年纪做一点叛逆的事情,叛逆使人年轻,叛逆使人保持活力。年轻时吸烟是叛逆,年龄大了戒烟就是叛逆。年轻时叛逆是狂,年龄大了叛逆是帅。所以,各位大龄程序员,有机会要让自己叛逆起来,做一点帅的事情。


最后,当时 2023 年夏天,我正好不忙,天天闲着,总得找点事儿干。既然工作上不忙,那就在自己身上找点有意义事情做吧 —— 外求不得而向内求,如果没法从外面挣取,那就去提高自身。


烟瘾是什么?就是尼古丁的戒断反应,没有其他理由,没人其他任何事情会让你 1-2 小时就想一次,而且持续想。


关于烟草的本质,烟草的历史,烟草的商业化推广过程,烟草的洗脑广告…… 还有很多内容可以讲,本文就不展开了,有兴趣的可以留言咨询。我很早之前就看过,去学习这些,并且接受这些,才能更好的帮助戒烟。


所以,就这么戒了,到写作本文的时候,正好是戒了一年。我觉得这是我去年做过的最有价值的事情,比我工作挣的钱都有价值。


2. 戒酒


之前我是比较喜欢喝酒的,喜欢一帮人聚餐那种兴奋的状态。但后来喝多了就肚子难受,一躺下就想吐,于是决定不喝了。


有些人说:你可以少喝点。但在中国北方的酒桌上,只有 0 和 1 ,没有中间态。只要你喝了,一开始朋友劝你多喝点,再喝多一点就不用别人劝了,自己就开始主动找酒瓶子了。


我不懂酒,没喝过啥好酒,很少喝红酒。就日常喝的白酒和啤酒而言,我觉得都不好喝。


白酒,度数高,辣(尤其酱味的),容易醉。全世界就中国及其周边人喝白酒,国内几千的白酒没有国际市场。而且单就中国而言,白酒蒸馏技术几百年了,也只有最近这不到 100 年喝白酒。《红楼梦》上层人不喝白酒,《孔乙己》下层人也不喝白酒。


现在喝白酒的人,有两类:1. 被酒桌文化感染而顺从的人; 2. 有酒瘾想快速体验酒精的人。


啤酒,要分好多种,咱日常喝的瓶装的、桶装的,都可以统称为工业啤酒,像水一样,轻薄寡淡 —— 但它有酒精啊!


那种全麦啤酒(忘记名字了,不常喝)还是很好喝的,但价格较高,自己买点喝还行,聚餐喝那个太贵了(普通饭店也没有卖的),很少喝。


我身边也有一些朋友,每周都喝好几次,大部分是为了工作,拉拢客户关系。我觉得我还是比较幸运的,写写代码,改改 bug ,也不用太考虑人际关系。程序员的为数不多的好处。


3. 不看和自己无关的事情


我从不刷抖音(虽然我会发布一些抖音视频),但我之前很喜欢看今日头条 app ,每天闲了就刷一下,吃饭也看,睡前也看。


但是我都看了些啥呢?有一些是娱乐性的小视频,搞笑的,猎奇的,做饭吃饭的,我觉得这些很好,提供情绪价值。


其他的,什么俄 x 战争,什么国外 xxx 冲突,什么体育明星谁比谁厉害,什么传统武术,什么中医 …… 还有这些的评论,各路网友互怼。有时候看的都让人很带情绪,感觉有些人是不是傻,这么简单的道理看不明白?有些人是不是坏,不看事实,只看立场?


这些不仅不能提供情绪价值,反而会增加你的负面情绪。而且,根据《乌合之众》大众心理学研究,你只要参与了其中,你参与了互怼,你就会成为他们其中的一员,也变成傻子或坏人。围观,也是一种参与,你的心里会支持某一方。


更关键的是,这些事情我自己有关系吗?或者我的表态能决定这件事儿的走向吗?哪怕投一票决定一点点呢 —— 答案是显然的,要么没有任何关系,要么自己瞎操心。


所以,我卸载了今日头条 app ,不看了,眼不见心不烦,这些事情我不知道,也不影响我个人工作生活。从此以后,我觉得我的世界瞬间清净了,至少不会被那些负面情绪所打扰。


另外,我睡前也不看手机了,把手机扔在书房充电,直接睡觉。如果偶尔失眠或想事情,那就想,也不用非得拿着手机想,对吧。


总结


35 岁是一个里程碑和转折点,工作上如此,生活中也是如此。程序员是一个相对来说比较“单纯”的群体,我觉得更应该关注个人生活中的成长,共勉,加油~


作者:前端双越老师
来源:juejin.cn/post/7417630844100247590
收起阅读 »