How to perform Usability testing?

Preparing a test plan

The first step is to create a test plan. It is a very important step to determine what we are testing, what we are going to give to our users. Before preparing a test plan we need to:

  • Define what areas to concentrate on
  • Determine potential usability issues
  • Write a test plan
  • Determine what tasks will be tested

Website Usability Testing: How To Get Started Today | Hotjar Blog

A Test plan should include
  1. Objective
  2. Test task (scenario)
  3. End state (answers)

Well-formed task scenarios make smoother tests. Here are some quick tips for you to ponder over-

  • You(motivation) X…
  • What is… which X… how can…
  • Use specifics to see if they get (e.g. is X available?)
  • According to X(our app) what…
  • End with a question

Sequence the task in the order of easy (orientation tasks), difficult and moderate so that users don’t get frustrated at the beginning of the test. This can happen in case they face any difficulty in understanding their role.

Interact with participants before test starts

  • Explain to your participants that the objective is to test the software and not the participants’ intelligence. This is important as the participants may feel that their ability is being tested.
  • Explain how the test material and record will be used
  • Encourage participants to think aloud while using the product
  • Prepare a pre-test questionnaire and a post-test questionnaire

Why Usability Testing is important for your Web or Mobile App? - Zignuts Technolab

Prepare a checklist for Usability Testing

  • Success rates
  • Time on task
  • Errors made in performing the task
  • Confusion(unexpected user actions)
  • System features used / not used
  • System bugs or failures

During the test

  • Record techniques and search patterns participants employ when attempting to work through a difficulty, for recording we can use software like ScreenFlow or silverback (mac only)
  • If participants are thinking aloud, record assumptions and inferences being made.
  • Do not interrupt participants unless absolutely necessary
  • If participants need help provide some responses:
    1. Provide encouragement or hint
    2. Give general hints before specific hints
    3. Record the number of hints given
  • Watch carefully for the signs of stress in participants:
    • Sitting for a long time doing nothing
    • Blaming themselves for the problems
    • Flipping through documentation without really reading them
  • Provide short breaks when needed
  • Maintain a positive attitude, no matter what happens
  • Use a monotone tonality with users i.e. never let users know that you are super excited or your body language indicate them that they are doing bad and things like that.
  • In case users ask questions to try to get your consent if they are doing it right never give them direct answers instead use words like “Okay, uh huh”. Instead, ask reverse questions like “Is it what you were looking for”
  • Let them struggle and don’t over moderate

After the test

  • Hold a final interview with the participants and tell them what has been learned in the test, and if you noticed any discomfort in users or they gave a signal of confusion through “think aloud” during the test ask them more about such things.
  • Provide a follow-up questionnaire that asks participants to evaluate the product or tasks performed. The post-test questionnaire is generally used to gauge what users think of their performance. We should also include the questions like “What is the one thing that you would change…?”.
  • If video recording is required then get a written permission and respect participant’s privacy
  • Do not generalize the opinion unless 5-8 users indicate the same problem

Analyzing the collected data

  • Video Data
    • In less formal studies, video can be very useful for informally showing managers or disbelieving system designers exactly what problems encounter.
    • In more formal studies two types of analysis can be performed: Task-based analysis and Performance-based analysis-
      Task-Based Analysis is used to determine how user tackled the task given where the major difficulties lie and what can be done
      Performance analysis is used to obtain clearly defined performance measure from the data collected (task timing, frequency of correct task completion, frequency of errors, productive vs. unproductive time)
  • Analyzing Questionnaire
    • The quantitative type of questionnaire is often used when statistical data is required to emphasize the results of the test.
    • These questionnaires have some form of rating scale associated with it.
    • There are a number of different rating scales-
      • Three-point scale i.e. “Do you know how to copy a text” YES, NO, DON’T KNOW
      • Six point scale i.e. “Rate on the following scale” 1 to 6 from “very useful” to “of no use
      • Likert scale i.e. “The help function in this system gives solutions to complex problems”, “Strongly Agree, Agree, Slightly Agree, Neutral, Slightly Disagree, Disagree, Strongly Disagree”
      • Semantic differential scale

Once the questionnaire has been given to the selected population, the responses obtained on different rating scales are converted into numerical values and statistical analysis is performed.
Usually, mean and standard deviation from the mean are the main statistics used in the analysis of most survey data.
The questionnaire has to be designed as easy as possible and keep it short. Try to aim for no more than 2 sides of the paper

Strategies for analyzing the test results

Deciding upon the strategy to adopt will depend on the circumstances of the usability testing, including the time available and main objectives of the testing.

Top-down Analysis

Top-down analysis begins with an overall assessment of the user interface from the questionnaire, summarizing the major strengths and weaknesses.
This overall assessment can be collected from the results of the set of general questions on system usability

General questions on the system

Please provide your views on the usability of the website by answering the questions below. There are no right or wrong answers.

  • What are the best aspects of the system for the users?
  • What are the worst aspects of the system for the users?
  • Are there any parts of the system that you found confusing and difficult to fully understand?
  • Were there any aspects of the system that you found particularly irritating although they did not cause major problems?
  • What were the most common mistakes you made during using the system?
  • What changes you would like to the system to make it better from a user’s point of view?
  • Is there anything else about the system that you would like to add?

