CSS Best Practices and Tips By Toptal Developers

We at Extra Nerds believe that it is important to support folks like us, with similar philosophies, in the industry and, to that end, here’s our first guest blog post by Toptal Developers.    

CSS Best Practices and Tips

This resource contains a collection of best CSS practices and CSS tips provided by our Toptal network members. As such, this page will be updated on a regular basis to include additional information and cover emerging CSS techniques. This is a community driven project, so you are encouraged to contribute as well, and we are counting on your feedback.

Cascading Style Sheets (CSS) can be described as a style sheet language written in a markup language. It is used for defining the look and formatting elements of Web documents such as the layout, colors, and fonts. The CSS specifications are maintained by the World Wide Web Consortium (W3C). Even though every browser supports CSS, there are many inconsistencies in the supported specification version. Some browsers even have their own implementation of the specification and have proprietary (vendor) prefixes. Supporting all modern browsers is a daunting task, not to mention when developers need to support old and legacy browsers. All these problems cause a lot of trouble for developers, and it is hard for them to write CSS code that will render consistently across all browsers. That’s why we want our top CSS developers and engineers to share their knowledge and offer their best tips to achieve those tasks more easily.

How to Improve CSS Performance

There is a lot you can do to ensure good CSS performance and reduce page loading times. Here are some tips and techniques you can start implementing today.

A browser needs to go through every single DOM element to find what it is looking for. Take this example:

.home-page .header-main .nav-main ul 

The browser will begin by looking for every ul element, then every .nav-main inside of a ul, then every .header-main inside of that, and then every .home-page inside of that. Only when the search is done are styles applied. We can be far more efficient than that and write a specific selector, like this:

.nav-list 

Now the browser simply needs to find the .nav-list element and apply the styles to it. We have kept specificity low and avoided unnecessary nesting. Simple, yet efficient.

Naming classes can be tough, but you can use some of the well known tricks for that. For instance, in our .nav-list element, you can use the .component-descendant-descendant naming:

.nav-list-item

The .nav-list-item would be the list item in the navigation. Alternatively, you can use the BEM naming methodology, already covered in our CSS tips.

Another piece of advice for keeping low specificity is to avoid IDs and use classes. The big benefit of using classes is that you can reuse your styles and help keep your style sheets DRY (Don’t Repeat Yourself), which will also reduce the file size.

How to Write Modular CSS Code

Code duplication is one of the most important issues that originate from coding in plain CSS. In order to contest that, preprocessors come with very strong function, mixin or extend implementations. In this tip we are going to introduce @include and @extend, and discuss how they can be used efficiently in SCSS.

Creating Mixins with @include and @mixin

By utilizing the @include implementation, you can create mixin functions with parameters. For example, a display block centered container with max-width could be implemented as follows:

// Create a max-width container
@mixin maxWidthContainer($width : 1024px) {
        display: block;
        max-width: $width;
        margin: 0 auto;
}

The mixin declared above can be called with the following command: @include maxWidthContainer();. Since the default value for a $width parameter is set to 1024px, generated CSS will look like this:

display: block;
max-width: 1024px;
margin: 0 auto;

Extending Classes with @extend

The @extend can be used to share CSS properties from one class to another. For example, the following button style declarations in SCSS:

.button {
        color: black;
        background: white;
        border: 1px solid gray;
}
.button--warning {
        @extend .button;
        color: red;
        background: orange;
}
.button--disabled {
        @extend .button;
        color: white;
        background: gray;
}

Will result in the following CSS:

.button, .button--warning, .button--disabled {
        color: black;
        background: white;
        border: 1px solid gray;
}
.button--warning {
        color: red;
        background: orange;
}
.button--disabled {
        color: white;
        background: gray;
}

Please notice how the button modifiers (.button--warning and .button--disabled) are stacked in the initial declaration of .button.

Efficient Usage of @include and @extend

Mixin declaration is the most useful function that preprocessors have to offer. @include can be used for anything from adding animations to responsive breakpoints. Any piece of code that is repeated multiple times should be applied into a mixin which will effectively make your code more readable and easily maintainable.

