Showing posts with label front-end development. Show all posts
Showing posts with label front-end development. Show all posts

Friday, 27 April 2018

Getting Started with Modules and Modular Front-End Development

Everyone knows and loves Lego bricks. I was hooked on Legos when I was a kid, and I still love them today. You can assemble your toy from all kinds of Legos in all kinds of ways, one piece at a time. You can then start over and build a different toy from those same pieces. The possibilities are endless.

Modules on a website are a lot like Legos. Think of modules as Lego pieces which enable you to build your website. When you connect them together in the right way, they form web pages. To build websites like Legos, you have to think of websites as a collection of independent modules. This article will help you do just that with your front-end development and design.

Module Collages

When entering the design phase of a project, I tend to kick things off with assembling design inspiration collages and module collages. It’s a process much like Dan Mall’s, who calls these collages design deliverables for a post-comp era. Inspiration collages are collections of screenshots I present to the client, just to get a general idea of the visual direction we’re heading in. They are simply screenshots of websites both me and the client like.
Once we get the confirmation we’re on the same page in terms of the style, I can hop into my graphic editor (I prefer Sketch) and create module collages. These collages are collections of the most commonly used modules - buttons, forms, headings, paragraphs, lists, pictures, and so on. Module collages allow me to quickly create pieces of what the website will look and feel like.
Here is a part of a recent module collage of mine, an example of a button I designed in Sketch at the start of a project:

Perhaps you’re wondering when static comps and presenting pixel perfect designs to the client come into play. They don’t — I’m skipping those almost entirely in my process. Skipping that part of the process enables me to get into code very early in the project and code prototypes (I’ll get to those soon), or in other words, design in the browser. Here are some of the advantages of designing in the browser:
     The browser is the natural environment for a website, and sticking to ideas made in a graphic editor may backfire. It is only natural to test and make design decisions in browsers. You’ve heard it before, you’ll hear it again — it’s not about how it looks, it’s about how it works.
The browser is the natural environment for a website, and sticking to ideas made in a graphic editor may backfire.
     There will always be design inconsistencies between the static mocks and what you end up getting in the browser once they are translated into code. To avoid those inconsistencies, jump into the code editor and the browser to solve real design problems.
     Static comps might not get the right message across. The look and feel will be a lot different once you integrate the interactivity — like the hover states, transitions, and animations.
     Instead of spending hours upon hours designing several static mockups for several resolutions, I can save a lot of time by going into code early. Tweaking the CSS enables me to quickly demonstrate the changes and responsive aspect to the client on various devices — smartphones, tablets, etc.
So, save time and open up your code editor and the browser to start creating the UX as early as possible. In my experience, most clients will ask for a full mockup of a page or two before we can proceed with coding, and that is completely fine. It’s important for the client to have a good sense of the future design. I usually use InVision, which is a great tool to keep track of the early mockups, the changes, comments, and more. However, it’s very important for clients to understand that Sketch and InVision won’t get them very far.

Building the Modules for Front-end Development

Once the client is happy with the module collage and the mockups I have designed, I can start coding and define the real look and feel of those elements.
Modular design is intertwined with modular development in an iterative process. I code up a module, then try it out in the browser to see how it works, then iterate if needed. Again, this process is much like building the Legos — you basically design and develop at the same time and try out different variations until you feel good about it.
I often start the development of the modules with building something simple, like a button. Imagine you’re building one yourself and you need to code up an orange button, generally used for a contact form. Here’s what you might come up with:
.submit-button 
{
           
background: orange;
           
color: #fff;
           
padding: 10px 20px;
           
font-size: 16px;
}
<a href=“#” class=“submit-button”>A link</a>
Simple enough, right? You’d apply the .submit-button class to your HTML and that’d solve your current problem. Now, what would happen when you need to create a new button, just like that one, but with a blue background color? You’d probably copy that exact class, then change the class name and the background color. Quick and dirty. Now, imagine you then need to use the same button, but with an orange background. You can see where this is going — you may end up with a lot of CSS being repeated. On a super small project, this may not become a real issue, but on larger ones it probably will. Before you know it, your CSS gets bloated and difficult to maintain.
If you’ve ever developed a medium to large-scale project, you’ve no doubt experienced your fair share of headaches. Those may have been caused by any of the following reasons:
     Code that is messy, inconsistent, hard to scan and understand.
     Bloated code and XXL CSS files with a lot of duplication.
     Code that is difficult to maintain.
     The lack of separation of structure and skin.
