首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

巨额房价下,湾区码农难圆美国梦

  • 24-03-05 05:00
  • 3494
  • 13419
blog.csdn.net

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 | 方文

本文经授权转自猎云网(ID: ilieyun)

众所周知,旧金山湾区的生活压力并不小,特别像教师、消防员、以及服务行业的工人,他们的工资没能跟上旧金山(全国最昂贵居住地之一)住房成本暴涨的脚步。

然而,现实告诉我们,即便是拥有湾区最高收入的科技人员,也很难实现美国梦的基石:房屋所有权。科技人员的平均薪资在 6 位数,却面临着越来越大的买房压力,旧金山的平均房价约 134 万美元,去年预付定金的中位数约为 25 万美元。虽然最近的销售情况有所放缓,但预计很快就会有大改变。纽约时报最近一篇报道的标题中也写到,一批新近出现的科技 IPO 百万富翁正在“活着吃旧金山。”

28 岁的 Joshua Davis 是一名机器学习初创公司的软件工程师,每年赚 10 万美元,希望在奥克兰买一套单身公寓,预算 50 万美元,据他了解,大多数地方的房价都远远超过这个数字。所以他开始考虑了亟待修葺的老房子。他希望能找到一个地方,用相对较低的价格就可以搞定——在那个地方,他可以根据自己的喜好在墙壁上涂上任何想要的颜色。

但他很快意识这是一个不切实际的想法。他看了很多房子,其中一个,泥槛腐烂,房屋与地基已经分离。房主对这个老房子只是做了很简单的修复工作,仅花了 2 万美元,但 Davis 知道这只是一个临时修复。房子结构已存在严重缺陷。

Davis 表示:“目前能够买的起的房子都是这种破败不堪的。”他最终放弃了现在买房的想法。希望市场最终能平静下来。同时,他在奥克兰市中心租了一套单身公寓,月租约 2300 美元。

显然,Davis 的情况并非个例。根据工作聊天应用 Blind 最近的一项研究显示,湾区科技巨头的技术人员约有 70% 表示自己无法在工作地点买房。调研对象共计 3000 人,大多是高技术人才——工程师、产品经理和数据科学家——他们租得起房却买不起房。

像 Davis 这种薪酬相对较高的员工都遇到问题,也表明,旧金山湾区的住房状况已造成科技人员的难以为继、生活不稳定的局面。虽然像 Facebook 这样的科技巨头有能力为其员工提供一份中位数工资 24 万美元,但行业内其他相对较小的公司却很困惑,为了紧跟飙升的住房成本,需要提供多高的工资,以及在一个买不起房的地方,科技人员能生活多久。

像 Facebook 和谷歌这样的公司已经开始专门为他们的员工建造住房,紧邻他们庞大的科技园区。此前,谷歌向居住在办公室附近的员工提供 1 万美元的奖金,以减轻住房成本的压力、减少通勤时间。几乎各大科技公司都为员工提供了私人免费巴士,将员工从硅谷(谷歌和 Facebook 等科技园区所在地)送至人口相对密集的地区,如旧金山和奥克兰。

上个月,Facebook 首席执行官马克·扎克伯格和他的妻子普丽西拉·陈(Priscilla Chan)帮助了一家慈善基金,该基金旨在筹集 5 亿美元,用以保留旧金山湾区的经济适用房。到目前为止,Chan Zuckerberg Initiative 已向该基金投入了 4000 万美元。根据建筑行业协会的数据,虽然 5 亿美元是一笔大资金,但单凭此改变湾区住房市场动态是不够的。该协会数据显示,在湾区,每增加 4.5 个工作岗位,仅增加一个新住房,供需完全不成比。Chan Zuckerberg Initiative 资金投入的行为也表明科技公司正在严肃对待其总部住房成本上涨的问题。

谷歌总部所在地山景城的市长 Lisa Matichak 说道:“我确实认为大公司目前迫切希望与城市合作解决住房问题,因为他们希望扩大企业规模并希望员工有一个居住的地方。”

Matichak 和市议会的其他成员正在审查谷歌和另一家公司的竞选方案,方案涉及在该市令人垂涎的 30 英亩土地上建立更多办公室。市议会的主要关注点之一是确保开发不仅包括办公空间,还包括新的住房单元。在线房地产平台 Trulia 的数据显示,在硅谷的山景城中,房屋中位数价格约为 160 万美元,一居室平均租金为 2800 美元。

随着新一波旧金山科技公司向北方开放一小时,Uber、Lyft、Slack 和 Airbnb 预计很快将上市,届时或将有成千上万的新一代百万富翁进一步挤占住房市场,从而进一步推高价格。虽然会有一批新近上市的 IPO 技术人员,但更多的人并没有在这场创业大潮中讨到好处。


640?wx_fmt=png

