一个人的职业生涯中,换几家公司,跳几次槽是很正常的事情。进入新公司后,几乎都有一个适应期。而且很多公司根本不会给太多的适应期,几乎就是要立即挑重担的。
在面对新的环境,新的岗位,新的挑战,大家难免都会有焦虑和不适应, 怎么快速度过这个适应期,迅速调整自己的心态和状态来适应新的挑战。这里从软实力和硬实力两方面来探讨。
有人的地方就有江湖,很多程序员不善于交际,但是人在江湖,身不由己。良好的人际关系是做好任何事情的前提。 入职第一天,和同事打过招呼后,要用心记住他们的名字,下次见面,主动打招呼的时候,先叫名字,对方会感受到你对他的尊重和关注,会对你的印象深刻,好感度也直线上升。 多参加一些团体活动,尽量和大家一起吃饭,可以很快的建立起同事间的情感。你可以想办法多和老员工聊聊天,去了解一下公司的人事结构、业务情况等。这也许可以从侧面了解一些人。可以不搞办公室政治,但是也避免别拉下水。 不管是否工作交集有多少,都要学会微笑示人,微笑是化解人和人之间的距离感的最佳武器。
保持一个谦虚学习的心态 到了新环境中,你不知道的信息太多,判断失误大有可能。 不要自我感觉过于良好,觉得自己超厉害,觉得周围的人都能力平平。聪明的人都懂得韬光养晦,能看清自己的位置,摆正自己的心态。 如果所以自视过高,缺少敬畏之心。当这种潜意识存在的时候,你一定会在各种事情的细节中体现出来,总有一天会栽大跟头。职场中最忌讳就是贬低别人来抬高自己。
少一些抱怨,多一些行动 没有公司是完美的。小公司,大公司,都有一堆恶心的代码,过时的文档,不尽人意的流程。进入到一个新团队后,不要跟大家抱怨。就算你说得十二分的正确,别人只能把你的善意提醒,当成是负面能量,没有人会主动去改变什么,特别不是份内的事情的时候。如果你能在完成自己本分的事情之余,能将一些事情弄完美,也许会有人看见。
认真完成每一个任务,不要贪多求快 如其把三件事情做到70分,不如把一件事情做到90分,甚至100分。你个人的自信和别人对你的信任,是建立在一个又一个高分任务的基础上的。每个分配到手的任务,你都能做到超出预期,那每个任务都能增加你leader, 周围同事对你的信任,增强你的口碑。反之,每件事情,都只做到及格线,就给大家留下不靠谱的印象了。
专业是职场的通行证,任何时候,专业能力强,是让你能融入一个团队的必备要素。入职新工作,你能快速掌握岗位的基本要求,能快速了解公司的产品种类,一切工作都能快速上手。当你发现自己不熟悉公司的技术栈时,得自己想办法补起来。如果发现自己的不足,努力追赶。
快速熟悉产品
为了快速的融入产品研发,需要自己从宏观和微观去把控产品或项目。产品的基本功能,有什么功能,达到什么目的,现在好坏,没事的时候,自己多体验一下产品,多看看原型图,设计稿。疑惑的地方,可以先记下来,说不定后面就迎刃而解。
快速熟悉流程和架构
可以通过文档或者同事交流,逐渐了解一些组织架构,跟你工作交接的人,他们的角色,脾气和秉性。 产品开发流程,测试流程以及上线流程,是否是敏捷开发模式,迭代周期,是否A/B testing等。 例如: a.开发工具 b.开发环境、调试环境、测试环境(公司的开发服务器、调试服务器); c.编程规范以及产品开发要求 d.相关文档; e.源码管理工具等;
了解软件系统框架。
系统是集中式系统,还是分布式系统? 是否用了微服务? 用的是何种数据库系统? 接口服务用的是何种组件? 缓存系统用的是redis还是memchache? 消息队列实现方式 如何实现性能和日志监控? 如何实现服务器的调度和管理?
了解业务
在做设计研发,不了解业务,很多时候是没法开展工作的。如果业务复杂,也没有文档,而且没有人给你讲解,怎么办?只能自己摸索了。
了解业务的的好的方法,是了解接口和数据库,不管何种业务,大部分是要调用接口,存储数据的。下面就从sqlserver以及mysql来尝试去了解业务了。
先看sql server
也许我们知道某个模块或者某个业务,常听人讨论某个业务的名字,我们可以简单去数据库里查询业务对应的表。 模糊查询表的名字
SELECT * FROM sys.objects WHERE name LIKE '%Members%' AND type = 'U'
select name from sys.objects where type='U' and name like '%session%'
然后我们去看看库, 查询表在哪个库中
declare @tableName nvarchar(255),@sql nvarchar(1000)
set @tableName=N'MemberSession'
set @sql=N'use ? if exists(select 1 from sysobjects where id=object_id('''+@tableName+''')) print ''?'''
exec sp_msforeachdb @sql
查询库的信息
查询有哪些库
SELECT Name FROM Master..SysDatabases ORDER BY Name
查询某个库中有哪些表:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES
某个库中的表信息
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID('Members')
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
如果知道一个字段,但是不记得在哪个表中, 可以用以下查询字段在哪些表中
SELECT b.name as TableName,a.name as columnname
From syscolumns a
INNER JOIN sysobjects b ON a.id=b.id
where b.type='U'
AND a.name='memberid'
查询表有哪些字段:
最简单:
Select Name FROM SysColumns Where id=Object_Id('Main.dbo.Members')
简单:
USE ET_Main
SELECT syscolumns.name,systypes.name,syscolumns.isnullable, syscolumns.length
FROM syscolumns, systypes
WHERE syscolumns.xusertype = systypes.xusertype AND syscolumns.id = object_id('Members')
复杂:
USE ET_Main
DECLARE @tableName NVARCHAR(MAX);
SET @tableName = N'Members'; --表的名字!!!
SELECT CASE
WHEN col.colorder = 1 THEN
obj.name
ELSE
''
END AS 表名,
col.colorder AS 序号,
col.name AS 列名,
ISNULL(ep.[value], '') AS 列说明,
t.name AS 数据类型,
col.length AS 长度,
ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数位数,
CASE
WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN
'√'
ELSE
''
END AS 标识,
CASE
WHEN EXISTS
(
SELECT 1
FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik
ON si.id = sik.id
AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc
ON sc.id = sik.id
AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so
ON so.name = si.name
AND so.xtype = 'PK'
WHERE sc.id = col.id
AND sc.colid = col.colid
) THEN
'√'
ELSE
''
END AS 主键,
CASE
WHEN col.isnullable = 1 THEN
'√'
ELSE
''
END AS 允许空,
ISNULL(comm.text, '') AS 默认值
FROM dbo.syscolumns col
LEFT JOIN dbo.systypes t
ON col.xtype = t.xusertype
INNER JOIN dbo.sysobjects obj
ON col.id = obj.id
AND obj.xtype = 'U'
AND obj.status >= 0
LEFT JOIN dbo.syscomments comm
ON col.cdefault = comm.id
LEFT JOIN sys.extended_properties ep
ON col.id = ep.major_id
AND col.colid = ep.minor_id
AND ep.name = 'MS_Description'
LEFT JOIN sys.extended_properties epTwo
ON obj.id = epTwo.major_id
AND epTwo.minor_id = 0
AND epTwo.name = 'MS_Description'
WHERE obj.name = @tableName --表名
ORDER BY col.colorder
查询某个库中,表的主键和外键被谁引用:
USE Oboe
SELECT 主表名=object_name(b.rkeyid)
,主键列ID=b.rkey
,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
,外键表ID=b.fkeyid
,外键表名称=object_name(b.fkeyid)
,外键列ID=b.fkey
,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade')
,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade')
FROM sysobjects a
join sysforeignkeys b on a.id=b.constid
join sysobjects c on a.parent_obj=c.id
然后尝试各种表的查询,结合接口和产品,就可以慢慢熟悉一些业务了。
如果是在mysql中: 一、简单描述表结构,字段类型
desc tabl_name;
显示表结构,字段类型,主键,是否为空等属性,但不显示外键。 二、查询表中列的注释信息
select * from information_schema.columns
where table_schema = 'db' #表所在数据库
and table_name = 'tablename' ; #你要查的表
三、查询列名和注释
select column_name, column_comment from information_schema.columns where table_schema ='db' and table_name = 'tablename' ;
四、查看表的注释
select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'
五、查看表生成的DDL
show create table table_name;
六、查询库下所有的表名
SELECT table_name FROM information_schema.tables WHERE table_schema='库名'
七、模糊表名查询
SELECT table_name FROM information_schema.tables WHERE table_schema='库名' AND table_name LIKE '表名前缀%'
查看当前使用的数据库 select database();
查看数据库使用端口: show variables like 'port';
查看数据库编码: show variables like 'character%';
查看数据库的所有用户信息: select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user;
查看某个具体用户的权限: show grants for 'root'@'localhost';
查看数据库的最大连接数: show variables like '%max_connections%';
查看当前打开的连接的数量: show status like 'threads_connected';
查看数据库当前连接并发数: show status like 'Threads%';
查看数据文件存放路径: show variables like '%datadir%';
复制表结构:create table table1 like table;
复制数据:insert into table1 select * from table
机器授权:
grant select on . to 'reader'@'%' identified by '123456' WITH GRANT OPTION
flush privileges
修改表结构
alter table competitor_goods add sku_id bigint(20) unsigned DEFAULT NULL COMMENT '商品销售码';
SHOW DATABASES //列出 MySQL Server 数据库。
SHOW TABLES [FROM db_name] //列出数据库数据表。
SHOW TABLE STATUS [FROM db_name] //列出数据表及表状态信息。
SHOW COLUMNS FROM tbl_name [FROM db_name] //列出资料表字段
SHOW FIELDS FROM tbl_name [FROM db_name],DESCRIBE tbl_name [col_name]。
SHOW FULL COLUMNS FROM tbl_name [FROM db_name]//列出字段及详情
SHOW FULL FIELDS FROM tbl_name [FROM db_name] //列出字段完整属性
SHOW INDEX FROM tbl_name [FROM db_name] //列出表索引。
SHOW STATUS //列出 DB Server 状态。
SHOW VARIABLES //列出 MySQL 系统环境变量。
SHOW PROCESSLIST //列出执行命令。
SHOW GRANTS FOR user //列出某用户权限
业务如果复杂,不是一朝一夕的就能掌握的,如果工作中常常有意识的去思考一下,结合自己的实践,多看看接口,多查查数据库。跟同事多交流,慢慢的,也会对业务有所了解了。
融入一个新的团队中时,肯定会遇到很多困难,如果有人交流,那是最好不过的了。如果没有,唯有自己不断的学习和实践,才能不断提高。
来源微信公众号:python爱好部落