Don’t worry, you’re not alone. I’d bet all front-end developers have experienced those painful issues from time to time, and probably many more. I can safely say I’ve had plenty of projects in the past where I’ve encountered all those typical problems.
One way to avoid or minimize those problems is to build in a modular way.
How to code up that button in a modular way? A modular approach would be to write code which you can reuse. Remember those Legos, which can be used and reused all over again.
.button 
{
           
padding: 10px 20px;
           
font-size: 16px;
}

.button-orange {
           
background: orange;
           
color: #fff;
}
<a href=“#” class=“button button-orange”>A link</a>
What we’ve done is a clever separation of styles. The .button class contains the styles every button in your project uses, so you don’t have to repeat it. The .button-orange class uses only the styles relevant for the orange button. You would do the same for all other buttons and define their background and text colors.
Your button module could end up consisting up several independent buttons, ready to be used whenever you need them.

What About More Complex Stuff?

You follow the same principles for every other component you might need. The aim is to create modules which are standalone elements, independent of other modules. When combined, these modules will form templates, where you simply reuse the modules as needed and work towards completing your design.
For further reading on modular front-end development, I’d strongly recommend SMACSS, which is the architecture I tend to use on all of my projects, big or small.
Remember, the modular process is all about building, testing, and iterating. A module first gets produced in your editor, then tested in a browser, then iterated if needed. Repeat that cycle whenever necessary.

Involving the Client

Don’t forget the client’s needs — they want to be kept in the loop and get the confirmation that they’re getting their money’s worth. The beauty of this development process is that the clients can be active members of your team. You can safely show them the modules and they can overlook the development process and pitch in at all times to make the product better. They don’t have to wait for a static comp to be finished or a milestone to be reached before seeing real progress. If you take some time to explain the way modules work to your clients, they will have a better understanding and appreciation of the design process and the time spent building them.

The way I would usually go about presenting modules to a client is much like Bootstrap does it — setting up an isolated module along with its code is a great way to involve all the designers, developers, and clients into the process.
Use the modules you have built as building blocks for pages. For your index page, you might put the navigation module on top, a hero module next, some of the content modules next, then your footer at the bottom. Before you know it, you already have a page for an HTML prototype. But what is a prototype, exactly? I’ve always loved Leah Buley’s definition of a prototype from her great book The User Experience Team of One:
Functioning or semi-functioning examples of how the design should behave and operate once implemented.
By building a prototype, that is exactly what you will get in the early phase of the project — a semi-functioning website. Where static mockups and InVision fall short, HTML prototypes excel. The prototype serves as a perfect responsive deliverable for your clients. And once the client is OK with the look and feel of your prototype, all you need to do is polish it until it works the way it needs to. Build, test, iterate.

Reuse the Building Blocks

Modules and prototypes will enable you to reuse the code for the current project, but for future projects too. Tweaking a module from your last project can save you a lot of time — the modules you need in each project are often similar. I have a big library of modules which I often reuse: tabs, navigation menus, buttons, breadcrumbs, forms, tables, pagination, lists, etc. While the code of those modules is not exactly the same in all projects, good chunks of it can be reused, saving me a lot of development time. My advice for you is to create reusable modules for yourself too. Check out BASSCSS, Pure and Refills to get inspired.
Don’t get discouraged if switching to modular design and development takes time. Naturally, if modular principles are new to you, they will require a tweak of your design and development process, but the change may prove to be worthwhile.
The modular methods and techniques I covered in this article are just scratching the surface. Nevertheless, I sincerely hope this article has been useful and that it has intrigued you to dive into modular design and development.
References