On the other hand, @extend has to be used very carefully and sparsely. While initially it seems to pose plenty of advantages, in its use there are a few disadvantages:

  • You can not extend from within a media query
  • It does not accept any parameters

Both @include and @extend are very strong directives which can make CSS development with the aid of preprocessors way more productive as well as fun.

In addition to these CSS topics, the rest of the blog series includes discussions on Using Stylus to Easily Decouple Semantic Markup from CSS Stylesheets; How CSS Namespacing Can Aid Front-End Development; How to Write Maintainable CSS Declarations; How to Customize an HTML File Input; What is a Block, Element, Modifier Approach; and How to Write Consistent CSS.

Posted on September 30, 2015 and filed under CSS Tips and Tricks.

Using Microsoft’s Entity Framework: Part 2 of 6

Creating Custom Web Applications

In the first installment in this series, we just showed the basics in order to provide an informational foundation on Microsoft’s Entity Framework. Since that post was some time ago, let's review and also talk about why .NET and Entity Framework is ideal for creating custom web applications.

If you’re a business owner who aims to use the power of IT to grow your firm, you always want to find tools that can help you to achieve the best results. To that end, let’s talk about .NET and Entity Frameworks, some of the best technologies which are ideal for the creation of custom web applications. It is surprising that there are IT directors who still do not use these tools despite the fantastic value that they hold. In fact, you will be baffled at how quickly you can use them to overcome some of the challenges that have been hindering the growth of your organization.

Entity Framework explained

Commonly referred to as EF, Entity Framework is an incredibly useful object relationship mapper that enables .NET developers to work on data through the use of domain specific objects. The primary goal of EF is to make it easy for developers to focus more on the domain of the business as opposed to the writing of database plumbing codes. These connections include things such as data tables, commands, datasets, and links. By doing this, an IT technician will find it easier to overcome most of the challenges associated with this job.

How it actually works

For many years, web developers used other options such as ADO.NET to create utility libraries. Although this was successful, some found it difficult to pull vital data from the database without having to write data access codes that were both repetitive and confusing. With time, the entire process became boring to most experts and so they had to look for alternatives. The fact that EF is the preferred data access layer for Microsoft means that working with it can flawlessly move a project forward so it can easily get rid of the repetitive procedures.

Installing and using Entity Framework

To use EF, you will have to, of course, install it first. The best part is that even with the fantastic benefits that it brings, installing it is quite an easy process. Although there are other ways of installing it, the most effective one is to download and install it from Nuget. It is as easy as right-clicking on the preferences in your project and following the prompts. Once you find the Nuget packages, everything else will be simple. An alternative of doing this is using a package manager console. You can then go ahead to create a model of an existing database depending on the particular project that you want to work on ad how you want to do it. We reviewed this process in depth in our first installation when discussing how to get started.

Undeniably, .NET and Entity Framework are technologies that are really worth the investment. Regardless of the nature of your business, there is no doubt that success will come much easier once you have these technologies in place. To discuss your next potential project, and how to use technology to increase your profits while reducing your daily workload, just contact Extra Nerds today. And stop back next week when we discuss how to create a data access layer using Entity Framework.

Posted on September 25, 2015 and filed under Using Entity Framework.

CSS Tips and Tricks: Part 6 of 6

CSS Typography and Font Styling

Nerds. We always strive to stay on par with the ever-evolving computing technology at a pace which many can't withstand. Now it is an exciting time to familiarize ourselves with the modern CSS tips and tricks that are available and at our disposal. After years of what felt like same old techniques for the same old browsers, we are finally seeing browser implementation with HTML 5, CSS 3, and other technologies, which give developers cool new tools and tricks in their designs.

We’ve looked closely at display:none; CSS3, using CSS Syntax for web design, some basic tips and tricks, and vertical content alignment.  Now, in our sixth and final post in this series, let’s wrap this up by gaining an understanding of modern CSS typography and font styling.

In this guide, we are going to put the primary focus on the design trends and styles which characterize the modern CSS-based layouts, as well as the broad underlying concepts that you need to comprehend, in creating the most successful CSS layouts.

