首页 > 编程语言 >九年编程生涯回顾

九年编程生涯回顾

时间:2023-03-17 17:11:06浏览次数:33  
标签:软件开发 回顾 项目 前端 编程 技术 生涯 开发 团队

前言

最近从工作了9年的外企毕业,正好趁此机会回顾下这9年来的职业生涯。我是一个不善于用文字记录或者分享学习生活的人,即使是朋友圈也很少发。之所以写下这篇博客,仅是想要尝试做一点改变,同时也希望留下一些文字以便将来回顾这段经历。

初入职场

毕业之后就来到了这家公司,既是第一份工作,也是到目前为止的唯一一份。这是一家在金融圈还算知名的外企,虽然薪酬竞争力一般,但在人均996的当下,能做到WLB加上开放,包容,平等的企业文化,还是吸引我在此经历了一段不算短的时光(错过了一次被社会毒打的机会)。另一个重要的原因是我一直在成长,公司的规模也给了我有足够的成长空间。

刚开始是在数据部门做面向内部人员的产品开发,技术是基于C# (或许是金融行业尤其是国外的公司多基于C#技术栈),从此就走上了死磕.NET 这条路。由于是开发面向内部人员的系统,各种开发流程还停留在比较原始的阶段,当时敏捷开发的理念已经深入人心,后来就转入了流程更加规范的产品研发部。恰巧赶上了部门从瀑布式开发到敏捷模式的转型,从引入JIRA,Kanban流程,到Git代码管理,Jenkins自动代码构建,我逐渐了解到企业级软件开发的流程。

开始主导小规模项目

除了正常的需求开发,领导交给我一个日志分析系统重写的任务。系统本身技术非常简单,主要就是大段的T-SQL,从数据库拿到数据,经过一些简单的处理,然后生成Excel报表。经过短时间对SQL相关的语法的学习,项目很快就上手了,但是整个系统最复杂的并不是用到的技术,而是所涉及的业务。比如每个表的字段代表什么意义,为什么要这样Join两个表,这些都是需要熟悉业务才能理解的。也正是这个项目,使我对部门业务的了解比其他开发快得多,也为后续接触核心业务,跟产品经理扯皮打下了坚实基础。

接下来接触的另一个项目是重写一个基于ASP.NET Web Form开发的系统。当时前端技术正发生着翻天覆地的变化,前端开发一下子从技术鄙视链的末端窜到了前列,各个大厂也争相高薪抢夺前端人才。不可避免的,在技术选型上,我们也选择了现代前端技术框架。跟现在Angular, React, Vue三分天下不同,我们选择了当时还很火的Ember.JS,后端采用NodeJS + Express。不过遗憾的是,这个项目后来由于公司战略调整黄了,不过从这个项目中还是得到了一些收获,从HTML+CSS+JQuery到ES6 + NodeJS + Sass,让我对前端相关的技术有了相对系统的了解。虽然熟悉了前端开发的技术,但是我对UI繁复的设计总是感到吃力,经常花费很多时间就只为调某个样式,很难获得成就感。在一些没有设计稿的情况下,做出的页面很难达到自己的期望的效果,最终没有选择在前端这条路走下去。我觉得做前端还是需要一点天赋的,尤其是独特的审美很重要(当然仅凭后天的学习也可以应付大多数情况)。

技术成长最快的一段时间

距离AWS发布S3已经10年,云计算技术已经相当成熟并得到了大规模的应用。公司开始尝试将现有业务上云,作为团队新人和对“新”技术的热爱,我被领导选中参与上云的项目,从此以后我感觉才真正踏入了软件开发的门槛。在传统数据中心模式下,一些核心架构,如负载均衡,数据库集群,缓存集群,DNS等等都是由资深技术人员掌管,或者由专门的部门负责,作为普通功能开发人员,很难有机会接触到这些技术。但是在云上不一样,所有的的资源都被抽象成可灵活调用的服务,你可以随时创建销毁一台虚拟机,可以轻松搭建可弹性扩展的计算集群。作为资历尚浅的程序员,从接触云计算开始才了解到软件开发的核心技术和架构。在这一阶段,从硬件的虚拟化技术,网络模型到应用架构设计,从虚拟机到容器到Serverless,从单体服务到高可用,弹性扩展,异地容灾,从传统的产品发布运维到CI/CD以及DevOps,软件开发尤其是后端领域这块巨大的拼图在我的脑海里才变得逐渐清晰。了解这些概念,也让我能从代码之外,从网络,计算,存储,部署等不同维度审视一个软件系统。

开始带团队