The answers to the general questions may highlight particular aspects of the interface causing problems, and a more detailed investigation may then be carried out to examine other instances where those aspects have been highlighted within the questionnaire.

Bottom-up analysis

A bottom-up analysis is a more detailed analysis that investigates the responses to each question within the questionnaire. This type of analysis will enable a more comprehensive picture of the interface to be generated. It is likely to yield a highly detailed specification of aspects of the interface requiring improvement, amendment, addition etc. A detailed analysis of each of the criterion-based selection will enable a summary to be drawn from the interface in terms of each of the criteria.

What to Do When Your Startup Idea Is Years Ahead of Its Time?

Seven Ways to Think Unique Startup Ideas that Spark Interest

We netizens have truly embraced the digital revolution. It is established that this is the era of tech startups. The global technology landscape is progressing towards more and more disruption and on an unprecedented note. But the looming question is, how is it going to transform business operations and what’s the next move?

In this fast-paced world, being ahead of time comes as an added benefit. But what about when the same applies to your breakthrough idea?

Is it a good thing if your great entrepreneur ideas are a decade too early?

Well, yes it is.

We all come across bold startup business ideas. And sometimes they are way ahead of their time. I have one in mind. You must have envisioned one too.

Sometimes it is the unavailability of the right technology that could have transitioned your innovative startup ideas into a reality, sometimes it is the determination to execute it and other times it’s the lack of funds.

The right thing to do when you’re stuck in such a situation is to pivot your solution.

To run any successful Startup, the ideation and discovery phase are extremely crucial.

A decade earlier the landscape was entirely different and we have witnessed exponential advancement over the years.

So, take a leap of faith, dig deep and understand the pain points you are trying to solve.

Don’t just give up on an idea because it lacks the technology or is way ahead of its time. You should look for alternative and accessible ways to solve the problem and make the most out of your entrepreneur idea.

What to do with a startup idea?

Dukaan raises $6 million in seed funding co-led by Matrix Partners India, Lightspeed India - cnbctv18.com

Think about it

What really is Innovation?

Isn’t it a breakthrough idea, something that’s not been done before? Something new, challenging, and meaningful.

An Innovator envisions a future. That future may not be in touch with the underlying reality but you must be determined and passionate enough to bring that change.

Innovation depends on a lot of things. While some factors may be completely out of your control, there are still certain things that you can control and influence.

This brings us to

1. User Analysis 

It is important to know who your target audience is and what’s going on with them. Conducting an in-depth user analysis is important. The data that you generate from users and their invaluable insights can help you build a better product.

Whether it is creating personas to identify user characteristics and behaviour, or user journey mapping that examines how a user will interact with your product, detailed analysis helps in finding the right product-market fit.

It is only after finding your niche audience and a market fit, that you can scale your business by identifying new customers in the target market.

2. Outthink the Competition 

Studying the competitive landscape is as important. Identifying the competition and evaluating their strategies to determine strengths and weaknesses provides a strategic context and helps in figuring out new opportunities. When you understand the competitive landscape, outthinking the competition and characterizing your unique value proposition becomes all the easier.

Don’t spend too much time on a business plan 

Laying out a business plan is a long process- one that involves a lot of time, effort, visualizing and strategizing on how to run and scale a successful business.

The key is to have a vision in mind, be clear with your end goals, but do not spend too much time on a perfect business plan. Rather, just begin.

3. Build an MVP 

How do you make sure that your brilliant idea stands a chance in the market? Developing a full-fledged product that no one seems to care about is a waste of time, money and effort.

Validated learning is always the answer to build a successful product. Building a basic first product that focuses exclusively on ‘need to have’ features and leaves the ‘nice to have’ for later is an ideal practice.

A Minimum Viable Product is a smart approach to building products. Your emphasis should lay on offering maximum value in minimum functionality and garnering maximum validation in minimum efforts.

4. Validate with real users 

It is essential to have at least five customers at the very start. If your idea is brilliant and sparks user interest getting the first five customers will be a cakewalk. However, if you can’t seem to find five users that find your idea interesting, it’s time to reconsider the idea.

Validating with real users will help you determine whether you are on the right track. Listen to what your customers have to say, observe what they do and how they interact with your product.

Knowing what the user wants can help you build a robust and scalable product.

5. Pivot 

According to the Startup Genome Compass of San Francisco which studies more than 13,000 Internet start-ups, “founders who change products and markets between one and three times raise more money than those who don’t.

Sometimes what you think is a great idea won’t necessarily work. Many big brands and successful businesses started with a certain idea but transitioned into something wholly different once they found their niche.

So, if your idea doesn’t work, don’t stick to it for far too long.  Instead, explore and pivot your startup. A willingness to embrace change helps us in identifying opportunities where others see nothing but a wasteland. Recognize the potential to tweak certain parts of your business – pivot, test, and learn.

If you see the potential for wholly new concepts or ideas, try to make the most out of those opportunities.

There are many examples of companies that pivoted and witnessed massive success as a result

1. Twitter 

