It may seem like a small improvement, but displaying the right keyboard to a user can help ease friction on sign up, and make the whole process faster and more pleasant.
Although it is easily overlooked, being a software engineer comes with a great responsibility. According to Robert C Martin, a regular new car comes with 100 million lines of code, where he jokingly adds ‘written by a 22-year-old at 3 o’clock in the morning’. It scares him, and if you are tech savvy I am sure you share that opinion. Although funny – this is NOT a joke—being a software engineer does put you in situations where you write code at 3 in the morning for a piece of software that affect the lives or at least the livelihood of people.
Typography and typesetting form the foundation by which your whole user interface stand on. For a designer, everything else—color, art direction—is relative to the intention of the product owner. It’s very malleable. The one thing that should be unbendable is the system by which the letters are laid out on the page. If it’s not solidly built, it can grow bloated and unwieldy. Small changes that would usually take less than an hour to apply, would take double—or even triple—the development time. The size of your file can also double than how it normally would be, and that’s not good for performance. On the other hand, if it’s not the code that doesn’t suffer, it’s the legibility that takes a hit. The vertical rhythm gets compromised in ways that can easily tire the eye of the user.
The last principle in SOLID is the Dependency Inversion Principle (DIP) stresses out the importance of having dependencies based on abstraction. It states that:
It’s an easy pitfall to fall into for a designer to consider a screen resolution when designing and testing instead of an actual browser viewport size. After all, even that community that develops standards to help web designers and developers make better decisions about these things (w3schools.org) provides that sort of data. Even with shiny new things like the viewport unit, this can still have a negative impact on one’s design, especially when the allotted viewable area has a shorter dimension than the content it is intended to show at a glance.
It’s that time of the year we have to hand in our budgets. Making a budget for software development is hard because of all the uncertainties. What are we going to make? How long will that take? What if it does not go as planned.
It takes a lot of experience for a designer to ground one’s self to the realities of designing a product. It’s easy for an inexperienced designer to overlook these parts of the user experience and get fixated on innovative ideas. When these small user engagements fail because of oversight, they can pile up to bad user experience. That’s not how you gain and maintain your user’s loyalty, which is not good for business. The following things are ones that can possibly improve or hurt your business depending on how they are designed and should always be on a designer’s list of things to consider.
The fourth principle in SOLID is the Interface Segregation Principle (ISP) which is a very simple principle and we must put into practice whenever we can.
The third principle in the SOLID principles is the Liskov Substitution Principle (LSP), it was named after Barbara Liskov as together with Jeannette Wing she was able to come up with a definition for subtyping. They defined the principle as:
A thoughtfully designed microinteraction is part of good user experience. They are the small moments in a product that would happen unnoticed by common users because they are expected to be there, but when ignored in the design process, something supposedly unnoticeable becomes a very big annoyance, and can drag down a product’s rating.
After learning about the Single Responsibility Principle, we have the Open-Closed Principle which is the second principle in SOLID.
The world we currently live in is going to change – it is predicted that by 2025 we will be having 7 trillion devices connected to the internet serving about 9 billion people. In this decade we will have to overcome a lot of challenges to increase bandwidth capacity to cater for all these devices (at least in the 3rd world), but for the developers, it will largely increase the complexity of their work.
The SOLID principles are a foundation of good OOP practices. In order to develop high-quality software applications, it is essential for every developer to understand and to practice them.
Have you ever wondered why your software development team loses motivation? Valuable members of your team start looking around for other jobs? They are less motivated to improve the product? People start showing up a little bit later, or go home a little bit earlier than before?
Software development is expensive, but this should not be the reason your users are left in the dark trying to find their way around in your application. A product design sprint will help you test your ideas before you actually start developing. If you own an application that is used a lot – you will need some form of support.
Have you ever had that feeling that your solution could be coded in less lines? Have you ever been stuck and can’t find a way out? The intent of today’s post is that if you find yourself in any of these situations, that you regain productivity. Here are a number of random tips that I picked up over the years.
This is part two of the article that I wrote to advice on overcoming project management pitfalls in software development projects, as found in the original post here on tech republic. The first post can be found here.
Today’s post may not be anything you don’t know yet. Software engineering is a craft and takes time to perfect, but a lot of typical problems can be addressed. Always when I google “problems in software development” I end up on this page on tech republic, stating 10 common software development problems. In this post I will address the first 5.
Graphical excellence is that what gives the viewer the greatest number of ideas in the shortest time with the least ink in the smallest space.
Users are demanding of the software they use. It needs to be reliable and assist them to complete their tasks every single time in a user friendly manner. A user may accept a well written error message when they understand the cause cannot be attributed to your application, but it is important to have a good exception handling strategy when you setup the infrastructure for your project. Here are some good practices that we found are useful to develop your exception handling strategy:
We are often requested to quote for a Minimum Viable Product (MVP), however before we actually have an idea on how long it takes, we need to understand the problem domain. We also recommend to find out if your users are actually happy to use your new idea using the UX Sprint. Once you get this far, it becomes easier to estimate the effort it will take to actually implement your product. Also it helps you determine what parts you do not need to develop, and can save you money from developing the wrong features.
Usually I would not write about commercial software however today someone gave me this link of a great online service that use a very smart data visualization technique to give you direct insight in the parts of your source base that are more difficult to maintain.
There is no single definition for good or clean code. The definition will change per developer or team, but one thing the definitions will have in common is that good code expresses its intent properly. When your code looks like the hard to read scripts they show in Hollywood movies, take these tips to improve the readability of your code.
Cyclomatic complexity is a software metric, used to indicate the complexity of a class, file, method or application. It is a quantitative measure of the number of linearly independent paths through a program’s source code.
Humans are allowed a finite amount of time each day, and with all the demands of post-postmodernist day life, a designer must come to realize that an application’s users only have small attention span to allocate for such things. That is what separates these tools from humans: they shouldn’t demand a long amount of attention as most humans normally do. Although, the fact that these tools still need to interface with humans, they still need to be designed around the ideas of how humans perceive things. These set of ideas called the Gestalt Principles—developed by German psychologists back in 1890—have long been used by designers to help them clearly communicate ideas properly through the effective management of shape density and whitespaces.
The thing you should remember here is that performance is a huge factor of an excellent user experience, and this is also the responsibility of the developer. In this chapter, we will look at common techniques on how to speed up a website.
For many decision makers, it is not clear that software maintenance is generally more expensive than the actual development of the application as this document shows. Historically in software development there are 4 types of maintenance cost.
A good interface design starts with understanding your user. The better you understand your user the better your interface design, and the easier it is for your user to reach his goal. Since the purpose of all applications is different, the design differs per application. Likewise, users are all different, however, people. In general, all behave predictably. Support the following user behaviors and your application is more likely to be a success than applications that don’t.
Users will navigate away from your website when it takes more than 4 seconds to load. This is a very bold statement that I read somewhere online not too long ago. Although I have little doubts that this is true in some countries, the user’s patience is highly affected by culture, age, demographics and the expectation of the user.
As a programmer, it always amazes me when I think about how a single click of a button makes a huge difference in another person’s life. As developers, it gives us a huge sense of fulfillment to say that “Yes, we made that possible.” What’s even more fascinating is when I start to think about the “magic” behind that button. How was it possible that in just a matter of seconds the system was able to save the user the hassle of performing a task manually?
Error messages are not necessarily caused by bugs in the code, and they are all about informing the user. The developer cannot help it when the internet connection does not work, or when a firewall is blocking the port that the application intends to use. The developer cannot help that hardware is failing and cannot connect to your smartphone. The developer cannot help that a power outage broke some sectors on your hard drive.
In my opinion, the maintainability of code equals the quality of code. If the code is unstructured or patched, this leads me to believe that it is difficult to maintain. A bold conclusion indeed, and something that makes us software developers look bad. Very bad! I have lived and professionally coded in the US, Europe, Africa and the Middle East and now in South-East Asia so I also feel qualified to say that poor code quality is not limited to any geographical boundaries.
Design patterns can be defined as time-tested solutions, or problem solvers for recurring code problems. At You_Source, we love design patterns as they help us save time communicating about code, architecture, and they help reduce the time developers spend on understanding code (which, according to various studies, developers spend 20% up to 80% doing).
UI patterns are a good starting point in figuring out how to communicate with the user how to get from one point to another while giving them a rich and memorable experience that will encourage them to keep using it.
They say there are two sides to every story; one that spreads like a wildfire and the other, the truth. Outsourcing has had a bad reputation all around the globe. Images of people working long hours in sweatshops and at very low rates are the first to come to mind when you hear the word outsourcing. However, this could not be further from the truth when it comes to the Philippines.
Unit testing makes or breaks a software development project. In small scale projects with a short life expectancy, this may not be integral but this is not the case for long-term projects. Maintainability of the source code matters, and testable code equals maintainable code. Unit testing your code will increase the lifespan of your application by several years, and significantly reduces the cost of change.
GhostDoc is a Visual Studio plugin that runs from the editor in Visual Studio. It creates skeleton documentation, and even attempts to guess the documentation based on the name of your methods. If you choose your method names well, you hardly have to change anything to the generated documentation.
The big benefits of using this tool become clear in projects with larger team sizes. All developers will code in the same style, and in the long run it helps your code base staying clean. Our advice: Don’t accept any warnings from StyleCop, like you should in your code.
It’s too big to fit in a human mouth. I can’t even imagine how one can cook a whole elephant. If ever it was possible—and I looked it up online—one would have to “cut it in edible chunks”. It’s just unimaginable to prepare a fire or get a pot big enough to cook, or contain a whole elephant meat.
Collective ownership encourages everybody involved to contribute new ideas to all segments of the project. As a project owner, collective ownership should be one of your primary goals. Although we developers take pride in being a species apart from the rest of the human population, developers are not very different from other people in the sense that nobody likes to clean up other peoples mess. For one it’s hard to follow the trail and it’s hard to rebuild something when it’s already broken at the very start.
5F, PHINMA Plaza, 39 Plaza Drive,
Rockwell Center, Makati City
359 Rivonia Boulevard
Unit 3203-4 No. 69 Jervois St., Sheng Wan
Hong Kong China
If you have a passion for high quality standards, and collaborative software development, get in touch with us.