Objective:
This article applies to all developers, programmers and programmers who have been in this industry for a few years to make breakthroughs in their careers (or you may have just started, but want you to see your path). This article is for those who have a simple desire: you want to be a senior developer and want to stand out in your field. After reading this article, you will get a set of paths with a list of the best resources for you to upgrade and become an advanced developer.
Disclaimer: As with everything in life, you can set your own path at any time. Although this is not the only way, it is a way that I have found in my career and through many conversations and interviews with people I think are senior and respected programmers in the community over the past year. I have accumulated all the commonalities of this article. All of this is more than just an article on how to be a better developer. This is a guide to how you can use efficient and practical tools to optimize your time, so you get the most out of your life. You can do this study anywhere in the future.
As a developer, there is a learning atmosphere with a communication circle is particularly important, this is a My iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside test, interview experience, discuss technology, we exchange learning and growth! Hope to help developers less detours.
What do we want?
1, we all try to do a good job. The specific content of the statement may depend on the individual. However, most people can agree on some common things:
2, we do not want to experience a life that is considered "incompetent",
3, we want to be respected by our colleagues.
4, we want to feel smart and do it.
5, we want to feel appreciated
To achieve these goals, we cannot just stay on our ability and expect things to happen. Especially in the field of programming, technology is changing, we have a very large amount of information, we want to focus on growth and learning, rather than exhausted. As more and more developers get out of college and training camps, we need to keep our skills sharp, and the way to differentiate ourselves is to stay smart and productive while learning. Talk a lot, let's sneak in together. We will continue to try and take the best approach.
What is an advanced developer?
As a multi-lingual programmer who can write code in 10 different programming languages and build its own version, it doesn't make you a senior developer (though you're very talented). This is because senior developers are the people who bring incremental benefits to the company. It is a person who can make the people around you better and be able to realize and continuously create business value with a long-term vision. You can learn about all the powerful programming technologies around the world, but if you can't communicate with your team, or you can't focus on delivering real value to your customers, you're not a senior developer. This is an important point: what value do you bring to your company/Startup/business, and if you are one of the few people who can bring an order of magnitude (some people like 10 times times the idea) value for your company or business, then you are a senior developer. Senior developers are not just another position, but are able to leverage your experience to deliver real benefits to stakeholders.
How do I become a senior programmer? Get it.
This is the part where all of you have been waiting (or what I imagined ...). Maybe no one read this ... In this case, I will always talk to myself. Let's take a closer look and see if we can get everything done. Take some time to learn about each topic by following the resources below. If you can actively study the following skills, you will be far ahead of anyone else. I call this the developer edge: There will always be more experienced people in one area, but you can work smarter and accumulate different skill sets in a more effective way to separate you. Not only does this make you a better developer, it also increases your overall well-being, because you are providing real value to people.
One of the things that is often overlooked in learning is that you need to focus on something and focus on something. However, this is not the way of life. Life is very rare, you only need a skill. Especially in the field of change like technology (who knows what machine learning engineers will accomplish in 5 years?) ), you need to have a variety of convertible skills, which translates into adaptability.
These are the 6 core skills you need to be seen as an advanced developer:
1. Technical skills
This is usually the first trick most people think of. Hope that through this you believe it is a small part of a larger pie. Don't get me wrong, you really need this skill, and you can't forge it. However, you can intelligently focus on what you care about. Advanced developers take the time to understand why technology. Why does this problem exist? Why does this framework exist? What problem does the library solve? As a developer, you need to be aware of all the tools and ideas that benefit the development lifecycle and choose the tools that maximize the benefits of your project. Instead of focusing on each new version of this super-bizarre testing framework, they try to focus on the pros and cons of each test framework when trying to solve real-world problems for the company. They ask, "What can be improved in our ongoing process to provide better products?" ”
They also understand how things are connected. In order to start thinking like this, mind mapping is a good familiar tool. It is essentially a tool that can be used to push learning to a higher level. Mind mapping helps your brain connect with different ideas and techniques.
For example: If I am an iOS developer, once you have mastered the tools and technologies in the industry, you need to figure out what issues the product will face when it expands, and when premature optimization is a bad thing. By mastering this relationship in all of these areas, you can focus your company's resources on the most important things through a broad perspective rather than a narrow focus.
If you're coming out of a training camp or you don't have a computer science degree, you need to start learning about data structures, algorithms, and other computer science topics. Why? Because despite the changes in the framework and technology, the main principles of computer science (mostly) remain the same. By understanding these higher-level topics, you can see again that most software problems and good practices are often constant in different languages and times. This book (Rob conery) and this book (Gayle Laakmann McDowell) may be the best tool I've found to improve your skills. Although they are only superficial, it will lay the groundwork for future learning.
Start listening to podcasts such as the software engineering daily, so you can learn about the current issues and future prospects across the industry.
Finally, read this article from a purely technical point of view for some tips.
2. Team Skills
This is a technique that is often overlooked. How do you work with team members? Do you feel angry and comment on PR comments and contribute to it? Or are you considerate, co-working and encouraging your team members? Senior developers don't have a big ego. They know they are good and don't need to prove themselves to others. Instead of writing code to show off skills that other team members can't read, they write clean, simple code. They are willing to help others, they are willing to ask questions when they do not know something.
This is where EQ comes in. Social psychology is an important tool for improving this skill, and there is nothing better than "how to win friends and influence people". Remember: How can you make the people around you better? If you have 5 people on your team, then 1 + 1 + 1 + 1 + 1 should be greater than 5 because you can make the people around you better (now I get evil eyes from the math purists ...). )。
If you are a participant in any project, or any team you participate in, then you will be able to get along with your teammates and let others work together, and you are far ahead of most people. You can also make life easier for managers, supervisors, Scrum masters, and CTO. Those who are promoted, and more importantly, are those who offer the best value to the company.
3. Customer/user Skills
Are you able to talk to customers or users and have a clear understanding of their needs? Do you understand the problems they face when they give you some advice? An advanced developer is a person who can stand alone with the customer and can be a good listener, and then make recommendations for the best steps to move forward. They are very good at forming relationships and they are not going to push their opinions to customers. They understand that the goal is a non-zero-sum game where both customers and developers can benefit from the interaction.
Finally, you need to be able to explain complex programming concepts to non-technical people. Start developing this skill by watching the big God break down complex topics. While they are coaching difficult topics, you can observe some of the similarities between them.
4. Growth skills
Senior developers are learning new things every day. That doesn't mean they spend 14 hours a day sitting in front of the computer reading the article. They are more efficient than this. They have been looking to talk to other developers, ask questions, or explore new topics. They don't focus on a skill set. You can be the best person in the world when doing one thing, but if you don't know the whole range or have a general understanding of what you're dealing with, then you're no longer the best.
They have a growing mindset (believing that intelligence is malleable) and they believe in conscious practice. They understand that learning everything is impossible, they choose to spend their time on the things they like and the most important things.
They don't just say, "Oh, I hate this!" "Most of the time, people who say these things hate something because they don't fully understand it." For example, don't just say "I hate SWITF." Only some of the developers use SWITF "and are famous. "SWITF has played an important role in iOS development," says senior developers. Their views can be changed because they like to learn from others and try new concepts before they decide to "hate" something.
5. Sales/Interviewing Skills
Senior developers are able to position themselves as senior positions because they can communicate and sell to people who make these decisions. You can see the needs of your employer or business, and you will be able to instill in them the confidence that you are a problem-solving person. You have faith, but modesty. Senior developers are also confident enough to take on these roles and be able to withstand stress. They also know that if you never ask the answer is always negative, then they will ask for promotion or challenge their role, because they think they are suitable candidates for the job. While sales and negotiation may be obscure to some people, this is a valuable skill you need to master. There's a great article. While it talks about pay negotiations, some of these principles can be applied to other situations.
6. Community Skills
Senior developers contribute to the developer community, whether it's technical lectures, presentations at parties, contributions to open source, or even writing articles. They are the people who share information with the industry. They are not confined to a closed box in the workplace, but communicate with people in other communities to broaden their horizons. It's kind of like traveling: the more cultures you meet and talk to, the more you understand the similarities and differences between people, and the more you begin to appreciate it.
Last thing.
If you are able to work actively with the above skills, you will immediately be passionate.
I have left the most important topic in this list: what you like to do.
If you don't like learning about computer science and software development every day, you'll never be a senior developer, because you won't have a better motivation in the long run. If you are so good that they can't ignore you, you know that passion has been over hyped. The real passion comes from your mastery of a skill. You have tried to become a leader in the field of mastery. You have mastered these skills, and now the respect and benefits you provide to others have prompted you to become better and more so to feel more like this. That's how you develop your passion for work.
Conclusion
If you've learned to code and are looking for the next step in your career, then you need to think differently. How can you stand out from the crowd? How can you grow? How can you help people solve real problems and provide value? You will become a senior developer if you don't do simple things. You do the things that drive and challenge your mind and comfort level. You have to learn, and you have to adapt to it one day at a time, just as you wrote the first piece of code. Each step is very small, but in life, one step will become a few kilometers.
Never stop reading, never stop learning, but also know what is your precious time and what is not valuable.
As a developer, there is a learning atmosphere with a communication circle that is particularly important this is my iOS communication group: 638302184, whether you are small white or Daniel Welcome to settle, share bat, a inside questions, interview experience, discuss technology, we exchange learning and growth!
30KiOS Programmer's Brief: How to become a senior developer