Modern CSS: Underlying Concepts

Typically, a modern CSS-based website is progressively enhanced, modular, efficient, and adaptive to diverse users.

Progressively enhanced. This means creating a solid page with the appropriate markups for the content and adding the advanced stylish to the page for the browsers that can handle it. The result is the creation of web pages that are usable by all browsers, but do not look identical in all browsers. This concept brings about more robust pages, happier users, reduced development time as well as reduced development time, and more fun.    

Modular. The modern day modular pages are no longer collections of static pages. Pieces of content and design components are reused throughout a website and even shared between the websites. This makes the pages adaptable in different places depending on the use and type of the information which they contain. Use of modular CSS has benefits such as smaller file sizes, reduced development time, reduced maintenance time, easier maintenance for others, and more consistent design and flexibility.

Efficient. The modern based CSS websites should be both efficient for you to develop and efficient for the server and browser to display to the users.

Adaptive to diverse users. The modern web pages that are powered by CSS should be able to accommodate the diverse range of browsers, devices, font sizes, screen resolutions, and the assistive technologies. This concept is growing quickly as web users are becoming increasingly diverse.

Modern CSS: Design Trends, Tricks, and Tips

There are six main trends that are helping designers create outstanding CSS effects. These include box model, floated columns, sizing using ems, image replacement, floated navigation, and sprites.

Box Model. At the center of modern web applications development is the box model. You may know your margins and padding, but that which happens when elements start to interact with each other is a different scenario. A good box model involves understanding the difference between quirk mode and strict mode. In fact, you need to have an understanding of the box model, Tantek's box model hack, quirks mode and strict mode, and activating the correct layout mode by the use of doctype declaration.

Floated Columns. Floating concepts is what has opened the doors to replace the table-based layouts. A developer should learn how to float and how to clear floats so that content that follows appears correctly. Understanding this trick requires prior knowledge of floatorial, clearing floats, faux columns, and creating liquid faux columns.

Sizing using Ems. When it comes to sizing using ems, we put into consideration the fonts and layouts. By use of fonts, we allow to resize the text using specified pixels. Layouts allow more flexibility. Styling elements by use of ems allow containers of content to grow along with text and maintain the consistency of design.

Image Replacement. Any boring text elements do not excite neither the developer nor the user. Users want graphical flairs along with gradients and glass effects. Image replacement tricks allow us to replace the existing content-rich and SE0 friendly text with stylish images or flash files with embedded fonts.

Floated Navigation. If you have the mastery of floating columns, the other tricky part that you need is the mastery of using floated navigation. You need to have an understanding of listamatic and sliding doors.

Sprites. Just like the video games, packing multiple images into one single image has become a popular technique in the modern CSS. This reduces the number of requests a browser has to make while at the same time improving the time that is required to download all files from your server.

Hopefully you’ve gained some useful knowledge from reading our CSS Tips and Tricks series.  Our next series will build on our Microsoft's Entity Framework blog.

Posted on September 18, 2015 .

CSS Tips and Tricks: Part 5 of 6

Vertical Content Alignment

In our introductory blog in this CSS series, we demonstrated display;none and its uses. The second installation provided an overview of CSS3, while the third discussed CSS Syntax. The fourth added a few more general tips and tricks to the arsenal, helping readers take full advantage of CSS and each one of its updates. Now, let’s get specific and talk more in depth about vertical content alignment, which can be a challenging element to working with CSS.

Cascading Style Sheets (CSS) are normally used to make a document more presentable where a style sheet language is used so that it defines the look and formatting usually written in markup language. In most cases, you will find that CSS is used to style a variety of web pages as well as user interfaces that are written in HTML, XHTML and any other sort of XML document. You can simply learn some simple CSS tricks that will equip you with necessary CSS skills, thus ensuring that you are successful in producing a quality content page.

There are quite a number of CSS tricks that we can use to keep our websites cool and attractive. These tricks will help you to improve the quality of your web design since they are easy to implement while also being user-friendly. Below are some important tricks that you can use to align your content vertically, in order to ensure that the quality level of your website is high and, ultimately presentable at a glance.

