I’ve been reading a book on software team management, Books:, by two veterans of the software industry, and there’s a chapter on how to understand programmers.
Understanding programmers is no easy task, even if you’ve been one.
In this paper, we provide a variety of perspectives or interesting, paraphrase the, pastime for discussion, there are actually want you to realize the fact that the difference between programmers really very big, only people who know the program design can fully understand this, and most of the top managers of all the programmers are alike, And more enterprises treat programmers as tools and resources.
Programming jobs
This is actually a common and relatively simple way to understand a programmer, which is to analyze the types of programming work they can fall into:
- Client programmer
- Server side programmer
- Database programmer
- Web developers and other script writers.
There are a lot of special programming jobs that are hard to categorize. But in general, these four types cover the vast majority of programmers in the world, and each has a different problem solver, a different tool, and a different product focus. While there are talented programmers who can do all the work (they are now called full-stack engineers), there are more people who can do one or the other at best.
Client programmer
Most programmers are client programmers. The term client here refers to the location of the program, usually the user’s terminal device. Personal Computer: Mobile devices iPhone, iPad and other consumer electronic devices have given rise to countless “clients” Office, spreadsheet processors, game consoles, and all the wonderful apps that we now have to live with. Make a hard app for your favorite app.so).
Why are these programmers categorized as client programmers? Because they have almost complete control over their own resources in the studio. The scope of the client programmer’s tasks is usually limited and the product to be delivered is clear. As a result, the client programmer/team’s job responsibilities will be clear and depend on little more than the data coming in from the server.
Server side programmer
The server side not only indicates the location of the program, but also indicates that the program is typically written to transmit information and data to remote clients. The server is often located at a distance from the terminal device, and most (almost all) programs must deal with multiple behaviors from multiple clients simultaneously, making development more complex than programs developed by client programmers. Further complicating server-side development is the ability to write and deploy server programs without changing the basic structure for new machines and resources (many technology stacks and organizations are now addressing these issues).
In the Age of the Internet, the client/server side has become synonymous with a Web browser interacting with a Web server somewhere. Developing a browser on a client is complex, but creating the ability to process tens of thousands of end user requests in parallel is proving even more complex. The construction of such a system is usually inseparable from the work of interface forwarding, data transmission and synchronization between various server systems and programs. That’s what the Server side programmer does.
Database programmer
This type of programmer is relatively rare nowadays :smile:. Database programmers are different from client – or server-side programmers. They use completely different programming languages and tools (usually provided by the corresponding database domain) and write programs that give very different results. Database programmers typically organize, store, and extract data used or produced by terminals or applications. Today’s big data engineers fall into this category.
Over the years, the differences between different databases have decreased, and data programmers have been able to perform relatively “smooth” experiential migrations. Aside from “big data” technologies like Hadoop, the most common database systems are still relational databases, including Oracle, Microsoft SQL Server, IBM DB2, MySQL, Postgres, etc., and some NoSQL databases. Most of the key concepts in these systems are the same: SQL statements (and equivalent apis) are used to access data. Thus, one might think that an expert in one of these systems might be an expert in the other. For now, however, practical experience with a specific database is still required, beyond the most basic database operations.
There’s a good analogy in the book that compares database programmers to car mechanics. You might ask any mechanic to change a tire or wiper, but you wouldn’t ask a mechanic who didn’t know anything about Porsche to do something important on a Porsche. The same goes for database programmers. Alibaba nurtured many great DBAs during Oracle’s time, but that is a thing of the past.
Web developers and other script writers
Unlike other programmers who use core programming languages such as C, C++, C#, Java, Ruby, Go, Web developers typically use formatted HTML languages (HTML, XML, CSS, ASP/JSP) and script interpretation languages (Perl, PHP “best in the universe,” JavaScript “rule the world :)”). Of course, some Web developers also use higher-level tools (such as Flash, Dreamweaver, or Clod Fusion) to simplify scripting and deployment.
What this means is that Web developers can benefit from formal computer science training, but don’t rely as much on formal computer science training as other programmers.
My humble background is management.
But the trend toward more computing power on end devices and more processing moving from servers to browsers via JavaScript and Ajax-based frameworks (such as the Current NodeJS stack) is having a profound impact on Web development. Browser compatibility issues have long been a vexing problem for Web developers, and they are exacerbated by the introduction of more logic on the client side, which requires Web developers to introduce more traditional programming principles, creating demands that require Web developers to be as skilled as the client programmer.
Generally speaking, most programmers specialize in one area or are interested in one area only. You get the most output when you write code that’s “right for you.” Getting programmers to work on projects with different styles is a recipe for disaster, it’s true. Even though some programmers are capable of doing other types of work, most have little interest in it.
Types of programmers
There is another way of looking at programmers that we often encounter, such as seeing programmers whose signature is to become an architect. So it’s also important to consider technical knowledge, practical experience, and programmer expertise:
- System Engineer/Architect
- Systems programmer
- Application programmer
- Not really a programmer
System Engineer/Architect
Systems engineers/architects tend to be the most skilled and experienced. Understanding the complex relationships among all the relevant system components (operating systems, communications systems, databases, online/offline access, security, hardware, and more now) requires extensive expertise and experience in all of these technologies and systems. A reasonably sized team might have one or two of these people. Google’s Larray Page and Sergey Brin are similar systems engineers/architects, and the elegant style they cultivate in design and implementation has helped the company succeed in both technical and business fields.
Systems programmer
Architects typically start as system programmers, who write device drivers that interact with hardware, create operating systems that provide a Runtime environment for device drivers to run programs and applications to execute, create compilers and debugging tools for other programmers, It also often provides tools and services for other programmers to deliver programs. It’s kind of like the high priest, the elder statesman in the folk religion.
Many of them dress and behave differently. They may have poor social skills, or they may not want to interact with normal people. But it’s funny how geek has become a buzzword. The authors are former systems programmers.
Application programmer
Among professional programmers, students, and hobbyists who call themselves programmers, the vast majority are application programmers. A program or result developed by an application programmer is usually intended for direct use by the end user. Including our common desktop client applications and software and games in the App Store, are all developed by application programmers. Database programmers also develop some applications to perform specific operations on the data taken out or stored in the database, such as financial processing software, airline ticket booking software and so on.
There are also application programmers who can jump out of the code itself, empathize with the users of their applications, and truly see things from their point of view, to grasp the nuances of Mr. Gerhardt’s visual, interactive design. These people are better suited for user interface (UI) development. When you pair an app programmer with that talent with another UI designer with a background in graphic design and knowledge of human nature and even cognitive psychology, one plus one is more than two. Evan You, the author of Vue, is one of the people I’ve recently found to be amazing in pairing code with design thinking. Some projects focus on THE UI (like Mac Finder) and require entire teams of programmers with this talent.
Not really a programmer
Some of the technical people on the development team who are called “programmers” aren’t really programmers. They use a graphical user interface (GUI) to specify program logic or business logic, then automatically generate user-accessible applications, and in some cases customize what is displayed by creating scripts or modifying configuration files. The main differences between these “programmers” and real programmers are:
Instead of writing their own code, they use existing tools or applications.
Such “programmers” have importance and value, but their technical depth is usually not very high. And as programming tools become more and more powerful, there will be more and more of them. Add to that the development of artificial intelligence, and perhaps most programmers in the future will work in such a way that they will no longer need to type code.
But in the experience of the authors of this book, most of these programmers are content to do their jobs well and are not as eager and motivated as “real” programmers.
Personality traits
Left-brained and right-brained
You’ve probably heard of the left and right brain theory, which comes from the work of Roger W. Sperry, who showed that the left and right hemispheres of the brain have specific functions for different people. The left side of the brain is usually dedicated to analytical tasks and verbal representation of people. The expression ability of the left brain is much stronger than that of the right brain, and the right brain mainly uses spatial perception tasks, music and so on.
Programmers or technicians tend to be left-brained. For a programmer, strong left-brain analytical skills are essential. But right-brain activity is often just as important, because programming is a creative art (I personally think of it more like writing a novel). In fact, some of the best programmers are also music :musical_note: home. Don’t you think the creative part of making music is very similar to learning and programming songs?
Night people and day people
Unlike most employees in most companies, most programmers are night people. They often arrive long after the workday is over and work long after the end of the day, often late into the night when critical projects or projects of interest are in the middle. If you have a lot of late sleepers on your team, communication is very important. I don’t know if anyone left their job because of working hours.
Introverted people
Some programmers are so quiet, so introverted, that they barely feel like they exist. They can get the job done well, but contribute little to team dynamics or meetings. You can talk to him one-on-one, but when you retreat into the crowd, you almost disappear. As a team, we need to encourage these people to share and speak more through effective mechanisms, establish special connections through small things, such as sharing experiences or a book, and find ways to build closer connections.
cynic
Teams should steer clear of cynical, angry, rude, mean-spirited programmers, even if they are highly skilled.
It is necessary to understand programmers from multiple perspectives. After all, different programmers can differ by an order of magnitude in their abilities, and it is important to know more about programmers whether you are recruiting them to work or looking for technical partners.
Recommended reading
- Say goodbye to Losing control: Software Development Team Management Must-read (Reading in Depth and Practicing)
- The Legend of the Man-moon (I copied this book in English when I was learning English :neckbeard)
- The Tao of Programming (not read yet)
Statement: first published in Laravel China community, reprint please keep this statement, TKS. By JobsLong.com