How Do I Learn to Be a Better Developer
In July 2023, it has been 5 years since I graduated from college. Over these years, I have held 2 jobs which have provided me with significant growth opportunities. Here are some key points helped me a lot.
As a developer, it is essential to have a deep understanding of the product you are developing. Understand the product’s features and objectives, clarify the problems the product solves, and its positioning in the market. Only by doing so can you better understand user needs, grasp the core functions and key points of the product, and provide constructive suggestions for its development.
I still remember when I first changed jobs in 2021, after the new employee learning period, I was guided by a senior colleague to complete the requirements. Because it was a new environment, many things were unfamiliar. The context of the requirements was not understood, and doing these requirements felt like executing a fixed program on an assembly line, without knowing why it was done or what its ultimate effect would be.
When you become familiar with the related processes involved in the requirements, you will have a higher perspective to look at them. You will know the effects of these changes and what impacts they may have, and start considering compatibility/error scenarios.
Some product managers I have worked with would thoughtfully include various prototypes and flowcharts in the requirements documents. Text descriptions can be a bit dull, but diagrams are of great help. When there are no flowcharts in the product documentation, and I feel very unfamiliar with it, I try to understand and draw the flowchart myself to clarify what it should do.
Establishing good communication and collaboration with product managers is crucial to becoming a qualified developer. Product managers are responsible for defining product requirements and planning the product’s development direction. Work closely with product managers, understand their needs, and ensure that development work aligns with the product’s vision and goals. At the same time, actively participate in discussions and provide technical advice, working together with product managers to drive product progress and innovation.
According to the user, let’s change the theme of the phone case!
This was a real case that was popular online a few years ago. Indeed, when product managers come up with some whimsical ideas, it may seem a bit inexplicable because usually at this point, we have already determined its feasibility. However, the perspective of product managers is different from that of developers. Their responsibility is to come up with all sorts of wonderful ideas, and then it’s up to the developers to implement them. Whether the requirement is reasonable or not, each product requirement should go through feasibility analysis and technical solution discussions to ensure that it can be implemented and is worth implementing.
Sometimes, when the product gives me a requirement and I think there could be some additional features or some part of the requirement is unreasonable, I seek the opinion of the product manager and communicate to reach a conclusion. In the process of requirement development, it is common and necessary to communicate repeatedly with product managers. This can greatly avoid situations where the project goes off track at the end, leading to requirements not being deployed properly or requiring a lot of additional work.
In software development, design is a critical component. Collaborate closely with designers to understand their design concepts and considerations for user experience. Understand the tools and design principles used by designers to help better implement their designs and provide valuable suggestions for the appearance and user interface of the product. At the same time, learn from designers and continuously improve your design skills.
Understand the designer, become the designer. Haha 😄 A frontend developer who can’t slice images is not a good frontend developer.
In my two job experiences, the following slicing tools were used with designers:
- Photoshop (Cutting images, drawing reference lines)
- lanhuapp (This one is quite handy)
- Adobe XD (This one is also good)
- Figma (Currently using, very user-friendly)
The tools are becoming more and more user-friendly. Now you can directly adjust the view elements on the page, group/ungroup layers, export images in various formats, and even copy the style code directly from the design file. There are also various plugins available to generate frontend/client-side code.
QA plays a significant role in the product release process, as testers always try all sorts of methods to find flaws in your product. As a developer, it is important to understand the testing process and methods, write reliable test code, and actively participate in testing work. Collaborate with the testing team, understand their needs and testing strategies, and promptly fix and resolve issues found during testing. Through close cooperation with testers, you can better understand the stability and reliability of the product and provide a better user experience.
Sometimes, testing can be quite challenging, as it feels like testers are intentionally finding faults in the product. For example:
- This button can be clicked twice in a row, which is not reasonable.
- The scrolling is laggy when swiping quickly.
- I switch to the background, switch switch switch.
- I switch to airplane mode, switch switch switch.
- I switch to low power mode, switch switch switch.
- I open it on an iPhone 5, would you dare?
These are a few common testing scenarios. Their goal is to ensure that the product can function properly in various environments and for various users. Through feedback from testing, developers can strengthen aspects such as performance, compatibility, and error prevention, minimizing the occurrence of abnormal situations and preventing exploitation of product vulnerabilities.
Users are novices; they don’t need to know how your product logic works, they just need a product with the simplest learning curve.
Understanding user needs is crucial to becoming a qualified developer. Through communication, observation, and analysis of user behavior, deeply understand user needs and pain points. Place users at the center of product development, pay attention to their feedback and suggestions, constantly improve the product, and provide a better user experience. At the same time, learn to interpret data and use data analysis and user feedback to guide product optimization and upgrades.
Continuously receiving positive feedback is an important motivation for becoming a more qualified developer. Actively participate in team discussions and exchanges, share experiences and techniques with other developers, learn and grow together. Also, actively seek feedback and suggestions from users, understand their satisfaction and needs, and continuously improve and enhance your own skills and abilities. By receiving positive feedback, you can better develop yourself and contribute to the success of the team.
When I get compliments from others, it would make my day and things are just become more easy and joyful, I believe that giving compliments to others would make others day too.
In software development, maintaining expectations is crucial.
The software lifecycle typically has 6 stages:
- Feasibility study
- Requirements analysis
Usually, we have certain expectations for our products, and these expectations differ from different perspectives. For example, from the perspective of a product manager, their expectation is how much revenue the product can generate after it goes live; from a technical development perspective, the expectation is to judge whether there will be possible errors when the product runs online. By analyzing these expectations, we can formulate measures to achieve expected goals or prevent errors from occurring.
That’s all, thanks for reading.