Absolute positioning. One of the most important tricks that we will feature is the absolute positioning CSS trick for content alignment. In your document, you will realize that you have two <div>, one of them will be the container while the other will be the child element which simply refers to the content. You will be required to start with the container element where you will position it to be relative while the child element is positioned to absolute. This will allow you to freely place it across the container thus allowing you to proceed on easily. So that you will achieve aligning it vertically, you can shift the position of the child element from the top in that it lays half way the height of the container. Then pull it up by half of the width of the child element, thus ensuring that your alignment is fantastic.

Use of CSS3 Transform. This Cascading Style Sheet trick has always made it easy for you to put any of your content at the center. For example, if we have similar HTML structures as the preceding method whereby we have one parent and one element having a — 50% from the top. The use of CSS transform will ensure that there is also a translation of — 50%. For more detailed information on CSS3, please refer to our second CSS blog post on that very topic.

Padding. Another CSS trick that we can use to form illusion in vertical alignment is the use of padding. It is a simple step in that will require you to set the top and the bottom part equal to each other. This trick will be effective if you do not adjust your container in a fixed width, but simply set your width to auto.

Use Line Height. The line-height property will be effective if you want to align a text vertically when you have only one line of element within a container. You will be required to set the value of line-height to a value that is nearly the same as that of the container height.

These are some of the surefire CSS tricks that you can use to align your content vertically thus achieving a high-quality web content. Contact Extra Nerds for these tricks and be sure that you will succeed in your next web designing project.

Hopefully you have learned some helpful hints on CSS in this blog series. Stop back next week for our final installation which will help us to understand modern CSS typography and font styling.

Posted on September 11, 2015 and filed under CSS Tips and Tricks.

CSS Tips and Tricks: Part 4 of 6

More CSS Tips and Tricks

Cascading Style Sheets (CSS) came on the scene over 15 years ago and, on a very basic level, changed the way websites looked and acted. This dialect has continued to advance throughout the years and its various updates are intended to engage designers and developers in order to manufacture websites which are beautiful, effective, and increasingly lightweight. In our introductory blog in this CSS series, we demonstrated display:none; and its uses. The second installation provided an overview of CSS3, while the third discussed CSS Syntax. Before we move forward, let’s take a moment to add a few more general tips and tricks to our arsenal, helping you to take full advantage of CSS and each one of its updates.

Use a decent proofreader. You may be a coding master, but two heads are always than one, as they say. Being ready to approve and turn upward codes, the auto-complete element, and syntax highlighting won't just speed up your work, it will allow for more precision in your stylesheets.

Compress wherever possible. Use an effective compression device to cleave off the bytes from your CSS and JavaScript files wherever possible without deleting substance. This ensures that your website remains unencumbered and loads quickly. One approach to decrease undesirable bytes in your CSS files is to erase copy references, conflicts, and comments. Despite the fact that comments, for example, make it easier for someone else to maintain your files, they increase the record size significantly. It's better to just compose your codes and orchestrate them such that your files are promptly comprehensible. Also, store at any point you can in order to enhance loading times and preserve the bandwidth of your website visitors. It’s worth noting that enhanced loading times also improves the search engine optimization (SEO) prospects of a website and drives it up the Google ranks. You can enhance the execution of your website by using just a single stylesheet that slashes the quantity of HTTP requests.

Increase the meaningfulness of your stylesheets. You can do this in a number of ways, but the simplest is to include white spaces. While this technique will inevitably increase the size of your CSS files slightly, you can ensure that the intelligibility will also enhance manifold times. Make sure that you keep the code format consistent. Another nifty way to ease the maintenance of your stylesheet is to eliminate inline codes. Also, keep the CSS record names simple so that you know at a glance the contents of each document.

Disable CSS to investigate. All browsers have assembled debuggers. Take in the hot keys to initiate these tools. In any case, if you can't spot the glitch even after cautious scrutiny, verify that you disable CSS or evacuate every one of the styles before bringing them back, each one in turn, to simulate the glitch.

