Let’s start with a few thoughts on how we can work together to build (mobile) products:

Statement:

I am a programmer. Up to now, I have designed all the designs I use and the product strategies I use are all my own thinking.

I am not a professional designer or PM, if correct, welcome to correct.

This post is not intended as a joke on designers and PMS, but if you feel offended as a designer or PMS or other professionals, I have no intention of doing so and please close this page immediately.

Why is it not enough to just have programmers

First of all, to disambiguate, we’ve seen countless examples of one person working on a team of dozens, so it turns out that one programmer is sometimes enough. The implication is that the programmer does a lot of non-programmer work, which in this case is a Product Creater doing something, and he or she is more than just a programmer.

Even before mobile, when you were using software on a PC, you needed someone to design it, someone to think about the product.

How many times does a user need to perform an operation? What kind of operation does the user need to perform? Is it left click, right click, slide or other operations on the PC? What problem does this product solve, in what way, do other products solve this problem, how do they solve it, how do you compare to them… Does this product have its own design style? If it is in accordance with the style of the platform, is there anything that does not follow the specifications of the platform? Can we break it first and then create a new form?

There are so many similar problems that there is a model of programmer + Designer +PM.

I recently realized something: Why are there so many people around me who I know write better code than I do, but can’t do anything good?

Last August, I made my first App to be released on the App Store. It took me 12 days and 2,000 lines of Swift. This project, if done now, can go from zero to package ipA in less than two days, at most 800 lines of code. However, it is this bloated and ugly code that has led the App to break into the Top 50 paid list of the App Store in China.

There is now coding ability compared to the past has full progress, protocol-oriented programming, functional programming also have an understanding of the project can be restructured to change, change the code when the tide that is called a surge ah, feel that he wrote how much powerful code. And so on finished, a cool look, the original but so. The code is changed, the App behaves exactly the same as before, and the effort is invisible to the user.

So you’re starting to realize how disconnected the code is from the product. Of course, good programmers can figure out how to link these things together and understand what App navigation patterns might correspond to what design patterns are behind them (a bad example). But at the end of the day these are two very different things.

What makes a good non-programmer

Do outsourcing often feel stupid, all kinds of party a is difficult to communicate, the so-called interlaced, such as the hills, party a may say “the design looks not atmosphere ah” or “I want to do a web site like taobao, how much money” in this way, then party b is in the heart laugh at people, but also on the body of performance doesn’t matter, eventually get the money.

But really do not have necessary such, because the other side is to put forward demand, if let me enter the domain that does not have a concept completely, choose lumber for instance, I also can say I want to resemble what what same lumber, I call not top name. So there is nothing wrong with party A. But at the same time, we also know that a good party A, we may want him to understand technology, design, understand products, and communicate with us to enjoy the smooth.

When a programmer, a designer and a PM interact with each other, this is actually the relationship between party A and Party B. Ideally, when any of the three parties act as Party A, they should be party A who can interact with each other without obstacles.

Color, for example, looks like this to designers:



The same thing looks like this to a programmer:

let kuwazomeColor = UIColor(red: 100/255, green: 54/255, blue: 60/255, alpha: 1)
Copy the code

A good designer would pass the color to the programmer like this:

KUWAZOME: R 0.39-g 0.21-b 0.23Copy the code

Instead of:

KUWAZOME: #6B4449
Copy the code

As a designer, you don’t have to be able to write code, you don’t have to know what UIColor is and what CGColor is and what NSColor is, but you need to know that the person using your stuff is using it in RGB or HSB mode at the moment, not CSS HEX, which is a very basic requirement. What’s more, you should know that the IDE your programmer uses may not help him complete it/ 255This content, so in order to let him no longer hit countless/ 255The value you gave him should beR: 0.39Rather thanR: 100

Then, as a programmer, you should be able to understand it#6B4449And the ability to convert it to RGB or HSB numbers, so that you can get the job done even with a relatively bad designer.

Good designers should train programmers to be useless in the design field. The programmers specify the name of the picture, and the designers export the corresponding picture with the exact name and size, and attach 1x, 2X and 3X to iOS, and various DPI to Android. The programmer can get the project done even with a.pSD or.Sketch file.

In addition, programmers, designers, and PMS should be aware of the platform they are all working on. Again, take iOS as an example.

This is a UIAlertController provided by iOS, which looks like this to programmers:

let alert = UIAlertController(
    title: "A Short Title Is Best",
    message: "A message should be a short, complete sentence.",
    preferredStyle: UIAlertControllerStyle.ActionSheet)

alert.addAction(UIAlertAction(title: "Cancel",
    style: UIAlertActionStyle.Cancel,
    handler: nil))
alert.addAction(UIAlertAction(title: "Choice One",
    style: UIAlertActionStyle.Default,
    handler: nil))
alert.addAction(UIAlertAction(title: "Choice Two",
    style: UIAlertActionStyle.Default,
    handler: nil))
Copy the code

So the information the programmer needs at this point is:

# UIAlertController
title: "A Short Title Is Best"
message: "A message should be a short, complete sentence."
Action: "Cancel" - Cancel
Action: "Choice One" - Default
Action: "Choice Two" - Default
Copy the code

That’s enough. Of course, you can make that one up here for the programmer to preview, just in case you make a mistake, but you have to understand that this thing is provided by iOS, UIAlertController is a ready-made API that you can call, all you have to do is provide the parameters that you need to call that API, Instead of making a UIAlertController that looks exactly the same, and cutting it out like 1x, 2x, 3x thinks this thing is done manually by a programmer. If this thing is really done manually by programmers, then obviously you should provide image resources for Cancel, Choice One, and Choice Two separately, otherwise how could there be three clickable places? !

IOS has its own Human Interface Guidelines, while Android has Material Design provided by Google. All you have to do is provide the Image resources inside the Button, and telling the client developer to blur the shadow a few pixels, shift it a few pixels to the right, shift it a few pixels down is extremely unprofessional. Similarly, as a designer, you don’t have to understand how UIButton is created, but you need to understand what “Button in iOS” or “Button in Android” really is, and understand how your design should be integrated into the work of programmers. That’s design. Otherwise, it’s just an artist, and even the image resources can’t be provided normally, even the artist is not.

There are so many examples…

Perhaps the title of this article could have been:

  • In this line of work, you don’t have to be a designer to know how to design
  • In this line of work, you don’t have to be a product manager to understand the product

I don’t want to make fun of you, but I just want to share some of my own views. I think the real professional is not only to do his job well, because the people you often cooperate with can’t do his job well.