In the world of social media, the most talked-about pivot is the transformation of Odeo into Twitter. Odeo began as a network where people could browse and listen to podcasts. After iTunes began taking over the podcast market, the company decided to shift the direction. After two weeks of coming up with new ideas, they decide to make a drastic change. They ran with the idea of a status updating micro-blogging platform which today we know as Twitter.

2. Pinterest

The famous ‘pinning’ social network Pinterest pivoted from “Tote”, a platform where people could shop and browse from their favorite retailers and were notified when the items went on sale.

Tote was losing on the shopping front since mobile app payments weren’t as easy back then. The creators tapped on a new-found opportunity, they realized Tote users were primarily interested in building ‘collections’ of their favorite items and sharing them with their friends.

Pinterest today has more than 291 million monthly active users worldwide and this pivot has been a huge success. The Tote-to-Pinterest transformation has been described as an “iterative” one, a direct outgrowth of what’s learned from the first business, “an unmet need, and obviously a huge opportunity.”

3. Instagram 

Today Instagram is one of the most widely used Social media platforms. This image and video sharing app boasts 1 billion users. But Instagram began as Burbn, a check-in app that included photo posting options, some gaming elements and allowed users to earn points.

Burbn was too cluttered so the creators pivoted, stripped all functionalities, and focussed on just one- photo-sharing that allowed users to post, comment, and like.

Making Instagram a visual platform that is clean and simple made it stand out.

So, what’s the big idea? 

According to a report by KPMG on the Indian Startup Ecosystem released in the second month of 2019, the number of Startups in the country grew from 7000 in 2008 to 50,000 in 2018. As per the report, this seven-fold increase has motivated people to look for innovation, especially in sectors like IT, AI,  AR/VR, IoT, Food Tech, and Healthcare.

In the last decade, the Startup ecosystem witnessed massive growth and the digital landscape saw exponential advancement. New-age technologies like Blockchain, AI, AR/VR are not only disrupting the landscape, they are also changing how we interact and go about our everyday lives.

The big idea is to START, Stay lean, build agile. Pivot Early and Iterate often.

An idea that is 10 years too early can be a great thing. It gives you the chance to be a disruptor.

And when you start something and things don’t really work out, leveraging other aspects, some tweaking here and there, and some pivoting can take you a long way.

Evolving with BlockChain

BlockChain defines a specific type of Database. They are designed to write once and read-only database. Which means that they are designed to create only not to edit or delete. The approach ensures that the data inside is secure and can’t be stolen or changed because everyone is watching and keeping all records of what is happening within the system. These databases are simple, transparent and immutable.We can consider it as a growing journal that adds new pages time to time. Blockchain database design is effectively used to enable Bitcoin as a money ledger.BlockChain database is different from a Conventional database. They are not housed in a data structure like array and tables. Also, they do not have any CRUD operations. The approach behind these databases is to open up the whole database for the end user and the user takes the responsibility for that system including security.

What is BlockChain

DNS on Blockchain: the next evolution of domain names?

The Blockchain is a very strange thing — simultaneously the most overhyped, least understood and most disruptive technology of our time.

For example- You want to send a public message to your friend with text as “Love you”. In general, you would walk up to your friend and simply express your feelings but what if your friend is far away from you. Still you have some options like, you will write a letter, send an email, send WhatsApp or Facebook message or via a friend you’ll convey your message to your friend or maybe some other way but the fact is that in all those ways you have to rely on someone and put your trust in their hands.

There may be fact that something can go wrong in between. The mail company may lose the letter somewhere along the way, or email/WhatsApp/Facebook service might get hacked or crashed while sending your message or, your friend forgot to convey your message. The message is very common and you will not be worried if it gets hacked but what about if you want to send some confidential information to your friend that is of billion dollars.

Would you still be relaxed until your message reached your friend? The answer is NO. This time you will not send your message the way you usually send it without any tension. Here comes the very popular technology blockchain that doesn’t rely on the third person and that’s why it is secure.

Blockchain was introduced by Satoshi Nakamoto in 2009 and he explained the idea in his article that changes the way we store data forever. The idea ensures that this type of storage will provide the facility in which everyone can see what is inside and make sure that everything is real, nothing is fake. If something is on the network it can’t be changed even a single bit, it stays forever.

All data shared in blockchain is compressed in blocks and once any block is added into the chain after being approved, it can’t be altered. In case if you want to change/modify something, you have to add a new block on the top of the previous block and that will notify all other participants that you have added something. It is also possible that you can go a block back to see the information stored earlier.

Let’s consider the previous example- Imagine that you had a nasty conversation with your friend and don’t want to go further with her/him and want to send a message saying that “You are not what you were before and I hate you!” through blockchain. Once this letter is approved, the letter is compressed into a block and added to the chain and all participants will get a notification that your friend is not trustworthy.

But after some days, all things sort out between both of you and now you want to send a message saying that “I still Love You” so you have to write another letter for apology purpose and when this letter gets approved and added to the blockchain, everyone will seeth the relationship changes between both of you. All the users can now see both letters, the earlier one where your friend was not trustworthy and the new one where you again have the same bonding. So what this example mean here? A blockchain is a records holder, where all data is safe and saved forever. You can read and analyze any data.