Check your codes on all the significant browsers. This is likely the simplest of all CSS tips and yet so many programmers tend to ignore it. Try not to use a browser emulator to check code. Rather, check your codes on the genuine browser or a virtualized version. And don’t forget to keep an eye on all the major browsers - Firefox, Chrome, Internet Explorer, Opera, and Safari.

The aforementioned five CSS tips and tricks should, in a perfect world, be strictly adhered to as best practices as they make easier the lives of developers, website administrators, Google spiders, and website visitors.

Hopefully you’re finding these tips and tricks helpful and we’ll have some more for you next week in our fifth installation of this six-part series. While we touched on vertical content alignment in our CSS3 blog, we’re going to delve deeper into that conversation in next week , so stop back and check it out.

Posted on September 4, 2015 and filed under CSS Tips and Tricks.

CSS Tips and Tricks: Part 3 of 6

The Benefits of Using CSS Syntax for Web Design

In the first blog in this series we talked about display:none:, what it does, why it's useful, and how to use it. And then we followed that up with an outline of CSS3. Now we want to talk about CSS Syntax.

Those who are in the initial stages of creating a website for their business tend to be concerned with how to best utilize both their funds and their time. Luckily, there is a wonderfully effective method of web design that will enable a person to save their money and conserve their time. This is the relatively still unknown CSS
Syntax and, in what seems like the blink of an eye, it is becoming a highly popular and incredibly effective choice for the ultimate objective of economic and user-friendly web design. The overall benefits are simply fantastic and that is what so many web designers, and visitors of the websites which use it, love about it.

So, What Exactly is CSS Syntax?

CSS is becoming widely known as a language which is incorporated to provide the essential detail of a given website’s markup language, HTML or XHTML. The function of HTML is to enable fonts, the website’s complete layout and the various colors and tones integrated throughout. One particular benefit which is it produces is a separation of the varied content within the document. The content itself is almost always written in HTML format or a markup language which is considered similar.

Reliable Flexibility. When you utilize CSS Syntax, changes and alterations to your website can be done in a breeze regardless of the number of pages on which the changes need to be made. The larger the website, the more a person will automatically see how effective and undeniably efficient CSS Syntax is for web design. Another great aspect is that it will ensure that all of the other pages will receive the same changes as directed, at the same time, consistently.

Reduces Bandwidth. When CSS Syntax separates the content of the website from the language used to produce the website’s design, a user will immediately see the great reduction in the size of the file transfer. The document will then be properly stored externally and, at that point, it will be accessed for every single visit from then on. By reducing the amount of bandwidth used, it will free up extra space for a quicker loading time, which could very well play a role in saving money for the user.

Enables Efficiency for the Search Engines. The special technique that CSS Syntax uses is called “clean coding” and what this means is that the various search engines which offer an individual’s website won’t have any issues reading the content. Plus, CSS Syntax will keep from allowing more of the content as opposed to the code because everybody is well aware of how vital the content is to the overall success of a webpage.

Wonderfully compatible with the Browser. Even though compatibility with websites and the browser are progressing every day, CSS Syntax will be able to induce more compatibility between the user’s website and the browser itself. This will help visitors in viewing a website the exact way that the web designer intended it to be viewed.

Regardless of the fact that it is still considered relatively unknown, CSS Syntax and the production value that it brings to users is truly astounding. So much so that its unknown status is bound to quickly change and, soon enough, it will be the number one source for benefiting great web design to its maximum potential. Next week we’ll highlight some additional CSS tricks and tips so stay tuned!

Posted on August 28, 2015 and filed under CSS Tips and Tricks.

CSS Tips and Tricks: Part 2 of 6

What is CSS3?

rsz_1csstipsandtricks2-1.png

Disclaimer: This series of CSS Tips and Tricks will assume you have at least an intermediate level understanding of HTML and CSS.

In the first installation, we outlined display:none; - what it is, why to use it, and how to use it. Next, we’re going to talk about Cascading Style Sheets 3 (CSS3).