This article was originally published on Toptal
About Author
Bojan Janjanin
Email: jordan.lyons@toptal.com

Share:
Continue Reading →

Saturday, 29 April 2017

What is a Full Stack Designer in 2017? Will You Be One?

Compared to the Full Stack Designer, we seem to be more familiar with the Full Stack Developers. So what is full stack designer exactly? Can we simply think he/she is a versatile designer?

In the past, designers and developers have a clear role assignment. They rarely do the both at the same time. While with the changes in product design and the evolution of team collaboration, many web designers are able to manage web developing and UX design at present.

So there comes a question: what’s the character of the so-called full stack designer? He/She is only a designer? Also coding while being a designer? Or he/she is a designer as well as a web developer?

What is a Full Stack Designer?

In fact, the concept of Full Stack Developer came out earlier than the Full Stack Designer. But full stack does not mean to do all. Specifically, it refers to a person who masters muti-skills and he can use them to independently complete a design or product development.

That means that a truly full stack designer can build a basic conception of a project, and complete the whole design and development related works. Such as the wireframes/prototypes design, visual design, and the front coding, JS / jQuery, etc.




The Emergence

The come out of the full stack designer is not accidental according to the current situation. With the outbreak of mobile Apps and the arrival of the entrepreneurship tide, there are many small development teams who cannot set full positions. That forced the team members to play multiple characters in one position. You can always see the developers not only coding but also build prototypes with the prototyping tools (Mockplus,AxureProto.io)

The Advantages

Comprehensive thinking is the biggest advantage of the full stack designers. A designer who is familiar with the product development and design process, he knows the limitation of product design. So that he can clearly control the expectation of the product design. Familiarity with the process can make the team more convenient to understand the development, marketing, and user experience details. This will make cooperation more seamless, reduce rework and unexpected situations.



The Importance

The full stack designer can analyze and customize his own "skill tree" according to his own situation. He can clearly know the structure of the product, the progress of design and development process. He is a multi-skill person who can use user experience, design patterns, techniques, and tools to complete the product development. And then, the whole progress will be more systematically, and the product will be better.

Focusing on the whole program, that is the most obvious difference between the normal designers and the full stack designer. If you are one of them, it will undoubtedly add a great value to your team. And if you are a freelance designer, it is necessary to be a full stack designer.



What Makes a Great Full Stack Designer?

However, it’s not a requirement for full stack designers to master anything perfectly. Taking the web design as an example, you will understand well about their roles:

Assist the product manager

Complete the pre-concept for the entire project, brainstorming, mood boards, basic planning

Prototype design

Wireframes, visual draft, low/high fidelity prototypes

User research

User experience

Test

Front-end development

HTML, CSS, JS, etc.

The handover with the programmer

Understand the interface and the development of the deep demand, how the front-end code will be more matching backend and the program.

Conclusion

To become a good full stack designer, you are destined to keep learning and enrich your skill-tree. But please note that you should choose a right industry and direction to follow up the design trend and technology, new pattern, and new tools.

Original post: What is a Full Stack Designer in 2017? Will You Be One?

Share:
Continue Reading →

Saturday, 18 June 2016

A Design Workflow Tutorial for Developers: Deliver Better UI/UX On Time

Working with a great designer or design team can be an invaluable asset to any team. With clear communication channels, and free-flowing co-operation, the designer should give you everything you need to speed up the building process and limit questions and confusion as much as possible.
What can you, the UX developer, do to ensure that the product you have built is delivered in a timely manner without sacrificing the quality of the user interface and user experience?




My answer: Get your designers involved from day one, and keep them involved throughout the entire UI/UX development process. Make sure to establish clear communication lines and consistent messaging between developers and the designers.

Do You Have Everything You Need?

The worst thing that can happen during the implementation of any UI is __lack of communication between the designer and the developer __(unless they’re the same person). Some designers think their job is done once the PSD is sent over. But, that’s just wrong! You must create an always-on communication workflow that lasts beyond the delivery of the PSDs.