Blockchain has no central storage. Each member inside blockchain has a copy of all data. You can keep all data on your side but it is not necessary. No one can change even a comma in your data because all other members have the original copy of the data and will simply exclude the one where you changed something if you are not the owner of that data. The rule of the blockchain is that only the owner of the data can make changes.

If you want to make transactions on the blockchain, you need a wallet. A wallet is required to store and exchange bitcoin. Blockchain member gets two keys: a private and a public one. One interesting thing is that how the system knows that it’s you who is making changes? Well, the answer is with the help of these keys and asymmetric cryptography.

If a message is encrypted using a particular public key, only the owner of the paired private key will be able to decrypt the message. When you want to send a message to your friend through a blockchain, you need to broadcast a message encrypted with the private key of your wallet, only you know the private key of your wallet which is required for unlocking the wallet. As a result, your message gets encrypted and generates a digital signature on it.

Each encrypted message needs to be approved by the other members or we can say by their systems before it becomes available for the receiver party. A digital signature is used by blockchain computers to double check the source and the authenticity of the requested transaction. The digital signature is a string of text that is the combination of the transaction request and private key, therefore it cannot be used for other transactions. If you make any change in the transaction request then the digital signature will change.

Your friend can easily access the message that you want to send him/her using the receiver’s key, which is, in turn, is generated somewhere along the lines of encrypting and signing your messages/transactions.

The total number of possible Bitcoin addresses is 2¹⁶⁰ or 1461501637330902918203684832716283019655932542976. This large number protects the network from possible attacks while allowing anyone to own a wallet. Also, an attacker has to compete against the whole network to break the blockchain system which is almost impossible.

For now, it is almost impossible to hack your private key because it is a very long and complicated as shown above. So saying blockchain is the new era of storing data in a secure way will not be a wrong statement.

Kick-starting Amazon SES

We have been using Amazon EC2 (Elastic Compute Cloud) as the deployment platform for a client. EC2 is part of the Amazon AWS cloud computing platform.We have problems sending bulk email notifications using Gmail for this particular application. Gmail has restrictions on bulk emailing, and as far as I know, Google does not support emails in bulk, as of now. Google prefers to use Google Groups for bulk emailing.

Anyway, since we were already on AWS and SES was made available this year, we decided to use it.

New – Receive and Process Incoming Email with Amazon SES | AWS News Blog

I’ve been reading through the ‘Getting Started’ and other Development Related Documents, available here .

The basichigh level with SES are:

Signing up for SES. An existing AWS subscriber already has SES enabled.
Registering the email ids from which we want to send emails. This is basically similar to an email verification process. I believe one can register / verify up to 100 email addresses.
Test sending emails. Amazon provides a set of Perl scripts for testing the API from the command line. And it provides SDKs for Java, .Net, Python, Ruby, etc.,.
Applying for production access. Before getting production access is a 2,000 emails per day limit during the testing phase.is
Pricing – It costs $ 0.10 per 1,000 emails, but the first 2,000 emails for an EC2 customer are free. Data or bandwidth cost is separate, which starts at $ 0.12 per 1 GB for the first 10 GBs, and then gradually decreases the GB of use. More details available here .

Sending Limits – 10,000 emails per day. I’m sending emails sent. There are not many bounces or complaints on the emails sent. More details here .

The sending limit can go up to 1,000,000 emails per day. In case of over 1000,000 emails per day, they can contact AWS support directly and present their case. AWS may increase the limits for dry customers.

Sending Rate – Starts at 1 email per second and goes up to 90 emails per second, again.

Usage Statistics – You can not buy statistics from the Amazon other than period. The statistics can be retrieved using the web-based SES dashboard.

AWS.Net SDK – We are using SES from a .Net based app, and integrating the SDK provided by Amazon was quite painless. Code samples are also available on the .a.netbased app, and integrating the SDK provided by Amazon was quite painless. Code samples are also available onthe .Net SDK website

An interesting undocumented feature of the AWS. Net. SDK is, for example, log4net. Log4net for logging on. And it can also be logged on with the new logger named ‘Amazon’. Although, some people have had a more pluggable logging, where one could have a plugged-in a different logging library.AWS.Net SDK is, for example, log4net for log in. Log4net for logging on. And it can also be logged on with the new logger named ‘Amazon’. Although, some people have had a more pluggable logging, where one could have a plugged-in a different logging library.

Trouble-shooting – Amazon SES has been around for the web. The AWS forums is also a good starting point. Most of the issues faced solved on the forums.

Email Authentication – Sender Policy Framework (SPF) and Sender Email authentication mechanisms can easily be used with SES. These mechanisms basically invoked the DNS TXT record which specifies ‘amazonses.com’ as a sending domain. Amazon recommends setting up these records as a minimum.

For those who need to implement DomainKeys Identified Mail (DKIM) authentication, it is not offered by the DKIM specification.

So, that was a brief introduction to Amazon SES. Hopefully, it will save some time for SES.

AWS has been transformed into the dotcom era, are now finally coming true.cloud based offerings, looks like the promises made on “Cloud computing” in the dotcom era, are now finally coming true.

MUST-LEARN THINGS IN DESIGN SCHOOL

