by Rameez Ramzan | Jan 11, 2019 | Communication, Community, Design, Guest Post, Learning, People, Process Improvement, Programming, Skills
Implementing web and mobile products with high-end features and immaculate designs requires designers and developers to work hand in hand. Designers and developers are professionally connected; therefore, It is often debated in the tech industry whether the two should know how to reverse their roles if needed.
Let’s end the discussion once and for all, and explore who should know how to switch roles.
Developers vs. Designers
Developers are specialized programmers, developing robust web and mobile products using different technologies, while designers control the design aspects, such as layout, color scheme, font size, and so on. Each is a master of a different art.
Designers are expected to know basic coding, if not complex development, but less is talked about developers designing. This is because of some misconceptions about the two positions that should be cleared up.
For example, people believe development is more of a technical role that one can learn through formal education, online courses, professional experience, and so on. On the other hand, people assume design to be an art form that very few people can master.
Therefore, designers are encouraged to learn development, but designing is considered difficult for developers, as it requires a natural flare.
Yes, some people have a better and natural understanding of colors, color combinations, and designs. Others need to follow design rules and techniques to develop an acceptable design piece. But both skills are equally acquirable. Period.
Why Should Designers Learn to Code?
Companies value designers who understand JavaScript, CSS, and HTML, as that knowledge bridges the gap between designers and developers. Understanding basic coding and development helps designers know the developers’ limitations.
For example, designers may ask for features that would disrupt the overall flow of the website or mobile app. Knowing coding enables designers to predict potential bugs and to design accordingly.
Having a grasp of coding allows designers to quickly and comfortably communicate the designs to respective developers. It also allows designers to address concerns beforehand by discussing the potential problems arising from changes in design or interfaces.
Understanding coding and development lets the designer consider various important factors such as code maintenance and complexity that can otherwise affect product functionality and sustainability.
We are not asking designers to learn complicated coding and development. But understanding the fundamentals will improve their designs and enable effective designing across platforms.
Why Should Developers Learn to Design?
“Design transcends agenda. It speaks to the politics of optimism.” — Paul Bennett, Chief Creative Officer for IDEO
Good design enhances the efficiency of a website or mobile application. People interact with the product’s design before experiencing its functionality. That means good design creates a positive first impression and encourages users to stay on the website and explore. As a developer, you must know and understand the key to user retention on the website or app: design!
Nobody is asking developers to be the main designers of a project. But an understanding of design tools and techniques, combined with basic designing skills, will enable developers to participate in creating aesthetically smart products.
Not understanding design leaves developers at the mercy of designers and often delays work for minor changes.
Good design means more website engagement, and as a developer, you must contribute to the perfection of the final product.
Let’s talk about Instagram. The social media platform had to manage design constraints and engineers to accommodate portrait and landscape modes. Designers who don’t know some development rules wouldn’t understand the limitations of including two modes. Similarly, developers won’t realize the need for including both modes.
It can be overwhelming if you lack the knowledge of the other side. But I repeat: You don’t need to learn it all, but get familiar with the basics.
Remember that the goal is not for designers to become developers or for developers to become designers. The vision is to work together efficiently.
Why Shouldn’t Designers Study Coding and Vice Versa?
The answer is simple: You can know things without doing them. For example, you can learn from cooking shows and tutorials without actually ever turning on an oven. All of us know theories we haven’t ever experienced and never will. Therefore, developers don’t need to learn Adobe Illustrator to design. Understanding color schemes and alignment would be enough.
Learning to code doesn’t make you a developer, nor does learning to design make you a designer. However, having even just a bit of knowledge of a complementary discipline can make you better at your own job.
So, What’s the Final Verdict?
Designers and developers solve different problems. Designers work on the aesthetics and visual appeals, while developers work on the functionality of products and implement designs. Each issue requires a different solver, and the two must focus on solving problems that fall in their respective areas of expertise.
You don’t need a formal education to learn the other person’s job. Developers should know the basic designing concepts and vice versa. The good news is that designers and developers will both eventually understand each other’s work when working together, so you’re good to go for now!
by Rameez Ramzan | Nov 21, 2018 | Better Software Engineer
According to the United States Bureau of Labor Statistics, there were 8.6 million science, technology, engineering, and math (STEM) jobs in May 2015, which made up 6.2 percent of the country’s employment. Forty-five percent of these jobs revolved around computer science.
The research sheds light on the importance and growth of computer science. We observe immense potential in it to exponentially grow in the coming years. Does this mean it’s essential for developers who want to keep refining themselves to have an additional understanding of computer science besides their particular technical knowledge?
This article explores the differences between a programmer and a computer scientist and rationalizes the significance of thinking like a computer scientist.
The Difference Between a Programmer and a Computer Scientist
Let us try to understand the difference between the terms “programming” and “computer science.” “Programming” is the generic term used for a person who works with software, applications, and other technological solutions.
For example, if someone in your office develops websites, you call them a programmer. If someone helps in solving functionality issues in an application, you call them a programmer or a coder. A programmer or a coder solves specific problems or adds features to a technological solution by developing and implementing codes.
Let’s think of your website experience. You open a website and, in a few seconds, a chat box added by a programmer working on the backend pops in. Now the question is, why isn’t a programmer a computer scientist?
“Computer science” is a broader term and includes many different dimensions, one of which is programming. Programming is a specific and concrete tool to perform a function, while computer science is an approach to solving problems efficiently and avoiding them in the future.
Computer science allows people to think differently by encouraging them to find opportunities in the problems they face.
Let’s go back to the time when we learned the basic structure of an eye. We know there is a retina, pupil, iris, and cornea; however, we don’t know how exactly the eye operates. Similarly, the knowledge of computer science helps you understand things in general, like the structure of an eye, while programming is a specific tool, like addressing a certain problem in the eye.
Why Should You Think Like a Computer Scientist?
A programmer will only develop code to solve a problem or create desired features, either of which has a limited scope. For example, a programmer will be responsible for developing software efficiently and incorporating all the requirements of the client.
On the other hand, a computer scientist will explore the possibilities and analyze ways to make the software better than what the client expects. Computer science gives you the ability to think critically and do better than is expected of you. It develops a drive for improving your skills. Do you not want to be more than ordinary?
Being a programmer means that you are focused on specific tasks such as developing an add-on feature for the website. The goal is to get the work finished. However, being a computer scientist means that your focus is on resolving the problem by understanding its causes, impact, and chances of occurrence in the future.
Thinking like a computer scientist will widen your horizons, help you develop a proactive approach, and enhance your efficiency.
How Can You Think Like a Computer Scientist?
Now that we understand the differences between a programmer and a computer scientist, let’s help you become a computer scientist!
Start by Understanding the Causes of a Problem
Programmers are often in a hurry to resolve the problem by developing the appropriate code. Consider a website that is no longer able to record the email addresses of its visitors. Now, a programmer would immediately think of solving the problem, but a computer scientist would dig deep into why the previous code failed and how to avoid failure in the future.
Remember that the goal is not merely to solve an issue immediately but to develop sustainable solutions that do not hinder any business operation. Take your time to think and do research before attempting to solve it. You may want to make notes or write it down, like a mind map.
Develop a Solution Plan
Think of one of the greatest companies in the world: Apple, Inc. Do you think one day the company decided to launch an iPhone-like mobile device and the next day started making it? No. When we ask you to think like a computer scientist, we are asking you to plan your work.
Once you have identified the possible causes of a problem, start working on the possible answers. Your knowledge, experience, research, and discussions will help you in shortlisting the alternatives. You must then write down the plan to implement the ideas, with various contingency plans.
What if the code doesn’t work? Will you start the research all over again or try an alternative code immediately? A computer scientist will look at things from a broader perspective, first analyzing the reasons that led to the failure of the code and then developing several solutions that are likely to get the job done. Instead of instantly trying different code, a computer scientist will run a thorough check to not repeat the mistakes.
Keep Looking for New Ways to Solve Problems
Computer science improves the way things are done. If you want to think like a computer scientist, you must be on a quest to learn.
A programmer may rest once a problem is solved, but a computer scientist will keep looking for new ways to improve the quality of products and services. Their goal is to develop methods to resolve issues before they arise and work to make things better.
According to Sebastian Thrun, “To me, mathematics, computer science, and the arts are insanely related. They are all creative expressions.”
Switch to the Scientist Mode
Computer science is an approach and a mechanism for addressing problems and developing effective solutions to ensure sustainability and reliability. Unlike programming, it isn’t about performing a specific task, but about doing things the right way.
Thinking like a computer scientist allows you to identify problems and explore different methods and solutions. It aims to eliminate errors in the future as well, therefore developing highly sustainable and widely applicable solutions.
Being a programmer does not mean you have to drown yourself in code and have a monotonous work life. Remember, you are a computer scientist who knows more than just coding!