Projects where the designer just submits the design files, and the developer just implements them, are the projects that just fail.

In many cases, it will take time before the designers see the actual UI/UX design implementation. To their surprise, the build is often completely different from the initial submission. (This happened to me more than once. I have sent over source files with complete descriptions and interaction prototypes, but when I finally saw the project, months later, it had a different layout, different colors, and no interactions in place.)
Some designers might hate me for this, as this design workflow requires a lot of “extra” work on their side. However, creating and delivering full assets and information, in an organized way, is better for the project and the team as a whole.
If a developer has everything that they need in front of them, it will speed up the process. A clean PSD is just not enough.
What do you need to get the job done effectively and efficiently?
These are the assets that a developer should expect from the designer to bring a UI/UX design to implementation:
·    Resource file - The designer should place every element of the app in one file. This file should contain buttons, checkboxes, header styles, fonts, colors, etc. Basically, based on the information in this file, the developer should be able to recreate any interface from scratch. It’s much easier for a developer to export any element from a single PSD, than to search multiple files for it.

·    Assets - Make sure that developers get all the required assets, as source files should not be touched anymore.

·    Interaction prototypes - Days of “static screens” are long gone. Using smart interactions and animations, to smooth-out UX design workflow and implementation, is a common practice now. But, you can’t just say “this will slide in from the left” to a developer. The designer should create the actual prototype of that interaction. The prototype should include information like speed, velocity, etc., and the designer is expected to specify each of these values.

·     Naming convention - Request a file naming structure to keep things organized. It’ll make it easier for both of you to navigate files. (No one likes to have things hidden in a background folder.)

·     HDPI Resources - We live in “hard times”, with the huge density of the screens. Make sure that the designer will deliver images in all of the required resolutions, so your application will look crispy everywhere. Note: use as many vectors as possible; it’s going to help you a lot (svg).

If you do find something else missing during the implementation, don’t be afraid; ping the designer and ask for it. Never skip, and never skimp! You are members of the same team, and your job is to deliver the best possible product. If a designer fails, you fail as well.

Work In-Progress

Utilize your designers during the UI/UX development process. Don’t keep them in the sidelines expecting them to just “push the pixels.” A designer sees possible innovations even before the implementation starts. To take advantage of this, keep them in the loop. Provide them with access to see, and test, the work in progress. I’m well aware that no one likes to share unfinished projects. But, it is much easier to make changes in the middle of a build than at the end. Doing so may save you time and prevent unnecessary work. Once you give the designer a chance to test the project, ask him to compile a list of problems and solutions, and suggest improvements.
What to do when a developer has an idea that would change the look of an application? Discuss it with thedesigner, and never allow a developer to modify the design, without consulting the designer. This design workflow will assure that the build stays on track. A great designer has a reason for every element on the screen. Taking a single piece out, without understanding why it’s there, could ruin the user experience of the product.

UI/UX Design Project Management

Designers think that developers can bring a design to life in one day, or even in one hour. But, like great design, great development takes time and effort. Keep your anxious designer at bay by letting him see the progress of the build. Using external project management software, to make sure every revision is accounted for, is a great way to make sure you don’t miss important information discussed in an email conversation or a Skype session. And let’s be honest: sometimes changes and activities aren’t even communicated until they happen.
Whatever solution you use, be sure to choose one workflow process that the whole team will adopt and consistently use. On our team, I tried to push Basecamp because that’s what I was using, but our front-end developers thought it had limited features. They were already using other project management software to track bugs, progress, etc., such as JIRA, GitHub, and even Evernote. I understood that project tracking and management should be kept as simple as possible, so I migrated my UI design workflow to JIRA. I wanted make sure they understood my workflow and progress, but I did not want them to feel like design was another thing to manage.
Here are a few suggestions for a project management tool:
·     Basecamp - Tracks the progress of the design and development related tasks, and easily lets you export tasks. It also has a simple mobile client.

·     JIRA - A fully customizable platform where you can easily set up custom boards for different areas. For example, organize boards to track activities such as back-end, front-end, design, etc. I think the mobile client is a bit weak, but it is a great solution for bigger teams and includes a bug tracking feature.