Getting fresh out of grad school, with a degree in design, it’s almost natural to feel like you’ve finally conquered the design degree. You might think, now that you’ve mastered designing, you can go ahead to soon become a star designer, working with magnificent clients and world-famous brands. It’s good to dream but it’s wrong to assume it’d come this easy. All of this is far from the truth. Reality hits hard when you join a designing company and begin working. You will come to realize that before considering yourself a complete designer, you need to understand the fundamentals and know the crucialities of designing. However it may sound, portfolios won’t help in your successful career, merely your skill and knowledge will lead to your success.

The things you learn at your first job and even in your further jobs will always be as crucial as your educational degree. Designing alone won’t suffice, teamwork, communications, client-skills, social aptitude, professional relations, all of these things play a significant role in your dream of becoming a successful designer.

Here are a few things you’d wish to have learnt in design school!

SOFT SKILLS

If you’re an artist, then why are soft skills required? Well, being a designer, having knowledge about design only is not quite enough. In order to do designing, you will first have to think, observe and articulate your ideas. You will be required to have justifiable ideas and designs. If you won’t be able to answer and explain the why’s of your choices to your clients, then you’d have to say goodbye to client-satisfaction. If you don’t have answers, then you won’t be able persuade your clients, leading to the crashing of your plans and ideas. Furthermore, you have to manage your time, communicate with your seniors and interact with your teammates, maintaining a cordial relation with everyone. Hence, you need to make sure of acquiring soft skills before you jump onto your plans further. 

MANAGING CLIENTS

Managing multiple clients is not at all an easy job, it gets harder as you grow along the way. It’s not to scare you, rather, it’s here to prepare you. You must follow one rule of thumb- LISTEN. Remember, hearing and listening are two different things and to manage clients effectively, you need to listen. If you listen properly, only then you’d be able to clearly understand clients’ views, needs and feedback. This also enables you to understand whether your idea has been bought or whether it turned out like a slam-dunk, straight up dead. Being capable of responding positively to your clients and being welcoming of their feedback, helps you in managing the clients better and get your work done in an efficient way.

FUNCTIONALITY >  DESIGN LOOKS

Real world websites are for providing better results and not just for pleasing aesthetics. Designing pretty looks is not effective, if it’s not functional and dynamic. Hence, we aim at designing good-looking, yet functional websites that appeal to the target audience effectively. This helps you beat competition and let’s you stay on top. At the end of the day, we create and design websites to build a brand, take lead and drive audiences.

NEW IDEAS, ALWAYS WELCOMED

Designers are constantly required to come up with fresh ideas for brands and sometimes even are asked to bring multiple ideas to the plate, for the same project. It can be quite intense! And it’s a possibility that you might get designer’s block, so to break it you will have to sit down with your team members. Then you brainstorm various ideas, discuss and sift through those ideas. That’s how you quickly come up with fresh ideas and interesting design angles. It makes things a lot smoother.

THINK BIG, LOOK AT THE WHOLE PICTURE

Working a job requires completing tasks within tight deadlines, where you have to make close calls. It can be really consuming. The deadline pressure makes designers forget the essence of time and hence leaves designers caught in the web of little details and nuances. Therefore, it is important to be able to take a pause and have a good look at the whole picture, every design, detail and variation. To help create focus and effectiveness, ask yourself this- what is the purpose of my design? Where is the user and what do they require? How will my design provide sense to the user’s decisions? What are the technicalities?

Once you find the answers to these, you will be able to calmly get your work done.

OWN YOUR STYLE

Design school often asks you to design for a specific set of products and hence you end up with similar designs. Although, you learnt a lot but you weren’t challenged enough. You need to have that kind of challenge every now and then to jog your sense of style. You owe it yourself to find your own style and way of conducting your work. Your unique approach is what will get you up that success ladder, it will make you stand out in the crowd.

Here’s the path to your dreams, become that star designer! It might feel lousy at times, having to go through a long process, but trust me, it is worth every second. 

 

The Abysmal Developer

I’m not sure if there are any real metrics to judge the quality of software developers thus no one knows how good they really are. The thing that comes closest to rating a software developer is the feedback from their peers – what do they think about their programming abilities? Generally software organizations don’t invest in a 360 degree feedback thus most of us are always clueless about how good we really are. There is a lot of literature on how to become a better or great developer but there is hardly anything out there to identify a lousy developer. This is an attempt to share some of the top-notch qualities of a lousy developer. Well, think of it as an “Good Developer Anti-Pattern”.

Mistakes I've made as a junior developer — and how you can avoid them. | by Jack Finlay | We've moved to freeCodeCamp.org/news | Medium

Writes code that only machine can understand. The lousy developers take great pride in writing complex code. There would be no separation of concerns, everything would be one giant ball of spaghetti code, the methods would as long as the Great Wall of China, the variable names would be unintuitive as if an obfuscator had named them.

Never keeps the team informed about milestones. Who gives a shyte!? I ain’t telling nobody about the daily progress. Yes, you would hardly get to know what they are working on until you prod them. Asking status from them becomes such a chore that you shudder at the very thought of it.

Needs to be Micro Managed. They need constant baby sitting from their team mates or their manager about tasks they are working on. They just can’t work independently. Period. You give them their own space and you know things would never get done on time. They would constantly forget their tasks or would deliver code in a haste without giving too much thought to it. To them, bugs or unfinished tasks are the hallmark of a working developer. Yeah, right!

