Mobile-Friendly Sign Up Design_User Experience_User Interface 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. Ever notice your mobile phone’s keyboard varying from one that displays an ‘@’ sign beside the space bar and one that doesn’t… …or, one…
Taking Your Craft Seriously Uncategorized 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…
Vertical Rhythm in Your CSS Design_User Interface 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…
SOLID Made Easy – Dependency Inversion Principle Uncategorized The last principle in SOLID is the Dependency Inversion Principle (DIP) stresses out the importance of having dependencies based on abstraction. It states that: High-level modules should not depend on low-level modules; both should depend on abstractions. Abstractions should not depend upon details; details should depend upon abstractions. The first statement of the principle simply…
The Viewport Size Is Rarely Equal to the Screen Resolution Design_User Interface 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…
What Satya Nadella Does to Make Software Development Cheaper? Uncategorized 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. The cost of software is not determined by how fast…
Important User Experience Considerations Design_User Experience Designers are known to be dreamers. 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…
SOLID Made Easy – Interface Segregation Principle Uncategorized 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 Interface Segregation Principle states that clients should not be forced to implement interfaces they don’t use. Instead of one fat interface many small interfaces are preferred based on…
SOLID Made Easy – Liskov Substitution Principle Uncategorized 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: Let (x) be a property provable about objects x of type T. Then (y) should…
Microinteraction—Think Small Design_User Experience Common knowledge’s understanding of design doesn’t usually go farther than what the eye sees, but a cultural icon of invention said: “Design is not just what it looks like and feels like. Design is how it works.” —Steve Jobs Most of the time, when a user is asked why they like a product that they often…
SOLID Made Easy – Open-Closed Principle Uncategorized After learning about the Single Responsibility Principle, we have the Open-Closed Principle which is the second principle in SOLID. A class should be open for extension but closed for modification. The open-closed principle suggests that when a new functionality is to be implemented we should create another class or object rather than modifying existing code…
11 hidden requirements for your IoT devices Uncategorized 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…
SOLID Made Easy – Single Responsibility Principle Uncategorized 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. SOLID stands for: S – Single Responsibility Principle O – Open/Closed Principle L – Liskov’s Substitution I – Interface Segregation D – Dependency Inversion Single Responsibility…
A Developer’s Morale Uncategorized 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? One way or another, they are not happy…
How the FAQ may kill your App Uncategorized 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…
Code Less in C#6 Uncategorized When a new version of any technology comes out they usually boast something that would make that version stand out. In C#6, the main focus was on the small features and improvements in order for C# developers to write better and cleaner code. Let’s find out how many new features are in this sample code: C# using System; using static System.Console; public class Program { public static void Main() { var developer = new Developer() { Name = "Benj", YearsOfExperience = 2 }; developer?.DisplayDeveloperInfo(); } } public class Developer { public Guid Id { get; } = Guid.NewGuid(); public string Name {get; set; } public string CurrentProject {get; set; } = "Some Project"; public int? YearsOfExperience { get; set; } public void DisplayDeveloperInfo() => WriteLine($"Developer ID: {this.Id}nName:{this.Name}nProject:{this.CurrentProject}nYears of Experience:{this.YearsOfExperience}"); } 1234567891011121314151617181920 using System;using static System.Console; public class Program{ public static void Main() { var developer = new Developer() { Name = "Benj", YearsOfExperience = 2 }; developer?.DisplayDeveloperInfo(); }} public class Developer{ public Guid Id { get; } = Guid.NewGuid(); public string Name {get; set; } public string CurrentProject {get; set; } = "Some Project"; public int? YearsOfExperience { get; set; } public void DisplayDeveloperInfo() => WriteLine($"Developer ID: {this.Id}nName:{this.Name}nProject:{this.CurrentProject}nYears of Experience:{this.YearsOfExperience}");} …
How talking to a Rubber Duck Improves Productivity Uncategorized 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…
10 typical problems in software development projects part II Uncategorized 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. 6. Poor Communications. Avoid mistrust by keeping the communication lines open at all times. SCRUM states that during…
10 typical problems in software development projects part I Uncategorized 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…
2 simple rules to keep in mind when designing a report Design_Uncategorized 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. I read this quote in different variations over the years, and you can see that it is old as it refers to ink rather than pixels. Nevertheless, it is very…
5 best practices your exception handling strategy can’t do without Uncategorized 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…
9 practical tips to better estimate software development effort Uncategorized 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…
Instant insight in hard to maintain code Code Quality_Tools_Uncategorized 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. We have blogged before that controlling your metrics is…
16 valuable tips to better express your intent. Code Quality_Training_Uncategorized 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…
How abstraction can reduce complexity, and increase testability and maintainability Code Quality_Design Patterns_Tools When I was a junior developer I had no clue what I was doing and I had no one above me that guided me in the right direction. All I had was a lot of confidence (that I was the best software developer in the world) and a lot of good intentions. Since one of…
5 Principles to Help You Achieve Visual Clarity In Your UI Design_User Interface 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…
9 Tips to Speed up Your Web Application Design_User Experience “The results indicate that web pages that were downloaded faster were perceived to be more interesting than the slower ones.” Another conclusion from the same study: “The results show that satisfaction decreases with increases in response time.” The latter quote does not only apply for web pages, but also for desktop applications or mobile apps. The…
2 Tips to Reduce the Cost of Your Software Development in the Long Run Uncategorized 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. Corrective (21%) maintenance: Correcting discovered errors, generally the result of bugs or misinterpreted features. Preventive (4%) maintenance: Correcting latent…
13 User Behaviors Your Applications Need to Support Design_Heuristics Have you ever noticed that most, if not all, ‘next’ and ‘confirmation’ buttons of programs and wizards are usually located on the right-side area of the user interface? There is a reason for that. A good interface design starts with understanding your user. The better you understand your user the better your interface design, and…
How patient are you? Design_User Experience 4 time-frames every developer should know 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…
The Two Sides of Software Development Uncategorized 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…
5 Guidelines for Writing a Good Error Message Uncategorized Regretfully, error messages are a part of our craft, and if I ask around, there are few developers who would know how to write a good error message. To give you a good idea on how poor developers are at this, have a look at the error’d section of thedailywtf. Although part of the UX,…
80% of production code worldwide is of poor quality. Code Quality_Uncategorized I was shocked to find out the statistics about the quality of code. I ran into this document which claims it is estimated that there are about 100 billion lines of production code worldwide. As much as 80% of it is unstructured, patched and poorly documented. I have seen, been responsible for and have contributed to…
The Gang of Four Decorator Pattern Design Patterns_Uncategorized 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). The…
Why UI Patterns? Design_User Interface Charles H. Duell, once the commissioner of the US Patents and Trademarks office, said, “everything that can be invented has been invented.” A lot of people now would probably disagree with him, especially that we have the Internet, thinking and evolving non-organic things, and such. While the question of where invention ends and where innovation begins…
11 Tips for successful software development outsourcing Uncategorized 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…
11 Tips for Successful Unit Testing Training_Uncategorized_Unit Testing 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…
GhostDoc Code Quality_Tools_Training_Uncategorized If you are using StyleCop then GhostDoc is a tool you can’t do without. GhostDoc will help you document your C# code. 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…
StyleCop Code Quality_Tools_Training_Uncategorized StyleCop is an extremely useful Visual Studio plugin that helps you validate your style against a set of predefined rules. It runs straight from the editor and shows errors and warnings in your error list. The big benefits of using this tool become clear in projects with larger team sizes. All developers will code in…
The Prize of Running the UX Sprint User Experience How does one eat an elephant? For obvious reasons, one cannot eat it whole. 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…
9 Tips for Collective Ownership and Clean Code Code Quality 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…