Skip to main content

Posts

Showing posts from 2018

A brief history of User Stories

How many times have you heard about the term 'User Story'? In modern software environments, there's no doubt you've heard about the term 'User Story', which can be interpreted in different ways depending on your background, your business scale, and your organization's level of agility. But let's ask a first question here, how (and why) this concept became so popular nowadays? User stories are narratives they tend to tell us a story (OMG!) about the user, they can be phrased as : As a [Some type/category of users], I want to do [some action], so that I can [be rewarded]. User stories are treated now as an essential part of Agile Software Development, they've been used alongside the other agility concepts to solve the modern software industry's problems which can be summarized into one phrase:   Things are getting changed so fucking quickly!  And this is a normal in the new business places, everything is going bigger and bigg...

Key success element in software projects: Business

Software projects are sets of complex processes, although it’s very challenging to define a perfection recipe, there are some elements that contribute hugely in the success of any software project: People , Business , and Process. In this mini series, I’m discussing those 3 elements referencing many points to Dwayne Philips’ software project management handbook. What’s the business perspective? Every software is being made for a reason, be that fulfilling some desire, completing a job, automating a habit, whatsoever! Usually, the business perspective is interchangeably: Why we’re spending time and money to build software? Start find answers to this question and you’ll find your own business perspective Why and how it’s different? Well, taking into consideration that -in a study held by the Standish group at 2002- only 28% of projects could make it on time and with all the desired functionality, it’s obvious that business visibility within the project can affect the productivi...

Key success element in software projects: People

No doubts that construction needs creativity, commitment, and skills to have something that someone can use and make value of. And when it comes to constructing software we can stick to the same concepts, but unfortunately, it’s not a simple equation as it looks. As it’s observed and as some studies showed, 68% of IT projects fails! This is a very high rate, but why? What are the failure causes? The 3 reasons for software projects failure. According to the American computer scientist, Gerald Weinberg, there are 3 reasons for software projects failure: People, people, and people! People are the first and most essential part of any software project, people design, develop, sell, and manage the digital product. Understanding this factor will play a major role in your project’s destiny. The focus of the organization or the team should take this factor as a non-negotiable precondition to any successful digital product. I’ve seen places where people are the least important factor i...

Mozilla's containers, and how to use them effectivley in your manual testing!

Let’s start by a fact: Testing is a painful, deep, and time-consuming process. But many people, experts, and organizations say that this process knows how to really pay well for itself! Testing consists of multiple levels and tendencies: some tests aim to test the sanity of the software, some other aim to test the context and interactivity flows, and some other tend to predict the unpredicted scenarios that software might go through! You’ll find a lot of names, methods, and techniques for testing software. But there’s one mortal type of testing that will remain the biggest nightmare for any developer/tech lead: Clients tests! Well, let’s not get very dramatic! But, yeah, manual tests still matter and clients will never trust anything but their own experiences! So that’s why you should pay more attention to your manual tests, especially the integration/regression (A type of tests that aims to check whether or not the new functionality broke/interfered with any other existing functiona...

Mistakes to avoid when communicating with your peers

No doubt that communication plays a major role on how we formulate our relations and bonds with our peers in the workplace. And to be able to well-establish your relations, you need to be aware of some mistakes that can hinder you from fitting well in your organization. Following are some points to put in consideration in order to avoid being a completely buffoon. Don’t be over funny! Okay, we got that, you’re super fucking funny and you know all the quirky things. But keeping that trait of making fun of every single statement or situation -specially those ones that may be inappropriate jokes for some- makes people uncomfortable. It’s also an indicator that you’re not a good team player. As many executives believe being able to sense the mood of others and effectively adjust your language, tone and content is one of the top skills required to advance. Save your tears for the cinema! We’re all human, we can experience those hard times that we got very stressed and n...

How to be more decisive while tackling problems?

Introduction Last week I've been studying the exciting course for ‘ Problem solving and decision making ’ provided by University of California, Irvine on the amazing Coursera platform. This course aims to provide you with a quick but intensive overview of practical managerial approaches to identify and tackle problems, also to come up with a solution through a proper decision making process. Here’s some of the best points I learned in this course. The process of being decisive Well, you may wondering “Is there such a process that really called a decision making process?” isn’t it something intuitive? We do that by nature by nature! When we try to pick up the best piece of cloth to wear, when we choose one product over the others, etc..! Do we really need a process for that? Actually, things don’t seem to be always the same way, specially when you’re dealing with more complicated problems that relates to complicated entities (people, organizations, money). In such proble...

Software testing techniques (In Arabic)

متى ولماذا يجب علينا اختبار الكود البرمجي؟  عادة ما نواجه -كمبرمجين- مشاكل برمجية مختلفة، نريد الوصول لأفضل حل يمكننا من اجتياز المشكلة. عادة ما يتم تعريف الحل الجيد على أنه الحل الذي يحقق المعادلة التالية: ناتج صحيح مع استخدام موارد أقل في مقابل كفاءة أعلى. لكن التفكير البشري ربما يخطئ حتى في أفضل حالاته، فكيف نتأكد من فعالية حلولنا البرمجية بدقة وكفاءة؟ في السطور التالية سأعرض بعض الآليات والمعايير التي تعلمتها في الأسبوع الأول من الدورة التعليمية ( Algorithmic toolbox ) على منصة Coursera. لكي نقوم بتسهيل المفاهيم التالي ذكرها، سنفترض أننا نقوم بتطوير حل برمجي لمشكلة ما: لنفترض أن لدينا مصفوفة من الأرقام (الموجبة والسالبة) ماهي أكبر قيمة لحاصل ضرب أي رقمين في تلك المصفوفة؟ Input: arr = {1, 4, 3, 6, 7, 0} Output: {6,7} Input: arr = {-1, -3, -4, 2, 0, -5} Output: {-4,-5} تقوم أحد أفكار الحل على مقارنة حاصل ضرب أكبر رقم موجب × ثاني أكبر رقم موجب مع حاصل ضرب أكبر قيمة سالبة × ثاني أكبر قيمة سالبة. ونقوم بعد ذلك باعتماد حاصل الضرب الأكبر بين القيمتين. إذاً، كا...

Code Quality: Enforcing the PEP8 with flake8

  What’s PEP8 ? And why it’s important?   PEP8 (Python Enhancement Proposal 0008) is a document that makes it easy for developers to get familiar with Python coding conventions. It describes and explains the bold lines that you should consider when developing your code in Python. Why it’s important? Imagine that you’re working in a team with other people, you don’t know each other, you don’t know how each one of you think and take decisions. You’ll have to work on these people’s code, you’ll need to understand the basic layout that these people follow when they want to implement their code. So, what it’s going to be like when everyone has his own method? Catastrophic codebase, right? Here the PEP8 comes and saves the day for you and your team! It helps you standardize a set of rules to be followed every time you’re going to change the codebase to implement new features or to review some other existing ones.   WOW, is it unbreakable? Like many other...