Not a Team Player. Their world is finite and they are at the center of their own little universe. They won’t acknowledge the skills of other team members and think they are the best thing after sliced bread.

Blame Game. Somehow it is never their fault when things go wrong. It’s like the word sorry is not in their vernacular. They always have something or someone to blame when things go wrong rather than admitting to the mistake.

Wastes too much time. Most of them are always busy doing other important things than programming like chatting with their friends, spending time on facebook etc. I just don’t get it. Why would anyone spend killing their office hours than being productive or learning new technologies/reading technical blogs.

The thing is that it only takes a mental switch to turn off these nasty habits and adopt more productive ones provided one is willing to make oneself better.

Anteelo’s Development Process

Can great products be built without having any solid development processes? I don’t know but I can confidently say that it’s a definitive topic for a thesis. Well, we decided to do away with all the development processes for one of the coolest products that we are building.

Anteelo : Mobile App Development & Digital Transformation

You did what!?

Yeah, Unbelievable but true.

It must be burning in flames, isn’t it?

As a matter of fact, to the contrary, we not only got done sooner but it works great.

You kiddin’ me, right? It ain’t even 1st of April today?

Nope. It’s sad that we have been conditioned to believe the processes are a panacea to all our software problems and helps build product the right way. Come to think of it, it is probably true to a large extent for certain kind of software projects but you can still make magic without it.  It is always about the people.

So, what was the darn process? Or, whatever you are calling it?

Actually, we decided to build the software in an extremely simple yet agile way. Really, it was darn simple. We call it “V1P” – Version 1.0 Process.

Anteelo landing page design inspiration - Lapa Ninja

Ideate

Sudesh and I spent lot of time envisioning how the product would look like. We did lots of wireframes/HTML prototypes before even laying the single line of code or thinking about design. Once we were comfortable with our idea, we decided to put the features in an excel file.

Plan

We created an extremely simple spreadsheet with all the features and task and divided them in 2 week iterations.

White boarding

We did an extensive white boarding of the design and how different components/layers would interact with each other. And, that was our design.

Communicate

As we were working very closely(ahem..I meant we sit next to each other), we used to have informal stand ups. Well, technically, we were always sitting down while having these meetings. So, more like sit-down stand ups – Huh! Oh well. We used to discuss for 15 minutes regarding the progress and any impediments.

Build Trust

We never went back and updated our status. Doh! The source code was the barometer of our progress. It’s funny what all can be communicated to each other when you trust your team mates and build on each other’s code.

Deploy

Sudesh deployed the code every other day so that we could see if anything was broken. Yup, no nightly build process for us. Come to think of it, I missed this the most. I think going forward, we would have some sort of Continuous Integration like we do in our other products.

Fix and Move Forward

We used to fix bugs before moving to any new functionality.

Rinse. Lather. Repeat.

Well, that was our process. You would be really surprised that we got done with the alpha version of the product in straight 3 months. It’s a fairly complex product and I’m sure it would have taken more time if we were to follow everything by the book. I think the thing that led to our success was lot of brainstorming early on and having immense level of trust.

It’s a different thing if the product becomes successful or not. Well, it’s coming soon. Wish us luck!

PS – I’m sure you must be really thinking that it is really applicable for products which are being built in a garage by couple of hackers. Well, may be. It’s not something that we follow everyday but has produced great results for us. Also, I don’t intend to follow it in our products of fairly large size which need lot of interactions but something I’m ready to stick with for smaller teams.

DESIGN THAT DREAM DASHBOARD

Our world is driven by big-data and in this world, dashboards are of utmost significance for providing users with information in just one glance.

Like the dashboard in a car, businesses also employ and utilize dashboards to summarize large chunks of real-time data in a limited space. The information is broken down in a way such that it doesn’t become visually pressurising. This representation of information allows you to measure your data and pick out the areas with scope for improvement. If done right, dashboard designs can bring about a visible difference in the business’ performance. 

Although designing is fun, but, designing a dashboard is not a piece of cake. Rather, it is a quite challenging task. Despite having those inner-creative desires, it is best not to unleash all of your creative streak whilst designing a dashboard. It’s better to keep it in control before it goes out of hands.

KNOW YOUR AUDIENCE

Dashboard is assumed to be allabout data, but that’s not true. It is about information and enabling the users to make smart business decisions. The sole aim of designers is to create a dashboard that makes the users feel powerful. That is how hearts and minds are won.

And in order to do so, you have to know your users. Take a seat, find out what information do they need, what is their field of interest and what is their objective. Once you research and gather all of the required information, you can move forward to begin your work on the dashboard.

Furthermore, you should design dashboards keeping in mind only ONE user. Your dashboard should be providing information according to that single user. In case of multiple users, different dashboards should be designed for the users.

HIERARCHY

While designing a dashboard, it is best to have informational hierarchy, i.e., organising information in a way such that it makes sense to the users. Remember, information placement is not about filling up empty spaces or about aesthetic reasons. Key information should be placed such that it shines different and is easily caught by the users. 