·     Email - This is great for setting up a conversation or sending images. But please be careful if you use email for feedback. Things can easily get lost.
You can also try Trello and other project management software, but the most widely used in our industry are Basecamp and JIRA. Again, the most important thing is to find a project management system that everyone can use on a consistent basis, as otherwise it’s a moot point.

UX Design And Development Come Together

The designer and the developer are a powerful combination. Be sure to brainstorm UI and UX together as often as possible. Developers should be willing to help a designer conceive ideas, while a designer should have at least a basic knowledge of the technology that is being used.
Figure out the design workflow together. Don’t just blindly implement what your designers create. Be proactive, and create something that looks beautiful and has a great user experience, by taking advantage of your two different perspectives. Designers think outside of the box and see crazy animations, ideas, pixels, and buttons, while developers see the technology, speed bumps, and limits.

In my experience, every designer is crazy about pixels and interesting concepts. But sometimes, a designer gets to a point when they have an idea, but the developer pushes back and says, “This isn’t going to work well once it’s implemented. There will be performance consumption issues”. Recently, I was looking to implement a modal window with a blurred background, but this blur caused heavy loading times. To solve this problem, the developer suggested using a regular, full color overlay, which loads faster and retains image quality. Designers, pay attention: Don’t compromise the user experience for the design.

Feedback Loop

Feedback from the designer is crucial, and it has to happen as often as possible. It’s probably the most time (and energy) consuming thing that you will do. But, you need to adopt it to be able to deliver perfect results. Here are couple of UX and UI design worklow tips on how to make your feedback perfect.
·    Be visual - Feedback needs to be as specific as possible. The best way to make it accurate is to take a simple screenshot and highlight a problem you want to fix. It would be even better if you had a pictures of a current implementation vs how it is supposed to look. Visual communication will eliminate 50% of the questions.

·     Be descriptive - Feedback should be accurate. You can’t just say “move this button up”. The designer must specify how many pixels a button should move, what padding should be used etc. Always include an explanation of the problem, and the appropriate solution for it. It’s going to take a lot of time, but it’s worth it.
·     
     Be patient - Keep in mind that the designer and the developers do not share the same focus. If developers don’t fully understand a designer’s idea, it can lead to confusion and bad decisions. In every case, both sides need to be patient and willing to help the other team members. It’s really tough sometimes, but it is a soft skill that every designer and developer should learn.

It’s pretty obvious that these things needs to be combined together to make them into a suitable design workflow. But, what tool can actually help you deliver the feedback?
·         Email - I’m not afraid to say that this is still the most common platform to deliver the feedback. It is totally fine to use it, if you will follow couple of simple rules.
o    First, use single email thread for your feedback. Don’t put every individual tweak to a new email with a different subject.
o    Second, create the list of fixes. Try to sit down and think about every tweak or fix you noticed.
o    And lastly, don’t send huge list at once. Try to break it down to smaller individual lists and go part by part.

·     Skype (Hangouts) - Voice is really powerful tool for the feedback. You can immediately ask and answer questions. But, make sure to take notes and sent over the follow up message (email) after the call.

      Collaboration tools - To be honest, I’m not a big fan of collaboration tools. But, they have a big benefit. They help you to keep feedback in place. Asking and answering questions is fast, and it stays there forever.

Here are some of the great tools:
Feedback annotation:
·         https://redpen.io/
·         http://collabshot.com/
·         http://www.designdrop.io/
Collaboration tools:
·         http://www.invisionapp.com/
·         https://basecamp.com/

Conclusion

Establish a system and UI/UX design workflow that keeps the communication lines open throughout the design and development process. This will allow you to implement great ideas, forecast potential problems, and prioritize important issues.
The developer and the designer can create great things together as long as they are willing to work as ateam. Learn from each other and design tutorials like this one!


About Author

LUBOS VOLKOV
Email: jordan.lyons@toptal.com
Share:
Continue Reading →