在经历了多个核心系统的开发与维护之后,我已经成长为部门的核心成员,慢慢的也开始带一些新人。这时候花费精力最多的就是项目管理,项目初期要做需求分析(跟产品经理撕逼),需要设计技术方案,跟项目经理制定开发计划(跟项目经理撕逼,争取开发时间,找老板要资源),拆分开发任务,跟踪项目进度,跨部门沟通协调。当几个项目并行的时候,已经很难有时间做具体的开发工作,通常是当团队成员碰到技术难题或者需要开发系统原型,才会写一些Code,这个时候Review别人的代码远远多过自己写的。做技术的往往就是这样,自觉或者不自觉的会被推着往前,只要个人没有强烈的抵触情绪,性格不是太孤僻,或多或少都会接触到团队管理的工作,往往这时候就是一个技术管理的分界点。根据个人性格,有的人往管理走的多一点,技术的积累相对就会慢下来,有的人偏向于技术,慢慢的可能走向了架构师的岗位。当然,对于一线管理,技术仍然是核心竞争力。做管理的还有个好处是有了一定程度的决策权,在一定范围内,你可以实践自己的想法。从项目管理转到人员管理,这又是一道坎,如何提升团队战斗力,凝聚力,针对不同的团队成员,哪些需要多授权,哪些需要多辅助。管理是一门艺术,我也还在不断学习中...

对技术的持续探索

领导终于决定要搞微服务了,最近带着几个小伙伴又开始了微服务架构的探索。开始学习.NET跨平台,了解DDD,服务注册发现,RPC等等微服务相关技术,了解Kubernetes。虽然公司在新技术的采用上相对谨慎,但终归是秉承开放的思维在一路追赶,这也是我能留到现在的重要因素(实际就是懒~)。对新技术保持积极的态度我觉得是每个开发人员的基本素养,但是也不要掉入新技术的陷阱,技术上没有所谓的银弹能解决所有问题,在实际架构设计中总是受限于各种资源,针对特定的场景选择适合的方案才是理性的架构思维。

 

其中一些话题有机会再深入探讨,大学毕业之后就没写过这么多文字了,就到这里吧~ ~

 

标签:软件开发,回顾,项目,前端,编程,技术,生涯,开发,团队
From: https://www.cnblogs.com/ayang1/p/17227427.html

相关文章

  • 为什么 C# 可能是最好的第一编程语言
    为什么C#可能是最好的第一编程语言 纵观神州大地,漫游中华互联网,我看到很多人关注为什么你应该开始学习JavaScript做前端,而对blazor这样的面向未来的框架有种莫名的......
  • TCP/IP网络编程 -- (十二)I/O复用
    TCP/IP网络编程--(十二)I/O复用如果为了并发使用多进程服务器,代价很大。因为创建进程需要大量的运算和内存空间,并且相互之间的数据交换也要用管道这种相对复杂的方法复用......
  • Python编程规范
    Python编码规范(Google)引自菜鸟:https://www.runoob.com/w3cnote/google-python-styleguide.html分类编程技术Python风格规范(Google)本项目并非Google官方项目,......
  • 程序员职业生涯将在 3 年内被AIGC终结,危言耸听还是未来已来?
    近日,前哈佛大学计算机科学教授、谷歌工程主管MattWelsh在美国计算机协会(ACM)的一个虚拟会议上断言:“生成式AI将在3年内终结编程。”Welsh的断言是来自他体验了ChatG......
  • python - 面向对象编程
    一、对象与过程的概念python中的两大范式:1.面向过程2.面向对象他们两个都不是新的技术,而是一种做事的思维方式1.面向过程:根据业务逻辑从上到下写垒代码面向过程核心是......
  • TCP/IP网络编程 -- (十)多进程服务器端
    TCP/IP网络编程--(十)多进程服务器端10.1进程概念及应用为了提高客户端的平均满意度,通常会使用并发服务器的方法,并且网络程序中数据通信时间比CPU运算时间大,因此向多个......
  • TCP/IP网络编程 -- (十一)进程间通信
    TCP/IP网络编程--(十一)进程间通信进程间通信基本概念因为两个进程间具有完全独立的内存空间,因此通信需要特殊的方式通过管道实现进程间通信管道并非进程的资源,与soc......
  • 回顾集合及其数据结构
    集合1.集合的体系Collection集合分为单列集合Collection和双列集合MapCollection只有增删功能没有改查功能,特点是单列集合所有共性功能,有三种遍历方式(1.迭代器2.增......
  • 【并发编程十九】芊程(fiber)
     【并发编程十九】芊程(fiber)一、前言二、芊程(fiber)1、线程中使用芊程2、获取当前芊程数据3、从芊程切回线程4、创建新的芊程5、删除芊程对象6、在不同芊程......
  • 【并发编程十七】c++实现一个线程池
     【并发编程十七】c++实现一个线程池一、线程池原理二、实现重点三、个人理解四、实验 简介:大多数系统上,若因某些任务可以与其他任务并行处理,就分别给他们......