住房危机


近些年,旧金山湾区的房价上涨的速度飙的厉害,以至于该市的住房短缺和无家可归被联合国官员视为“侵犯人权”。根据加利福尼亚房地产经纪人协会的数据,在过去的七年中,有能力购买旧金山湾区中等价位房屋的家庭比例下降了 50% 以上。

当然,最受打击的还是那些薪资远不如技术人员的人——比如服务业、教育业和执法部门。最近一项研究发现,硅谷高达 90% 的员工已经看到他们的实际工资,这意味着他们的年薪随着通货膨胀和生活费用上涨进行调整,在过去 20 年中有所下降。

这意味着即便 Facebook、Twitter 和 Uber 等公司已经出现并为有幸成为早期投资者或居住在该地区的员工股东创造了数十亿美元的价值,当下技术资本的经济不平等问题仍旧变得越来越糟。

一些劳工倡导者指责科技在一定程度上加大了这种经济差异。几年前,抗议者向科技人员的通勤巴士中投掷石块,这些巴士也成为新资本和高档化的象征。科技正在改变旧金山曾经的工薪阶层移民社区的面貌,就是 Mission District(旧金山富人区),Facebook 首席执行官马克扎克伯格在 Mission District 以 1000 万美元买下了一处住宅。但现在,很多坐在闪亮的包机巴士的科技人员却住不起 Mission,或者任何 Facebook 的门洛公园总部沿途同样昂贵的半岛郊区。

海湾地区劳工组织的非营利机构美国工作伙伴(Working Partnerships USA)的公共策划主管 Jeffrey Buchanan 说到:“如果连工程师和和程序员都无法承受住房成本上涨,那么世界上的其他人如何在旧金山舒适地生活呢?


640?wx_fmt=png

科技人员的负担能力分化


在购买房产的权利方面,并非所有的技术员工都是平等的。

在谷歌和 Facebook 等科技巨头中,超过 50% 的员工都是合同工——其中许多人的薪资水平普遍低于全职员工薪水。有报道称,谷歌员工在停车场的货车上睡觉——洗澡在办公室健身房解决,吃饭在公司厨房坚决。当然,报道中的工程师只是极端的情况,是个例;大多数薪资 6 位数的程序员可能买不起房子,但有能力租房。

根据劳工联盟 SEIU 去年 7 月与彭博社分享的数据,这些选择对于许多人来说更为有限,例如工会化的谷歌清洁工每小时收入约 26 美元,其中包括福利。假设这些工人每周工作 40 小时,年收入预计将在 5 万美元左右——略高于联邦住房和城市发展部认为在谷歌位于 Santa Clara 的办公楼的一个四口之家“低收入标准”的一半。

由于低收入员工更难在湾区获得成功,一些科技公司已将大部分负责内容审核和客户支持等功能的员工外包给其他类似 Phoenix、 Arizona 等工资水平相对较低,租金更便宜的地区。

但为维持旧金山总部的运营,公司不能将所有需要的人外包出去。他们仍然需要设施工人来维持灯光,厨师以确保程序员的伙食,并且需要保洁员在其庞大的科技园区中保持建筑的清洁。

除了科技公司的服务人员、临时工和承包商之外,房地产危机对企业家和创企来说也是一大难题。

Davis 表示,他所在的公司 Zorroa 是一家以机器学习为依托的视觉研所创企,该公司过去常常在加利福尼亚以外的地方为程序员提供工作,他们的薪水更高。Davis 说,现在该公司已经发起了一轮风投,将有能力为员工提供更高的薪资,使其在湾区立足。

根据一些指标,加州的创业情况相较于其他创业公司来水正在放缓。考夫曼基金会(The Kauffman Foundation)是衡量美国企业家精神的非营利组织,其最新报告显示,缅因州、华盛顿特区这样的地方的创业指标高于加利福尼亚。根据两个领先的硅谷社区组织的 2018 年报告,如今更多的人选择搬出湾区而不是搬进去,是有道理的。2018 年湾区市议会的一项调查发现,46% 的湾区居民希望搬迁。

这些小型创业公司经历的斗争代表了技术核心存在的危机:如果说硅谷和旧金山是有价值的,因为它们是竞争激烈的工程师的中心,如果有一天发展到,只有精英中的精英、上市后的技术人员才有能力在城市里买房,这个世界会变成什么样?当然,年轻的程序员可以挤进更小、更紧张的生活环境,但对于想要组建家庭的人来说,这会变得更加困难。

住房经济也存在一个有趣的分歧。虽然在过去几年中,房价在圣何塞等地区飞速上涨,但租金上涨速度却慢得多。在线房地产公司 Zillow 的经济研究团队分析师杰夫塔克称:“这对经济学家来说还是个迷。”

