I graduated from Fuzhou University of Technology in 2019 with a major in Electronic Information Engineering. Initially, I had no understanding of programming concepts such as objects, classes, and variables, and struggled with implementing various logics. My academic background covered both hardware and software aspects, including analog and digital electronics, object-oriented programming, and embedded systems. I found myself less interested in circuits initially, and I didn't dedicate enough effort to learning assembly language for hardware programming. This posed additional challenges for me, especially as someone with zero prior experience. Eventually, I opted to focus on learning Java for object-oriented programming.
My first job was at Fuzhou University Automation Technology. The technology involved was relatively simple, and I believe anyone with some programming knowledge could handle the tasks. However, this job proved to be a valuable experience for me, as it served as a gateway to my career. Over time, through hands-on experience, researching information, and solving problems at work, I significantly improved my technical skills. After becoming familiar with the job over a year and a half, I started feeling a sense of confusion. The technology used here seemed too basic, and continuing in this direction was not what I aspired to. Issues that could be solved programmatically were being addressed using stored procedures and triggers, and I began to feel a disconnect.
Later, I joined a company specializing in developing SRM (Supplier Relationship Management) and CRM (Customer Relationship Management) systems. Here, I delved into technologies such as Spring Boot and Spring Cloud for microservices. I gained insights into service registration using tools like Nacos, incorporating dependencies for inter-service communication, and implementing message queues with RabbitMQ in cross-platform service calls. The technical aspects here were not overly challenging, primarily focusing on database design and utilizing Redis for synchronized locks to prevent data inconsistency. In the CRM and SRM domains, the emphasis was more on business logic, and a significant amount of my time was devoted to streamlining these processes. I often delved into understanding aspects of permission architecture, such as menu-role-user permissions, table design, and issues related to button permissions. Initially, I found that the frequent changes in requirements led to repeated code modifications, resulting in various issues. This was especially evident when altering code written by others. The most daunting aspect was dealing with jQuery code within components, where diverse implementation constraints contributed to a chaotic codebase. Everyone added their own pieces, leading to code that was difficult for anyone to comprehend. Additionally, conflicts in permissions were not being enforced correctly, contributing to a substantial waste of time. When taking over someone else's code, I believe it's essential to extract and optimize each functionality's code separately, rather than making direct modifications. This approach can alleviate the burden of subsequent optimizations, especially when dealing with extensive permission and business logic considerations.
Finally, I joined a company specializing in blockchain technology. Initially, I lacked confidence in this field due to concerns about its instability and risks, which are commonly discussed in the industry. I won't dwell on these aspects as I believe I lack the qualifications to judge. However, working here has been incredibly fulfilling. The team is dedicated to exploring new technologies, constantly optimizing code, and refining existing codebases. Whenever a new technology or project emerges, everyone dives into examining the source code and references implementations. I thoroughly enjoy this collaborative and knowledge-sharing atmosphere. My first project here was in the realm of NFTs (Non-Fungible Tokens). While I may not fully grasp the inherent value of NFTs, it seems to stem from their uniqueness and scarcity, which contribute to their perceived worth. Additionally, tokens serve as virtual currencies for creative works, akin to how each country can issue its currency. The ERC20 technology enables individuals and organizations to issue tokens, with the value ultimately determined by the pool created by the issuer of those tokens. As I delved into the development and rise of Web3, along with various financial applications, I conducted some tests and familiarized myself with the processes by acquiring and using some coins. GameFi, where NFTs act as the core of games and tokens serve various purposes, intrigued me. NFTs generate daily income tokens, although I haven't personally engaged in this, I've gained some understanding of the concept. Moving forward, it became imperative to explore decentralized exchanges (DEX), with my initial exposure being to Uniswap, followed by PancakeSwap. Understanding these aspects is crucial, including on-chain blocks, transactions, and related information.