CSS3 is a wonderful computer language that can be used to give a better shape to your website. Though the CSS3 language is not terribly complicated, certain new advanced features can be confusing. If you’re not familiar with said features then you may find CSS3 a bit difficult, but let’s see if we can help. If you would like to be a CSS3 specialist or even if you just want to be more familiar with it, here are some tips that can help you to reach your goal.

How centering in CSS can help you to understand CSS3 transformation. Some people find it difficult to deal with centering items in CSS. In fact, they cannot track the centering problem of a web design. This is a very simple procedure and one can easily track this with a little help. Usually, designers try to use perfect positioning so that the elements will be rightly centered, but if you want to choose vertical centering, it’s better to go for CSS3 transform.

Container drive is required for providing an absolute position. However, vertical centering can also be achieved by auto-adjusting through the use of CSS3 transform. You just need to follow some procedures:

                          Go to the div. container, keeping the position relative

                          then go to the div container p, keeping the margin 0

                          make the position absolute, keeping the top 50 %

                          and then go for CSS3 transform

This works exceptionally well for animation since CSS transform is able to apply several visual effects to the elements such as rotate, move, and skew, among others.

Get acquainted with CSS3 specificity. Not everyone is acquainted with the word specificity. This is a basic idea and anyone who wants to be a CSS3 expert must need to be acquainted with this word. Specificity makes the browser choose the appropriate property values to an element and gets them applied through the browser. But the problem of the specificity is that it limits CSS rules to some elements only.

To resolve the problem, you just need to know some specificity rules. For example, ID selectors contain more specificity than attributive selectors. Rules getting more specific selectors will enjoy greater specificity, and override previous and conflicting rules. If you’re still facing specificity problems, then make sure that you are not using the important declaration button and give more effort to use fewer selectors for styling an element and place your style in LVHA order.

Prefer HSL over RGB. Most of the people choose the old RGB hex tag system for the specification of the colors. In the first impression, it looks good as it is specified with different colors like black, red, and blue separately. This RGB system is fine if you’re not working with color controls that require complementary and contrasting shades with similar saturations. In that situation, you'll want to choose HSL in order to get several conversions. And the process will be easy since CSS3 supports HSL color specificity.

Hopefully this has provided a little help to anyone who wants to start using CSS3. Stop back next week for a discussion on the benefits of using CSS syntax for web design.

Posted on August 21, 2015 and filed under CSS Tips and Tricks.

The five qualities of a good project manager

Before we wrap up this project management series, let’s review that which we’ve learned so far. The introductory blog, P is for Project, outlined five important attributes, the Five Ps if you will, of project management – prepared, precise, proactive, perseverance, and perpetual learning. The subsequent installations expounded upon each of these. When considered individually, these characteristics  are incredibly important in their own right, but they are also related and interconnected. This final post addresses the final piece of the puzzle, the importance of learning perpetually.

P is for Perpetual Learning

It goes without saying that, as we move through life, we are continuously learning and growing and adapting in both our personal and professional lives. This is also critical in project management.  Despite the fact that most projects have similarities and common threads, each is also unique. Even projects which look similar on the surface, with the same objective, are rarely identical in planning or implementation. In order to stay current, relevant, and effective, PMs must be learning constantly.

Project Managers must not only have the essential industry-independent skills, but they must also quickly be able to gain a working knowledge of the particular industry in which their current project resides. For example, if one is managing a software development project, they will want to know something about programming concepts. Now, to be clear, PMs don’t need to be experts in every field. Can you imagine? The intricate level knowledge can be left to the team members who are doing the technical work and are highly educated in their respective fields. PMs however, do need to have a basic understanding and a foundation of information so that they are able to communicate and facilitate conversations between the client and the technical side as well as the ability to understand that conversation and maintain the confidence of the client. So how can one perpetually learn and obtain the basic knowledge that they need to lead a successful project when the topic at hand is unfamiliar?

Google it. These days, it’s not nearly as difficult as it used to be to research just about any topic you can name. Do you remember the days of libraries, card catalogs, and gilded-page encyclopedia sets?  Well, these days we have access to the most fantastic learning opportunity in history: the internet. Now many of us still love libraries, the smell of books and the tangible quiet is a source of much nostalgia and we’d never stoop to insult their efficacy. In fact, if you prefer a little more of an old school approach, the local library is the place for you. But for those of us who have busy schedules and maybe appreciate quicker access to information, there’s always your friendly neighborhood search engine. For folks newer to internet research, there are several websites with tips and tricks on how to refine your search to maximize your productive time.