The most significant piece of information related to the user’s primary goal should always appear first. Followed by that should be supportive material which creates context for the forthcoming main content. For the users to make right decisions, it is important that you showcase the relationships between data. This instills a lot more sense into the data than when it was placed randomly. For example, if it is a dashboard for fashion, then you should see the graphs for the hot trends along with the outgoing fashion sales.

LOGICAL DATA GROUPING

This is one obvious point. You should group the required pieces of data in a way that it is clear to the users, that it makes sense. For instance, if you’re designing a dashboard for a cosmetic brand, don’t place the allergy complaints next to the sales data. It just ruins things even further. 

It is best not to follow the usual best designing approach when it comes to dashboard designing. Generally in a website, we place the brand logo on the top-left and navigation options right below that or on the top-right. But as a fact, we humans read from left to right, top to bottom. So it is best advised to place the most crucial piece of information on the top-left corner. Decide wisely.

BE MINIMALIST

Using extra information to please your user will only turn out to be a headache for the user followed by a headache for you. It is always better to keep it minimal, crisp and to the point.

Whilst you’re planning on how to present the information to your user, ask yourself this- what will the user get out of this piece of information? It really works.

Now that you know the placing, try not to clutter too much content on the dashboard. It will only make a mess, which will be for you to clean up. Use minimal text. You would definitely want to avoid unnecessary images and graphics, especially to prevent visual noise. Even if it makes you wonder, simpler, user-friendly design can carry high functionality. And that is, only if the right approach is followed.

DATA VISUALIZATION, THE RIGHT WAY

Data visualization is not merely for the eyes, rather it is a significant part of the dashboard design. Raw data can be hard to process and can have a monotonous tone. The purpose of visualization is to refine the raw data and present the relevant information in a short span of time and at the same, allows users to gain more information, if they wish to do so. Pie-charts, graphs, plots assist users to interpret and better understand the data. However, don’t go overboard with it, you might end up terrorizing your users.

BE WISE, COLOUR-WISE

Colours are great, they make everything better. Likewise, they make data interpretation and analysis much easier for the users. You must choose your alert and button colours wisely, so that your users get notified of tasks, activities, events and features in your interface. Best way is to create a style guide on which you can base your data state.

Dashboards are there for informing righteously, not for experimenting with a colour palette. 

WHEN TO REFRESH YOUR DATA

Data refreshing is important, as it helps in prioritising and placing the elements. For instance, if a data is refreshed often, it implies that the data holds a crucial role. Hence, it is best to place that information in the beginning, at a place where the user can catch it at the earliest possible.

Simultaneously, it is important that you notify your users when the data is/was refreshed. And whether they need to refresh the data manually.

Planning data presentation, especially deciding what to exclude, is truly a SCIENCE. Data alone lacks context and meaning, that is where the designers come in. They take the responsibility of making the data understandable and representable. Dashboards are so crucial for a business, they can make or break your product/application. 

Thus, along with being creative towards the work you love, make the right choices as well.    

 

Optimizing your website:SEO

SEO lets start by understanding what is actually meant by Search engine optimization. Well it can be understood as the art or technique of optimization of a website to make it search engine friendly.

My SEO experience well to be fair I use to have three websites and lots of free time so I tried every bit of techniques on them from on page optimization to link building. So what I will share here will be my own empiricism.

Search engines determine whatever to rank your site for a particular keyword is by the number of inbound links to your site .That is the number of others sites that linked to you and the quality of senders for that particular keyword.

Think for a moment. Why would someone make a link to your website? The only logical reason is because you have created something of value. This is the logic of Google, anyway.

5 Basic SEO Principles to Increase Your Website Traffic - Multichannel Merchant

Another way to think about a popular website and a poor performing website, some sites are like old cities in the middle of nowhere with a road in and one road out that is poor linking . Some sites are on the trade route with high-speed multi-lane running in and out that is perfect linking .What we want a lively exchange, not a single road.

Again it just not all about link building it is also about the quality of content and at the end of the day, the quality of your content is the only thing that will convince other Web sites to link to you.

SEO can be divided into two separate categories: on-page SEO and off-page SEO.

Here I will try to list down the techniques of on-page SEO, although the on-page SEO is only 25% of the score on the search engines and the ranking of your website, it is worth addressing it, as it can improve in very less time.

On-page SEO checklist

Page title

SEO Title Tags: Best Practices and Examples | Unamo Blog

Your page title should include keywords that are less than 70 characters in length if you make the page title too long, it will dilute the importance of the words mentioned.

 Meta Description

The Importance of Meta Descriptions for SEO | WordStream

The Meta description is not something that is visible on your website. Meta Description is a brief summary of the website, which is usually included in the top of the source code of the pages on a label, Meta description is not used by the search engines for SEO purposes. What the Meta description is used to provide the researcher a brief description of the page (150 characters) under each result. In fact, if a Meta description is not included in the source code, the search engine will show you some of the content of the page instead.

Titles h1, h2, h3..

Using Internal Heading Tags For SEO - H1, H2, H3

The text of the titles is more likely to be read by the search engines as keywords of text in the rest of the page. For this reason, it is good to include keywords in your titles whenever possible. Labels h1 text give more weight to the keywords, tags h2 carry more weight than the label h3 .

Images

