当前位置:网站首页>How can a programmer grow rapidly
How can a programmer grow rapidly
2022-07-01 19:47:00 【Mischief 1124】
Do more
Do more , Do more than the tasks assigned to you by your leader .
I am here XX When , Responsible for the development of a version , The workload of this version is about 2000 Row or so , But I have to finish this function , You have also mastered all the related functions , Code ( about 10000 That's ok ) I've seen it all , After this version , I am familiar with the whole business related to this version .
After one or two meetings , You find that I know this best , Then it's interesting : Product discussion needs come to me 、 Come to me if you have any problems with the test 、 The boss also came to me for external support ; later , I'm not responsible for the function. They also come to me , Even if I didn't know , I also look at the code or find documents to help them answer …… Finally, I became the of my system “ Experts ” 了 . Although I still do business at this time , Or write business code , But I'm already familiar with the whole business .
The above is just a simple example , In fact, I want to say : If you want to have a chance , First you have to come out of the crowd , If you want to come out , You have to be different , Be different , You have to do more !
How to do more ? We can start from the following aspects :
1、 Familiar with more business , Whether you're in charge or not ; Familiar with more code , Whether you wrote it or not
There are many advantages to doing so , A few simple examples :
More accurate demand analysis , Be able to identify risks at the demand stage 、 influence 、 difficulty
Faster problem solving , Because the relevant business and code are familiar , Be able to quickly determine the possible causes of the problem and conduct troubleshooting
More comprehensive consideration in scheme design , Due to the understanding of global business , Able to design a better plan
2、 Familiar with end-to-end
For example, you're in charge web The background and development , But in fact, the user initiates a http request , It takes many intermediate steps to get to your server ( For example, browser cache 、DNS、nginx etc. ), The server usually goes through a lot of processing to get to the part of code you write ( route 、 Authority, etc ) Many systems or steps in the whole process , It's impossible for most people to participate in writing code , But mastering this knowledge will greatly affect your comprehensive level , For example, scheme design 、 The more valuable technical work of online fault handling requires a comprehensive technical level .
“ systematicness ”、“ Overall ”、“ Comprehensive ” These words look empty , But in fact, they are all the necessary qualities of technical bulls , To achieve such a state , Must be familiar with more systems 、 Business 、 Code .
3、 self-taught
Usually in a more mature team , Because the framework or component has been encapsulated a lot , There are really few technologies used to write business code , But we need to understand “ The only constant is change ”, The framework may need to be improved , Components may need to be replaced , Existing technology may no longer meet business needs , Or you change a company , The new company has neither components nor frameworks , I want you to do it from scratch .
These are opportunities , It's also a challenge , Opportunities and challenges are only allocated to those who are prepared , So in this case, we need to learn more by ourselves , Because there's no time to really wait until you need it .
With java For example , Most business codes are if-else Add a database operation , But we can learn more by ourselves java Knowledge , For example, garbage collection , tuning , Network programming, etc , These may not work for the time being , But when you really need it , No google Just a second , Who has mastered relevant knowledge and skills at this time , Whose chance is it .
Take garbage collection as an example , I usually take time to learn these knowledge , To learn the 1 I haven't used it for years , But then I used it several times , The big problem of jamming is solved every time , And some students , It's been written for years java Code , about stop-the-world I don't know what the concept is , Not to mention optimization .
Especially many open source software , We need to learn by ourselves at ordinary times , for example Nginx、Redis、Mongodb、ElasticSearch etc. , Introduce these technologies at the right time , Can bring great value .
Do better
You know, there's no perfect thing in the world , System and business you are responsible for , There is always something unreasonable and can be improved , these “ unreasonable ” and “ Can be improved ” The place of , They're all monsters of a higher level , More experience can be added after playing . Identify these places , And give the solution , Then propose to the supervisor , Not twice at a time , Mention it a few more times , Just one landing , This is your chance .
for example :
Too much duplicate code , Whether design patterns can be introduced ?
General system performance , Can we optimize ?
At present, it is a single machine , Whether it is better to make it into a double machine ?
The quality of version development is not high , Whether to introduce efficient unit test and integration test scheme ?
The current system is too large , Whether it can be changed to by refactoring and decoupling 3 A system ?
Ali middleware has some systems. I think we can also use , Can I import ?
As long as you think about it , There is always room for improvement ; If you think there's nothing to improve about the system , That means your level is not enough , You can learn more about related technologies , Look at what other companies in the industry do ,BAT How to do it .
I 2013 Deployed to XX, Just started taking over a simple background system , Every day is to cooperate with the front desk to add, delete, modify and check data , It looks completely boring , Is that so? ? If you just do this, it's really boring , But we did a lot after we took over :
decoupling , Split a background into 2 Backstage , Improve scalability and stability ;
Two , Change single machine to dual machine system , Improve reliability ;
Optimize , The original one takes time 5 Hours of interface optimization is time-consuming 5 minute
There are many other optimizations , Later, our group undertook more systems , Later, this group 5 personal , In charge of 6 A system .
Do exercise
When communicating at the professional level , I found that many students are really trying Do more、Do better, But in the process of execution , Almost everyone has the same problem : It doesn't work very well if you don't use it , What do I do ?
for example :
To study the jvm The garbage collection of , But there are few online FGC Caton problem caused by , Even if there is , Restoring business is also the first , It is unlikely that there will be problems online, and then let each student practice , How do you practice this jvm What about your knowledge and skills ?
Netty I also saw , I see Reactor Principle , But I can't participate in Netty Development , How to make yourself really master Reactor What about asynchronous mode ?
I saw 《 High performance MySQL》, But online databases are DBA Managed , The database of the test environment feels that it is configured casually , How can I verify these technologies ?
The framework encapsulates DAL layer , We don't need to worry about accessing the database , How do we understand the implementation of sub database and sub table ?
There are many such problems , Let me share my personal experience here , In fact, that is 3 Word :learning、trying、teaching!
1、Learning
This is the first stage , Reading a book 、google、 Watch videos 、 You can read other people's blogs , But one thing to note is that “ systematic ”, Especially some basic things , for example JVM principle 、Java Programming 、 Network programming ,HTTP Protocol, etc , These basic technologies can't just pass google Or blog learning , My practice is generally to read a complete book and have a comprehensive understanding of , And then through google、 video 、 Blog to find some questions , Or some skills .
2、Trying
This step is the key point to answer the doubts of many students mentioned earlier , The image is “ Ample food and clothing by working with our own hands. ”, That is to try to build some simulation environment , Write some test programs by yourself . for example :
Jvm Garbage collection : You can write a simple test program by yourself , Allocated memory not released , Then adjust all kinds. jvm Launch parameters , In the process of re running jstack、jstat Wait for the order to check jvm Heap memory distribution and garbage collection . Such a program is very simple to write , A simple one is just a few lines , A little more complicated is just dozens of lines .
Reactor principle : Really try to write a Reactor Mode Demo, Don't think it's hard , The simplest Reactor Mode code quantity ( Including comments ) No more than 200 That's ok ( You can refer to Doug Lee Of PPT). After writing it yourself , Go and have a look netty How do you do it? , A comparative understanding is more profound .
MySQL: Since the configuration on the cable can refer to , That can directly let DBA Send us the online configuration ( Be careful to remove sensitive information ), Direct learning ; And build one of your own MySQL Environmental Science , Start with online configuration ; You know, many students have used it for many years MySQL, But even a simple MySQL The environment doesn't work .
The framework encapsulates DAL layer : You can use it yourself JDBC Try to write a simple implementation of sub database and sub table , Then compare with the implementation of the framework , See what the difference is .
Use browser tools to view HTTP Cache implementation , Look at different kinds of websites , Different types of resources , How to control the cache ; You can also use it yourself Python Write a simple HTTP The server , Simulation returns various HTTP Headers To see how the browser reacts .
There are many ways , Here is not a list of , Simply speaking , Is to really try what you have learned , To understand more deeply , There is an Indian proverb :I hear and I forget. I see and I remember. I do and I understand, and “ try ” In fact, it can be relatively simple , Many times we can do it ourselves .
Of course , If it can be used in practical work , It works better , After all, the actual online environment and business complexity can not be simulated by writing a simulation program , But such opportunities are not available , In most cases, we really have to simulate by ourselves , Then wait until the real business needs to be used , It's easy .
3、Teaching
Generally speaking , after Learning and Trying, Can master 70% about , But to really master , I think we must be able to make it clear to others . Because when I was talking , We need to systematize a knowledge point , You also need to consider all kinds of details , This will prompt us to further think and learn . meanwhile , After speaking, people who look or listen can have different understandings , Or there are new additions , This is equivalent to continuing to improve the whole knowledge and skill system .
There are many such examples , Including when I write my own blog, I often encounter , I thought I had mastered it all , But as soon as I wrote, I found that many points were not taken into account ; When training in the group, we often see , Some students wrote it PPT, But when you talk , Let's ask , Or a discussion , You will find that many points have not been made clear , Or some points are actually misunderstood . Write PPT、 speak PPT、 Discuss PPT, Go through the whole process , Basically, it's more comprehensive to master a knowledge point .
summary
It's a wonderful dream to be a tech bull , But it takes a lot , Whether it's Do more still Do better still Do exercise, It takes time and energy , This process can be hard , It can also be boring , Here I would like to emphasize : What I mentioned earlier are all methodological things , But what really matters is , In fact, it's our enthusiasm and interest in technology !
边栏推荐
- ffmpeg常用命令(二)
- Interview question 16.16 Partial sorting - Double finger needling
- Ffmpeg common commands (2)
- 直播HLS协议
- servlet知识点
- Why has instagram changed from a content sharing platform to a marketing tool? How do independent sellers use this tool?
- Procédure de mesure du capteur d'accord vibrant par le module d'acquisition d'accord vibrant
- GetMessage底层机制分析
- optaplanner学习笔记(一)案例Cloud balance
- 微信小程序 navigator点击后有阴影 ,去掉navigator阴影效果
猜你喜欢
Regular expression =regex=regular expression
GC garbage collection
Flutter 实战-快速实现音视频通话应用
Axure does not display catalogs
Wireshark packet analysis TCP, FTP
GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速
对象的创建
Interview questions for audio and video positions in Dachang -- today's headline
servlet知识点
How to correctly use vertx to operate redis (3.9.4 with source code analysis)
随机推荐
What is the essential difference between Bi development and report development?
uni-app商品分类
博途V16 获取系统时间转换成字符串
Basic knowledge of audio coding and decoding
Thesis reading [distinctive late semantic graph for video capturing]
墨天轮沙龙 | 清华乔嘉林:Apache IoTDB,源于清华,建设开源生态之路
Technology T3 domestic platform! Successfully equipped with "Yihui domestic real-time system sylixos"
Salesmartly has some tricks for Facebook chat!
Crunch简介、安装,使用Crunch制作密码字典
Bao, what if the O & M 100+ server is a headache? Use Xingyun housekeeper!
Redo和Undo的区别
SIP protocol of gb28181
JVM内存模型
Collation of open source protocols of open source frameworks commonly used in Web Development
JVM memory model
今日群里分享的面试题
Compile ffmpeg source code with msys+vs2019 under win10
Battery simulation of gazebo robot
使用 Kibana Timelion 进行时间序列分析
HLS4ML进入方法