Pay attention to the expert. In addition to doing your homework, it is important to listen intelligently when interacting with the client during the initial stages of the project and attempt to internalize some of the concepts and jargon. Speak regularly to the member(s) of your team with the necessary technical expertise and request frequent updates. It’s important that more than one person of the technical team be involved. Multiple trusted points of view are extremely valuable.

Lessons learned. As any project draws to a close, it’s not a bad idea to review the process and everything that you learned. Regardless of success or failure, you will learn something. What worked well with the project? What would you have done differently? What did you learn about a particular niche industry that you didn’t know before? Documenting your thoughts could be exceedingly valuable to reference in the future. It could be several years, but it’s always possible that a similar project could present itself.  And, if a client was happy with your work, they could be returning to you with another project. If enough time has lapsed though, it is entirely possible that you have forgotten all that you learned. If you have notes to which you can refer, it could jog your memory and save much time in not duplicating your research from the past. Perpetual learning is a good practice in life. In project management, it is essential.

The PM role requires skill and planning, an ability to forecast and adapt, communication, confidence, attention to detail, organization, and both the desire and ability to coach as well as to learn.  All of these concepts play a part in the Five Ps – prepared, precise, proactive, perseverance, and perpetual learning. We hope that this series has been helpful in providing a foundation for successful project managers. Just remember: it can be done and you can be the one to do it.

Posted on August 14, 2015 and filed under 5 Qualities of a Good PM.

The five qualities of a good project manager

So let’s recap that which we’ve discussed so far. In the introductory blog in this series, we outlined five important attributes, the Five Ps if you will, of project management– prepared, precise, proactive, perseverance, and perpetual learning. The subsequent installations expounded upon these in P is for Prepared, P is for Precise, and P is for Proactive. Each of these characteristics is so important in its own right, but they are also interconnected and I hope that is becoming clear as we move forward. Let’s talk about the next critical element of project management: perseverance.

P is for Perseverance

This concept is a bit more difficult to address as it tends to be slightly more abstract.  There are tools and techniques available, as we’ve demonstrated, to help keep one prepared, precise, and even proactive. But what’s out there to aid with perseverance?  It really is more of an inherent quality, but that’s not to say that it can’t be taught or learned (luckily for us or this would be a fairly short blog post). Author and Program Manager Richard Newton, calls perseverance the “underestimated skill of the successful”.  That’s so true. Very few successes have resulted from managers ignoring or mishandling the inevitable problems which arise during the course of any given project.  One of the responsibilities of a project manager then, is to instill in their team an unwavering commitment to their project and having the perseverance to turn mistakes or unanticipated problems into opportunities. While there aren’t as many tangible tools to aid with perseverance, here are a couple of thoughts to keep in mind.

Avoid creating unnecessary problems, keep things in perspective. It can be easy to feel like you’re losing control and that can cause one to feel like throwing in the towel. In most cases, however, simply giving up isn’t really a viable option. Try taking a break, or a day off if that’s possible, to get some distance and perspective and then get back in the game. Spinning those wheels, so to speak, is only going to make the situation more difficult. When you begin missing milestone and deadlines it only adds to the stress and then, well, then the downward spiral continues. Don’t over think. Don’t invent problems. Don’t make it harder on yourself.

Strengthen your resolve, focus on the goal. Don’t get dragged down by an unhappy client or by a project set back. If you experience an impediment, let it feed your flame rather than extinguish it. Remind yourself of your goal and adjust your plan if necessary.  If you must adapt your plan, look for new opportunities. Some of the greatest innovations were born from an accident when one was pursuing a completely different outcome. Listen to your inner voice and learn from your mistakes. You may find that your ability to overcome obstacles will actually serve to build your confidence in yourself and motivate you to continue forward. And that’s exactly how you’re going to persevere.