这意味着 20 到 30 岁的技术员工在得到良好的补偿后可能跟得上不断上涨的租金,但买房一事还是任重道远啊。


640?wx_fmt=png

科技可以解决这场危机吗?


一些科技领导者正试图帮助解决住房问题。

一位非营利性研究、教育和倡导组织的社区规划策划主管 Kristy Wang 说:“现在就会有一个问题,‘科技资金是否会解决我们的住房危机呢?我认为公司需要花很长时间才能认真对待他们正在做的事情。”

虽然像 Chan Zuckerberg Initiative 这样的捐款投入可能会改善住房危机有所帮助,但一些住房倡导者认为这些捐款仅仅是为了解决更大的问题。一家发展中的住房倡导组织 California YIMBY 的通信主管 Matthew Lewis 表示,尽管慈善事业的努力会有所帮助,但在与旧金山一样拥挤的住房市场中,兴不起多大风浪。

正如 Matthew Lewis 所看到的那样,解决方案非常简单:“只能建造更多的房屋。”

为了做到这一点,开发商需要获得城市批准,但由于当地严格的区域法律,旧金山和硅谷郊区的房屋密度受到极大限制,要想获批土地面积,并非易事。虽然,一些当地人认为这些政策保留了邻里性质,但批评者认为他们是阶级主义者:利益总会向有钱人倾斜,而有钱人往往都是踩着其他人的利益,特别是少数民族和低收入居民的利益往上走。

历史解释了湾区许多分区法律意图的黑暗过去。旧金山最古老的住房密度法之一,即 1870 年的“立方航空条例”,大多被用于将居住在寄宿公寓的中国居民定为刑事犯罪。在海湾对面,伯克利采用类似的法律将更富裕的白人居民与黑人邻居分开。

快进到今天,湾区仍然在当地关于住房密度的辩论中揭示了深刻的社会分歧。

去年 9 月在苹果公司的总部库比蒂诺举行的一次市议会听证会上,一位当地少年说他反对高密度的经济适用房,因为“这意味着将有位受过教育的人住在库比蒂诺。”他和邻居们担心,这样会让现在的居民感到“不舒服。”市长认为这个评论是由一个不太了解现状的“孩子”发出的——但对很多人来说,这无疑揭露了当地老居民的真实感受和想法,反对发展。

但是,还有一种声音反对改变分区法则。在像旧金山这样的城市,密度增加的法律可允许快速开放数百万美元的豪华公寓,这些公寓大多都是造福富人,至少在短期内取代租金控制的公寓或其他更便宜的住房。

在商议的过程中,可能会出现很多人的想法、意见,讨论湾区住房危机的解决方案,但这一切都需要时间,不可能一蹴而就。对此,一些科技工作者表示他们十分担忧,开始有些失去耐心了。

尽管当下的住房情况令人沮丧,但其他科技工作者,其中大多数更年轻、未组建家庭的人员,仍然能感受到湾区的经济拉动。

而 Davis 也坦言:“当你四处走动时,就会感受到一定的力量。你能从日常生活里接触到、交流到的人和环境中学习到很多。时间久了,要想离开是很难的。”

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=gif

 热 文 推 荐 

☞ 雷军回应输 10 亿背后真相:世界正在青睐不务正业的人

☞ 程序员会被 AI 替代吗?| 程序员有话说

☞ 从阿里平薪跳头条,值得吗?

☞微软新版 Edge 浏览器叫板 Chrome!

☞ 日本高中生开发酷炫“扔瓶子”机器人,想砸谁就砸谁

雷军回应输 10 亿背后真相:世界正在青睐不务正业的人

“别傻了,你不需要区块链!”

微服务与单体架构:IT变革中企业及个体如何自处?

GitHub超全机器学习工程师成长路线图,开源两日收获3700+Star!

曝光!月薪 5 万的程序员面试题:73% 人都做错,你敢试吗?

 
 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

640?wx_fmt=png 喜欢就点击“在看”吧!
程序人生
微信公众号
笑谈开发轶事,品味程序人生。

问题描述

在日常开发中,我们经常会遇到各种状态常量、响应码等需要在代码中频繁使用的情况。为了方便,很多开发者会直接将它们硬编码在业务逻辑中,比如:

ini
代码解读
复制代码
if (status == 1) {    // 处理成功状态 } else if (status == 2) {    // 处理失败状态 }

这种做法虽然简单直接,但随着项目规模的扩大,问题也逐渐暴露出来:

  1. 可读性差:数字常量没有明确的语义,阅读代码时很难快速理解每个数字代表的具体含义。
  2. 维护困难:当需要修改某个状态码时,必须手动查找所有使用该状态码的地方,容易遗漏或出错。
  3. 容易出错:硬编码的数字容易写错,且不易发现,导致潜在的 bug。

解决过程

为了解决上述问题,我决定引入常量类或枚举来管理这些状态码和响应码。通过将常量集中管理,不仅可以提高代码的可读性,还能减少维护成本。

1. 使用常量类

首先,我尝试使用常量类来管理状态码。将所有相关的状态码集中在一个类中,并为每个状态码赋予一个有意义的名称。

arduino
代码解读
复制代码
public class StatusConstants {    public static final int STATUS_SUCCESS = 1;    public static final int STATUS_FAILURE = 2;    public static final int STATUS_PENDING = 3; }

在业务代码中,使用这些常量代替硬编码的数字:

ini
代码解读
复制代码
if (status == StatusConstants.STATUS_SUCCESS) {    // 处理成功状态 } else if (status == StatusConstants.STATUS_FAILURE) {    // 处理失败状态 }

2. 使用枚举

虽然常量类已经解决了部分问题,但枚举类型提供了更强大的功能。枚举不仅可以定义常量,还可以为每个常量附加额外的信息或行为。

arduino
代码解读
复制代码
public enum Status {    SUCCESS(1, "成功"),    FAILURE(2, "失败"),    PENDING(3, "待处理"); ​    private final int code;    private final String description; ​    Status(int code, String description) {        this.code = code;        this.description = description;   } ​    public int getCode() {        return code;   } ​    public String getDescription() {        return description;   } ​    public static Status fromCode(int code) {        for (Status status : Status.values()) {            if (status.code == code) {                return status;           }       }        throw new IllegalArgumentException("未知的状态码: " + code);   } }

在业务代码中,使用枚举代替常量类:

ini
代码解读
复制代码
Status status = Status.fromCode(statusCode); if (status == Status.SUCCESS) {    // 处理成功状态 } else if (status == Status.FAILURE) {    // 处理失败状态 }

3. 使用配置文件

对于需要频繁修改或跨系统共享的常量,可以考虑将它们放在配置文件中,如 properties 文件或 YAML 文件。通过配置文件管理常量,可以在不修改代码的情况下调整常量的值。

ini
代码解读
复制代码
# status.properties status.success=1 status.failure=2 status.pending=3

在代码中读取配置文件:

ini
代码解读
复制代码
Properties properties = new Properties(); try (InputStream input = getClass().getClassLoader().getResourceAsStream("status.properties")) {    properties.load(input); } ​ int successCode = Integer.parseInt(properties.getProperty("status.success")); int failureCode = Integer.parseInt(properties.getProperty("status.failure"));

代码示例

以下是一个完整的示例,展示了如何使用枚举管理状态码:

arduino
代码解读
复制代码
public enum Status {    SUCCESS(1, "成功"),    FAILURE(2, "失败"),    PENDING(3, "待处理"); ​    private final int code;    private final String description; ​    Status(int code, String description) {        this.code = code;        this.description = description;   } ​    public int getCode() {        return code;   } ​    public String getDescription() {        return description;   } ​    public static Status fromCode(int code) {        for (Status status : Status.values()) {            if (status.code == code) {                return status;           }       }        throw new IllegalArgumentException("未知的状态码: " + code);   } } ​ public class Main {    public static void main(String[] args) {        int statusCode = 1; // 假设从某处获取的状态码        Status status = Status.fromCode(statusCode); ​        switch (status) {            case SUCCESS:                System.out.println("处理成功状态");                break;            case FAILURE:                System.out.println("处理失败状态");                break;            case PENDING:                System.out.println("处理待处理状态");                break;            default:                System.out.println("未知状态");       }   } }

总结与反思

通过引入常量类和枚举,我成功解决了硬编码状态码和响应码带来的问题。代码的可读性和可维护性得到了显著提升,排查问题时也更加方便。

学到了什么?

  1. 常量管理的重要性:将常量集中管理不仅能提高代码的可读性,还能减少维护成本。
  2. 枚举的强大功能:枚举不仅可以定义常量,还能附加额外的信息或行为,非常适合管理状态码和响应码。
  3. 配置文件的灵活性:对于需要频繁修改的常量,使用配置文件可以在不修改代码的情况下进行调整。

可以改进的地方?

  1. 自动化工具:可以考虑使用代码生成工具自动生成常量类或枚举,减少手动编写的工作量。
  2. 国际化支持:对于需要支持多语言的系统,可以将常量的描述信息放在资源文件中,方便国际化处理。
  3. 代码审查:在代码审查时,应特别注意硬编码的数字,鼓励使用常量或枚举代替。

通过这次优化,我深刻认识到代码的可读性和可维护性对项目的重要性。未来,我将继续探索更多优雅的编码实践,提升代码质量。

注:本文转载自blog.csdn.net的CSDN 程序人生的文章"https://blog.csdn.net/csdnsevenn/article/details/88839876"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top