Do not use excessive images. More images mean that your page takes longer to load. This has a negative impact on the user experience as the optimization of search engines. The text associated with the images. Search engines do not read images, just read the text. The ALT text is an HTML attribute that can be added to the image so that the search engines replace the image with associated text.

Domain Information

The search engines also favor sites that are registered for a period of time longer. Since domain registrations indicate a commitment to the site and what they say the site is less likely to be considered spam. Extend your website registration for 10 or more you will definitely see better result for your site.

URL structure

URL Structure | How It Affects SEO & Rankings | Best Practices for 2020+

Avoid nesting pages with URLs . Nested pages receive less SEO credit .

Include keywords in the URL.

Create static URLs, not dynamic. This means that the URL of one of your pages must be the same.

ARC for iOS Development

Coming from a .Net background, I wanted to understand how iOS or OS X does memory management. Here’s brief post on what I’ve read and understood so far.Until a few years ago, Apple developers had to manually manage memory while writing Objective-C code. It was called the Manual Retain-Release model, and is exactly what developers have been doing all this while for C/C++.
But managing memory manually has always been painful and error prone, and takes up valuable time of application developers, which could instead be used for building useful features.An Introduction to ARC for iOS Development | Humble Bits

Enter ARC, acronym for Automatic Reference Counting.

Apple introduced ARC in 2011 along with Max OS X Lion and iOS 5.

With ARC, Apple has tried to make the compiler mimic what disciplined C/C++ developers would do. They would manually track the memory they are allocating for their code, and then ensure they release that memory whenever the objects go out of scope, and their memory is no longer required. So instead of the developers, now the compiler is doing all the hard work.

Its not like ARC was entirely Apple’s creation, Reference Counting has been around for a long time, and is one technique of implementing Garbage Collection.

 

How is ARC different from a Garbage Collector?

Garbage Collection vs Automatic Reference Counting — — — — - | by Mohanesh Sridharan | Computed Comparisons | Medium

 

Garbage Collector:

— Is part of the runtime infrastructure – i.e. part of CLR, JVM, and the runtime is responsible for running and monitoring the Garbage Collector (GC)

— Is indeterministic, so objects stick around until the GC runs, and therefore are not released as soon as they go out of scope

— Affects application performance when it runs, as other threads are paused, while it is runnning

— Is able to clear entire Object graphs, as it is able to figure out the application root object references while the application is running

— Is less prone to memory leaks

ARC

— It is not part of the runtime

— Instead the compiler injects reference tracking and clean-up code, similar to what a developer would do

— Deterministic reclamation of memory, at the time when the object goes out of scope

— Since there is no background or runtime processing, it requires less CPU and RAM, making it efficient on mobile devices

— Cannot cope with retain cycles/object graphs – gets stuck with an object graph, whereas a GC would look for an external reference to an object graph, and if not found would clear up the entire object graph

— Is more prone to memory leaks based on the quality of code written

Retain Cycles

A Retain Cycle is created when two or more objects are referencing each other in a circular fashion. For e.g. when we have a Parent – Child relationship between two objects, both instances would be referencing each other until they both go out of scope. This creates a circular reference and ARC is not able to figure out when to release these objects as it does not do a stack walk which a GC would do to find external references to these objects, instead ARC just tracks the count of the references to a particular object.

To solve this issue, Apple came out with Strong and Weak references. The Parent object creates a Strong reference to the Child object, which means that until the Parent object is deallocated, the Child object needs to remain alive. And the Child object creates a Weak reference to the Parent object, which breaks the circular reference cycle, and now the Parent object can be cleared whenever it goes out of scope, which in turn will also clear the Child object.

However, for the scenario above, developers need to handle missing or nil Parent objects in the Child object implementation, for when the Parent object gets deallocated and before the Child object is cleared, Child object code might be executed.

There is a concept of unowned references as well to prevent retain cycles, which I left out for now.

LLVM and Clang

Components involved in exception support in the standard clang/LLVM... | Download Scientific Diagram

Apple has used the LLVM compiler toolset to implement ARC.
“The LLVM Project is a collection of modular and reusable compiler and toolchain technologies”

The aim of LLVM is to provide a common backend compiler infrastructure to different compiler front-ends for different languages.

At a high level LLVM accepts code in an Intermediate Form and then is able to emit machine code based on the target architecture.
Ultimately we should be able to write code in different programming languages, run it through LLVM to generate native code for different platforms.

Apple developed the Clang frontend for C, C++, Objective-C and now Swift to use with LLVM. Clang is where the ARC magic happens.

Earlier Apple was using the GCC compiler for Objective-C and XCode, however as GCC is old and has a massive codebase to allow easy addition of new features and advancement, Apple decided to switch to the LLVM toolset. GCC also uses the GPL license, which would have forced Apple to GPL XCode’s source whereas LLVM uses the more lenient BSD license to protect proprietary software.

The modular nature of LLVM has helped Apple create Swift, implement ARC, improve XCode to easily target different platforms like Mac OS X and iOS. Seems they are also using components of LLVM to optimise Javascript bytecode in the WebKit browser engine.

This was a short introduction to how iOS uses ARC to manage its memory, and about the tools that are used for ARC, do send in your feedback via comments. In future, I am planning to write a post on the tools which are available with XCode, which help diagnose memory related issues.

error: Content is protected !!