Franklin D. Roosevelt, who could be the poster child for surmounting obstacles, advised that when you come to the end of your rope, tie a knot and hang on.” Perseverance is not about avoiding problems, it’s about overcoming them. Hopefully we’ve provided you with a way of thinking which may inspire you to do just that. Check back next week when we conclude this blog series and discuss the final topic in our project management series: perpetual learning.

Posted on August 7, 2015 and filed under 5 Qualities of a Good PM.

The five qualities of a good project manager

In the introductory blog in this series, we outlined five important attributes, the Five Ps if you will, of project management– prepared, precise, proactive, perseverance, and perpetual learning. The next installation expounded upon the first in P is for Prepared followed by P is for Precise. So, now let’s move on to talk about being proactive and the implications for project managers.

P is for Proactive

The word proactive is an adjective that means creating or controlling a situation by causing something to happen rather than responding to it after it has happened. Simple enough concept, right? Even logical. And yet, proactivity is more rare than it should be. The world would probably be a much nicer place in which to live if we didn’t wait for chaos to ensue before we addressed an issue.  But, that’s a conversation for another time. For now, let’s just talk about our little corner of the business universe, the world of project management.

So, what does it mean for project managers to be proactive? TechRepublic identifies three kinds of project managers. The first is the accidental PM who comes up through the ranks and maybe understands the types of projects that they are managing, can build a work plan, and can assign work to other team members, but they don't have the project management discipline that comes from experience. The second type is good and understands that successful project management requires one to oversee issues, scope, communication, and  risk, but they don’t really embrace the idea that their approach really needs to be a proactive one in order to be effective. The third kind of PM, the one that we all want at the epicenter of our structure, is someone who has made the mental transition to apply his or her discipline on a proactive and ongoing basis.

The good PM understands the basic responsibilities of a project manager. The proactive PM has internalized these responsibilities and integrates them into the scope of the project work. Proactive PMs don't perform their duties simply because they're required. They perform their responsibilities because they fundamentally understand that these processes greatly increase the possibility of success. So, how do you go from being good to being proactive, you ask? Here are some tips.

Clearly define the project. This should be done in advance of the project commencement so that everyone on the team understands exactly the work that is to be done and their role in ensuring success.

Communication and customer engagement. A proactive PM doesn’t just do the bare minimum by providing occasional status reports, but takes it a step further and manages communication, anticipating the various needs of the client. Utilizing a communication plan can be really helpful. You can download a free template at Project Management Docs if you don't have one of your own.

Time control. Even if you manage risk, plan ahead to provide yourself with the time you’ll need to address unanticipated problems.  Mind Tools calls it “buffer time”, which is a nice segue way into the next point…

Risk management. Being proactive means trying to recognize risk factors from the very beginning of a project and utilizing a process by which to address all major problems as they occur. And inevitably problems will arise, people. They just will. Even if one is great at managing risk, that buffer time mentioned above is critical.

Review Processes. In the blog installation on precision we provided an overview of some techniques, such as the Critical Path Analysis (a fancy term for a project flow chart) that can help PMs to visualize their project and aid in efficient management and process determination. There are also free online project management interfaces, such as Asana, which can provide an organizational chart and process configuration if you do not already have one in place.

Quality solution. All effective PMs determine in advance the client’s expectations for quality and develops a plan to make sure that the level of quality will be met. It almost becomes a matter of pride for some PMs and that’s when the chief knows they have a keeper.

Last, but in no way least, budget management. Proactive budget management is so important and yet commonly overlooked. Even just using a simple spreadsheet as a forecasting tool may end up saving the day!

Project management can feel like a harrowing job to assume, but it can be done. And it can be done well. As an Extra Nerd, I have the pleasure of working daily with an extremely effective project manager, as a matter of fact. In the technology industry – and in many other industries, for that matter – you will find fewer more valuable members of your team than a proactive project manager.

That being said, another of the integral characteristics of a great project manager is perseverance so stop back next week for another post as we continue to dissect project management and, hopefully, provide PMs with a foundation for success!

Posted on July 31, 2015 and filed under 5 Qualities of a Good PM.