<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Rubikal]]></title><description><![CDATA[Technical, business, ideas and more]]></description><link>https://blog.rubikal.com/</link><image><url>https://blog.rubikal.com/favicon.png</url><title>Rubikal</title><link>https://blog.rubikal.com/</link></image><generator>Ghost 3.12</generator><lastBuildDate>Thu, 19 Mar 2026 15:06:08 GMT</lastBuildDate><atom:link href="https://blog.rubikal.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Clutch Recognizes Rubikal Among Egypt’s Leading B2B Companies for 2022]]></title><description><![CDATA[<p>At Rubikal, we provide exceptional expertise in planning and developing real-time, scalable, fault-tolerant <a href="https://clutch.co/directory/mobile-application-developers/packages">mobile</a> and web applications. We are a custom software development company with an elite hand-picked engineering workforce. Our Engineering team's sole focus is to design the proper architecture to meet those goals in an agile process to</p>]]></description><link>https://blog.rubikal.com/clutch-recognizes-rubikal-among-egypts-leading-b2b-companies-for-2022/</link><guid isPermaLink="false">6345da6a1e783a04bf42c597</guid><dc:creator><![CDATA[Mohamed Ibrahim]]></dc:creator><pubDate>Tue, 11 Oct 2022 21:09:08 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2022/10/AS_B2BServ-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2022/10/AS_B2BServ-1.png" alt="Clutch Recognizes Rubikal Among Egypt’s Leading B2B Companies for 2022"><p>At Rubikal, we provide exceptional expertise in planning and developing real-time, scalable, fault-tolerant <a href="https://clutch.co/directory/mobile-application-developers/packages">mobile</a> and web applications. We are a custom software development company with an elite hand-picked engineering workforce. Our Engineering team's sole focus is to design the proper architecture to meet those goals in an agile process to meet users' demands.<br></p><p>With that said, we are thrilled to announce that according to Clutch’s <a href="http://clutch.co/eg/it-services/staff-augmentation">in-depth market research</a>, Rubikal is a leading B2B company in Egypt’s staff augmentation industry.<br></p><figure class="kg-card kg-image-card"><img src="https://blog.rubikal.com/content/images/2022/10/AS_B2BServ.png" class="kg-image" alt="Clutch Recognizes Rubikal Among Egypt’s Leading B2B Companies for 2022"></figure><p>For context, Clutch carefully curates lists of the absolute best agencies and organizations by industry and location, simultaneously enabling companies to establish credibility and buyers to find the right services. They are the leader in connecting global service providers with corporate buyers worldwide.<br></p><p>Clutch highlights the top B2B companies across different industries and locations each year. We work hard to deliver the absolute best products and working experience to our clients, and we’re thrilled that this hard work has paid off.<br></p><p><em>“Rubikal strives to provide top-notch services to its clients, and such recognition makes us even challenge ourselves for excellence. We are glad to see our work paid off and be one of the tops in our country to serve our clients worldwide.” – Co-Founder &amp; CEO, Rubikal</em><br></p><p>We are incredibly grateful for every one of our clients, especially those who took the time to leave us a review on our <a href="https://clutch.co/profile/rubikal#summary">Clutch profile</a>! Here’s what they had to say about working with us:<br></p><p><em>“Their project management was great. We’ve usually found success working with augmentation teams when they’re deeply integrated into our team, and Rubikal did so very well. They even helped us define, develop, and maintain processes.” – Gene Sluder, CTO, Concentricial</em><br>Let us prepare your growth strategy, assess your product’s scalability and create a future-proof development roadmap. <a href="https://rubikal.com/?utm_source=clutch.co&amp;utm_medium=referral&amp;utm_campaign=directory#">Work with us</a> now!</p>]]></content:encoded></item><item><title><![CDATA[Rubikal Expands Global Footprint with New Business Hub in UAE 🎉 🚀]]></title><description><![CDATA[<p>We're here to be immersed in one of the world's most dynamic regions and to see our global business through a sharply focused local lens.<br><br>UAE will serve as a hub for our own Business expansion to serve new Regions, the expansion is geared to shift our own mindset to</p>]]></description><link>https://blog.rubikal.com/rubikal-expands-global-footprint-with-new-business-hub-in-uae/</link><guid isPermaLink="false">62e25aae1e783a04bf42c586</guid><category><![CDATA[Rubikal]]></category><category><![CDATA[Rubikal Business News]]></category><dc:creator><![CDATA[Mohamed Ibrahim]]></dc:creator><pubDate>Thu, 28 Jul 2022 09:47:20 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2022/07/UAE-Dubai.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2022/07/UAE-Dubai.jpg" alt="Rubikal Expands Global Footprint with New Business Hub in UAE 🎉 🚀"><p>We're here to be immersed in one of the world's most dynamic regions and to see our global business through a sharply focused local lens.<br><br>UAE will serve as a hub for our own Business expansion to serve new Regions, the expansion is geared to shift our own mindset to being both a global and a "multi-local" company.<br><br>Geographically we're in the Middle East and although we believe our operations are accessible anywhere in the world, being close makes us even more accessible.<br><br>The expansion will allow us to align more strategically with our existing partners and offer our best solutions to their businesses, enabling them to stay competitive in a rapidly evolving environment, We are excited to grow our business in this region as it fits well with our diverse and inclusive culture.<br><br>Globalization is changing how companies need to think. A new style of leadership is emerging. In a "flat" world, we no longer think about being centralized or decentralized. Our expansion is helping to re-level our company, opening us up to more dialog, smarter decisions, and better results.<br><br>Be tuned for our next move and look forward to learning every step of the way.<br><br><a href="https://rubikal.ae/">https://rubikal.ae</a><br><br><a href="https://www.linkedin.com/feed/hashtag/?keywords=rubikal&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958037531103780864">#rubikal</a><a href="https://www.linkedin.com/feed/hashtag/?keywords=globalimpact&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958037531103780864">#globalimpact</a><a href="https://www.linkedin.com/feed/hashtag/?keywords=therubikals&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958037531103780864">#TheRubikals</a></p>]]></content:encoded></item><item><title><![CDATA[How Rubikal made it to Linkedin's Top 10 List]]></title><description><![CDATA[<p>A couple of weeks ago, Rubikal's been listed in Linkedin's Top 10 Startups in Egypt. The list compiled the fastest growing companies nominated and ranked by growth, public interest, member engagement, and talent acquisition abilities.</p><blockquote>Check out Linkedin's full list <a href="https://www.linkedin.com/pulse/linkedin-top-startups-2021-10-egyptian-companies-rise-/?trackingId=">here</a>.</blockquote><p>Egypt is having one of the fastest growing startup</p>]]></description><link>https://blog.rubikal.com/how-rubikal-made-it-to-linkedin-top-10/</link><guid isPermaLink="false">61644c731e783a04bf42c240</guid><category><![CDATA[Rubikal Business News]]></category><dc:creator><![CDATA[Moustafa Badawy]]></dc:creator><pubDate>Sun, 24 Oct 2021 07:18:36 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2021/10/Rubikl-Top-10-4.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2021/10/Rubikl-Top-10-4.png" alt="How Rubikal made it to Linkedin's Top 10 List"><p>A couple of weeks ago, Rubikal's been listed in Linkedin's Top 10 Startups in Egypt. The list compiled the fastest growing companies nominated and ranked by growth, public interest, member engagement, and talent acquisition abilities.</p><blockquote>Check out Linkedin's full list <a href="https://www.linkedin.com/pulse/linkedin-top-startups-2021-10-egyptian-companies-rise-/?trackingId=">here</a>.</blockquote><p>Egypt is having one of the fastest growing startup scenes in Africa and the Middle East, on top of having a huge pool of world class talents in various domains. </p><p>According to <a href="https://startupgenome.com/ecosystems/cairo">Startup Genome</a>'s latest report, Egypt ranked first as a regional ecosystem for affordable talent, ranked 15th as global ecosystem for affordable talent and the 2nd regional ecosystem for knowledge. This made Egypt become an attraction for global brands to be considered as a hub of talents specially in Engineering. </p><blockquote>Check out our previous post: <a href="https://blog.rubikal.com/outsourcing_in_egypt/">6 Reasons To Outsource Your Software In Egypt</a></blockquote><p>Rubikal's recognition among the top performers in the country is the result of focused efforts on many fronts. In this article, we try to break down a few areas where we've been constantly improving over the course of the past two years.</p><h2 id="1-talent-growth-and-satisfaction">1- Talent Growth and Satisfaction</h2><p>Despite the Covid-19 impact on most businesses out there, Rubikal were able to grow their talent base while maintaining its core values of intellectual honesty, speed, excellence and team-wide integrity. As a result, Rubikal is still the top employer and best destination for software engineers.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2021/10/Screen-Shot-2021-10-12-at-5.27.39-PM.png" class="kg-image" alt="How Rubikal made it to Linkedin's Top 10 List"><figcaption>Rubikal is a Glassdoor's top employer</figcaption></figure><h2 id="2-identity-and-brand-awareness">2- Identity and Brand Awareness</h2><p>When it comes to tech business, LinkedIn is the go-to platform for connecting with industry professionals. Therefore, its stats and insights are a marker of how well Rubikal's brand is recognized across the world map.</p><p>Businesses and tech professionals across the globe are tapping into Rubikal as an engineering partner and a technology enabler. We are talking about companies from San Francisco, Berlin, London all the way to Riyadh and more.</p><h2 id="3-attraction-of-top-talent">3- Attraction of top talent </h2><p>Rubikal's position as a top employer who offers exceptional range of benefits and perks made it a hot destination for engineers across the country and even outside.</p><hr><p>This award is just a step in a long journey of growth, Rubikal could not have done it without the efforts of the whole team. </p><p>Follow <a href="https://www.linkedin.com/company/rubikal_llc">Rubikal</a> to know about our news and <a href="https://apply.workable.com/rubikal">job openings.</a></p>]]></content:encoded></item><item><title><![CDATA[Rubikal Locks their Spot on Clutch’s 2021 List of Top Mobile Application Development Companies in Egypt]]></title><description><![CDATA[<p>Let’s face it, most of us can’t end the day without using any <a href="https://www.grapecity.com/blogs/mobile-app-development-trends-in-2021">mobile application</a> or web application. A lot of companies and businesses have also integrated these new technologies into their services and products. Rubikal has been one of the most reliable and trusted partners when it</p>]]></description><link>https://blog.rubikal.com/rubikal-locks-their-spot-on-clutchs-2021-list-of-top-mobile-application-development-companies-in-egypt/</link><guid isPermaLink="false">6160869f1e783a04bf42c224</guid><dc:creator><![CDATA[Mohamed Ibrahim]]></dc:creator><pubDate>Fri, 08 Oct 2021 18:05:53 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2021/10/clucth.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2021/10/clucth.png" alt="Rubikal Locks their Spot on Clutch’s 2021 List of Top Mobile Application Development Companies in Egypt"><p>Let’s face it, most of us can’t end the day without using any <a href="https://www.grapecity.com/blogs/mobile-app-development-trends-in-2021">mobile application</a> or web application. A lot of companies and businesses have also integrated these new technologies into their services and products. Rubikal has been one of the most reliable and trusted partners when it comes to developing your mobile app. You can rely on our team’s experience and expertise to develop the best solutions for your business.</p><p></p><p>Speaking of developing applications, our team was recently awarded for this specific service! Thanks to Clutch and their team for naming us as <a href="https://clutch.co/press-releases/today-honors-top-egyptian-service-providers-2021">one of the leading mobile app development companies in all of Egypt</a>. According to their recent report, our team was able to exceed industry expectations and deliver promising and high-quality solutions for our clients.</p><p></p><figure class="kg-card kg-image-card"><img src="https://lh6.googleusercontent.com/bxNeRw8a3UWiixiEZNOq92PHWobdcwU67zJFmzo5fVDE74skQF-CN7eWqbKqzJBbEjiFSxWGP4kYHIXwWuSt3zThAOiEuPbZI60OewJ-o0WWWLRx6CUoz2Yx-po-yjvh2Pl0Phhi=s0" class="kg-image" alt="Rubikal Locks their Spot on Clutch’s 2021 List of Top Mobile Application Development Companies in Egypt"></figure><p>Clutch is <a href="http://clutch.co/eg/app-developers">a business marketplace that</a> helps vendors like us connect with different companies in businesses all around the world. They are well-respected in the space and we look up to them for all the services they provide in the industry.<br></p><p>This award wasn’t just another walk in the park. It has never been that easy and it took us years of hard work and dedication to be able to receive such prestigious awards from the industry. It is all thanks to our passionate and talented team that we are able to reach such incredible heights and milestones. <br></p><p>Lastly, we would like to thank our clients for choosing us as their development partners. Thank you so much for believing in us and trusting in our abilities to deliver the best solutions for your business. We are looking forward to continuing working with you in the future.<br></p><p>Let’s turn your ideas into reality! <a href="https://rubikal.com/">Contact our team</a> today and let’s talk about how we can help you develop the perfect digital solutions for your business.</p>]]></content:encoded></item><item><title><![CDATA[Clutch Named Rubikal the 2020 Top Software Development Companies in the Middle East]]></title><description><![CDATA[Rubikal is one of the top software companies in the Middle east!]]></description><link>https://blog.rubikal.com/rubika-the-2020-top-performing-web-development-companies/</link><guid isPermaLink="false">610fe28c1e783a04bf42c0fa</guid><dc:creator><![CDATA[Ehab Darwish]]></dc:creator><pubDate>Sun, 08 Aug 2021 14:21:59 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2021/08/Clutch.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2021/08/Clutch.png" alt="Clutch Named Rubikal the 2020 Top Software Development Companies in the Middle East"><p>We believe in the role of software now days in making lives easier, We are proud to say that through the years we helped companies across different industries to build top notch products helping their business improve in performance and grow revenues!</p><p>We’re proud to announce that Clutch.co has ranked Rubikal in the <strong>top-performing software companies for 2020.</strong> And market leaders in Custom software development, Mobile app development, Staff Augmentation and Ruby on Rails development.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2021/08/unnamed__1_-removebg-preview.png" class="kg-image" alt="Clutch Named Rubikal the 2020 Top Software Development Companies in the Middle East"><figcaption>Best software company in Middle East</figcaption></figure><p>Such recognition is a great motive for us to go ahead. This means that we really understand our clients needs and know how to translate them into amazing business solutions. </p><p>We would like to express our gratitude to Rubikal's clients, We promise to keep our quality work going to provide our customers with the best experience they can get from a technical partner. </p><h2 id="what-is-clutch">What Is Clutch?</h2><p>Clutch now is the leading B2B platform that is used to provide ratings an review for software companies worldwide. They have an exceptional process to verify clients reviews. Clutch research annually for the best performing companies based on their client reviews and expertise in their domains.</p><h2 id><br></h2><h2 id="-1"><br></h2>]]></content:encoded></item><item><title><![CDATA[Mobile Automation: Unified Approaches to Locate Controls for both iOS & Android]]></title><description><![CDATA[<p>Mobile automation testing is trendy and has a massive impact on the product’s quality. It becomes significantly valuable when it is aligned with the frequent application updates, bug fixes, the newly added features, and the support for new devices, versions, capabilities,  … etc.  </p><p>Assume that you are a Mobile Automation</p>]]></description><link>https://blog.rubikal.com/mobile-automation-unified-approaches-to-locate-controls-for-both-ios-and-android/</link><guid isPermaLink="false">5fc539742c5e03610b26819f</guid><category><![CDATA[Automation Testing]]></category><category><![CDATA[Quality Automation]]></category><category><![CDATA[development]]></category><category><![CDATA[Egypt]]></category><category><![CDATA[Rubikal]]></category><category><![CDATA[Mobile Automation Testing]]></category><dc:creator><![CDATA[M. Medhat Kamal]]></dc:creator><pubDate>Sun, 06 Dec 2020 16:36:39 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/11/Best-Mobile-Automation-Testing-Tools-_-Business-world-IT-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/11/Best-Mobile-Automation-Testing-Tools-_-Business-world-IT-1.jpg" alt="Mobile Automation: Unified Approaches to Locate Controls for both iOS & Android"><p>Mobile automation testing is trendy and has a massive impact on the product’s quality. It becomes significantly valuable when it is aligned with the frequent application updates, bug fixes, the newly added features, and the support for new devices, versions, capabilities,  … etc.  </p><p>Assume that you are a Mobile Automation Test Engineer, and let’s imagine the upcoming scenario:<br>     -  You are required to automate certain test cases in a mobile app.<br>     -  Tests should be uniformly written for both iOS and Android.<br>         (E.g.: One script that is executable on both platforms).<br>     -  You started to prepare everything you need:<br>          ✓ The packages (<strong>.apk</strong> for Android and <strong>.ipa</strong> for iOS)<br>          ✓  Appium Server,<br>          ✓  The automation tool you will use,<br>          ✓  The emulators or real devices for debugging  and execution,<br>          ✓  Your test structure (framework), and<br>          ✓  Your solution seed to build the scripts. </p><p>But before you start typing any test, you need to inspect both apps to locate the controls that are involved in your tests, and define them in your POM (Page-Object Model). Moreover, you need to find a unified approach to locate those controls despite the difference in either the platform or the environment.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://lh6.googleusercontent.com/U39rdlVPXcvbsRPTnHuP-OkX_FgsqaMCdltFAiq_PBhtXP0AngCcJq8CIPXzlv6NjsJBXpclELxXe0PJMd0GRtT4kNuCYp2PHDTraQlrr66B91yvfeJYt-KGElpE1Ov70zCKK3xY" class="kg-image" alt="Mobile Automation: Unified Approaches to Locate Controls for both iOS & Android"></figure><p><strong>                         We are ready to begin our Automation Marathon!</strong><br><br><br>When you start to use any inspector, you will find out that the Layout structure for both Android and iOS is pure XML. One challenge here is that they have different structure and different tag names; as XML is user-defined markup language and the standard XML structure to build Android apps differs from that one in iOS. </p><figure class="kg-card kg-image-card kg-width-full"><img src="https://lh3.googleusercontent.com/yoIgGQ4gVoUxCV_DadXz04QEgbd2kXYweix-BLIEtEJTpm_54rOMsPenkNAIbg2PBkOzqqzVjFZSDWMhIcOwRy62AMbRwSxLNnKwUB80MW23RC9fA94SIjoU8jPGwFbLczb_Pvxn" class="kg-image" alt="Mobile Automation: Unified Approaches to Locate Controls for both iOS & Android"></figure><p><strong>                             <em>  iOS Screen and its corresponding XML </em></strong></p><p></p><figure class="kg-card kg-image-card kg-width-full"><img src="https://lh5.googleusercontent.com/zTjMjT_LyowAgxORJtcH3dNUzeo1cYJBHwxNbJO_fDYLvE469wVOsGofkn-TJ69nZFthioaKH6ZO0xuKRFawPwfeRHT35E-kEaP6Cc3l9WvIWudzjpctYPekZ5u5zYt--ZYwtdFs" class="kg-image" alt="Mobile Automation: Unified Approaches to Locate Controls for both iOS & Android"></figure><p><strong>                           <em>Android Screen and its corresponding XML </em></strong><br><br>The question is how could we write the same script with the same locator for both versions despite the difference in XML structure?<br><br>In this article, we will be discussing different ways to unify your locators for both Android and iOS. The result will be one test script that could be successfully executed on both distributions. <br><br>As far as we know, there could be three possible ways to uniformly locate the same control in both Android and iOS:<br>           1. <strong>Content-Desc</strong> and<strong> Accessibility ID</strong><br>           2. The <strong>if-else statement </strong>inside the locator (based on the platform).<br>           3. The beauty <strong>XPath</strong> approach.<br>Let's take a brief description about each technique .. </p><ul><li><strong><em>Content-Desc</em> and</strong> <strong><em>Accessibility ID</em>:</strong><br>Different attributes but same value and easy to call in both. Preparation to implement them is needed to ease the interaction with the controls among app screens. Collaboration from mobile developers is required to achieve it. Once it is done, it will be super easy to locate the control on both platforms based on one unified value. It will be stored under <em><strong>Accessibility ID</strong></em> for iOS. The corresponding attribute in Android is <em><strong>Content-Desc</strong></em>.<br></li><li><strong>The</strong> <em><strong>If-else statement</strong></em><strong>:</strong><br>Mobile developers are neither available or collaborative. What should we do?<br>The second and third approach might help us with this issue. The second approach focuses on the if-else statement, which is implemented in the POM for each control. In this approach we will locate the control based on XML.<br><br>Simply, locate the control based on the platform. More coding efforts and more time consuming on both platforms, but still unified approach to locate the same control. This could be simply done as follows:<br><br><strong>WebElement loginButton () {</strong><br>       <strong>if(iOS) { </strong><br>            <strong>return findBy</strong><br>            <strong>(XML_Locator_presents_loginButton_in_iOS_structure);  </strong><br>        <strong>}</strong><br>        <strong>else { </strong><br>            <strong>return findBy</strong><br>          <strong>(XML_Locator_presents_loginButton_in_Android_structure);</strong><br>         <strong>}</strong><br><strong>}</strong><br></li><li><strong><em>XPath </em>approach:</strong><br>As shown before in the previous screenshots, the login button may have the following displayed text: <strong>Sign in</strong>.<br>Since <strong><em>XPath </em></strong>is basically designed to work with XML and later used in HTML, we can locate the controls based on the displayed text. This should be working on both Android and iOS despite the difference in the XML structure between them. The syntax could be as follows:<br><br><strong>WebElement controlContainsText(textValue) {</strong><br>        <strong>return findBy</strong><br>         <strong>("Xpath", "//*[@*[contains(.,'" + textValue + "')]]");</strong><br><strong>}</strong><br></li></ul><p><strong>Conclusion:</strong><br>In this article, three effective methods were presented to write more organized, structured, unified test scripts for both iOS and Android. By applying any, code redundancy will be avoided in most scripts. The simpler the script is, the easier to refactor and maintain.<br></p>]]></content:encoded></item><item><title><![CDATA[From a College Dropout to Landing a Full-time Job at one of the Leading Tech Companies in Egypt!]]></title><description><![CDATA[<p>I think there’s no shortage of roadmaps and learning paths for web development or any other computer science-related paths scattered all around the web. So, I’m not going to list specific courses that I’ve studied or books I’ve read. I’d rather talk about the process</p>]]></description><link>https://blog.rubikal.com/from-a-college-dropout-to-landing-a-full-time-job-at-one-of-the-leading-tech-companies-in-egypt/</link><guid isPermaLink="false">5f0307de29fd344e88529d99</guid><dc:creator><![CDATA[Islam Moustafa]]></dc:creator><pubDate>Wed, 08 Jul 2020 11:58:31 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/07/undraw_career_progress_ivdb.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/07/undraw_career_progress_ivdb.png" alt="From a College Dropout to Landing a Full-time Job at one of the Leading Tech Companies in Egypt!"><p>I think there’s no shortage of roadmaps and learning paths for web development or any other computer science-related paths scattered all around the web. So, I’m not going to list specific courses that I’ve studied or books I’ve read. I’d rather talk about the process of learning itself and how I went from an A-grade student who regularly was top of his class, to hardly passing high school, to dropping out of college altogether then getting back on track again.<br></p><h2 id="growth-mindset-vs-fixed-mindset">Growth Mindset vs. Fixed Mindset</h2><p>I used to have this idea that if I’m learning something and it’s challenging or that I’m struggling to understand it, this means I’m not nor will I ever be good at it. Not just that. I used to judge myself, thinking I was inadequate or just not “smart enough” to learn this stuff, just because the learning process was challenging or required an extra effort. After all, I was this special kid who was smart enough that he doesn’t even need to study hard or struggle to learn. And struggling to learn something new meant that I’m not that smart nor that special. That is what’s called a “Fixed Mindset”. And the key to counter it was by “Developing a Growth Mindset”.</p><p>This term was first coined by Dr. Carol Dweck the Stanford university professor, and there is a famous TED talk of her explaining the term thoroughly. For me, I stumbled across this talk after learning this myself the hard way. I wished someone had taught me that earlier but maybe I had to see it for myself. Now I refuse to be called smart, I refuse to even believe it myself. I would rather be called a hard-worker or someone who struggles to learn something, over and over again, until he becomes good at it. This is how I learn; this is how all people learn.</p><figure class="kg-card kg-image-card"><img src="https://blog.rubikal.com/content/images/2020/07/graduate-2.jpg" class="kg-image" alt="From a College Dropout to Landing a Full-time Job at one of the Leading Tech Companies in Egypt!"></figure><hr><h2 id="so-with-this-growth-mindset-how-did-i-get-into-coding">So, with this growth mindset; how did I get into coding?</h2><p>When I started to learn about coding, I remember trying to learn Python. Back then all programming concepts were pretty alien to me; they didn’t make any sense. They were gibberish as far as I can tell and for three consecutive times trying three different Python courses, I always got stuck in the middle because my mind just wasn’t ready. And every time I give up, dump the course, find another one, try again and fail every single time. I slept on it for a while and came back for the fourth time and finally it clicked. It made sense this time around. And if it didn’t, there would have been a fifth and sixth time.</p><p>What I’m trying to say is that coding isn’t a natural skill it’s like any other skill that requires training.</p><p>But how did I, someone with little background in CS, no work experience at all, and from my first interview, got a chance for an internship then a full-time job offer after 5 months at one of the leading tech companies in Egypt</p><h2 id="hire-for-attitude-train-for-skill">Hire for Attitude, Train for Skill</h2><p>First, let’s agree that luck played a big role here. Despite doing so well on the interview and answering most of the questions but still my first ever interview and it goes this well! I can’t ignore that I was lucky to an extent. But it isn’t just luck, I mean the person who hired me must have had his reasons. What are they? It bugged me at first to the point that I brought it to someone who knows about business. I told him all about what I was thinking, how I’m thinking that I’m a hack, that I’m not as experienced as these people working here. That I don’t know why I was given this opportunity. And that’s what he had to say, that in business there’s a saying that “You Hire for Attitude, Train for Skill”. That I wasn’t mainly hired for my experience but my attitude. So, what attitude was he talking about? I think it’s an attitude of consistency, relentlessness, and curiosity. I remember answering most of the questions in my interview that the interviewer explicitly told me that there are people already working as front-end devs whom can’t answer some of these questions.</p><p>So, keep up the attitude, curiosity, and be consistent. And trust me; the skill will follow.<br></p>]]></content:encoded></item><item><title><![CDATA[Exceptional Clutch Review, From An Exceptional Client!]]></title><description><![CDATA[<p>Here at Rubikal, we’re known for our exceptional expertise at planning and developing real time, scalable, and fault tolerant mobile, web applications and games. Our team’s sole focus is to design the proper experience and architecture to meet a business’s goals — and our sole business focus is</p>]]></description><link>https://blog.rubikal.com/exceptional-clutch-review-from-an-exceptional-client/</link><guid isPermaLink="false">5ed2f4b129fd344e88529d44</guid><dc:creator><![CDATA[Ehab Darwish]]></dc:creator><pubDate>Sun, 31 May 2020 00:15:42 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/06/2017_We_Deliver_White-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/06/2017_We_Deliver_White-2.png" alt="Exceptional Clutch Review, From An Exceptional Client!"><p>Here at Rubikal, we’re known for our exceptional expertise at planning and developing real time, scalable, and fault tolerant mobile, web applications and games. Our team’s sole focus is to design the proper experience and architecture to meet a business’s goals — and our sole business focus is supporting small businesses!<br><br>With a focus to support startups by working with them to create scalable software solutions. We are proud of our collaboration and work with <a href="https://terminaltwo.com/">Endless studio</a> creating exceptional games that introduce players to fundamental programming concepts.</p><p>We are thrilled with our latest work review from Endless game director, Nan Chou on <a href="https://clutch.co/profile/rubikal#reviews">Clutch</a>. Putting Rubikal on the top three web development software companies in <a href="https://clutch.co/web-developers?sort_by=0&amp;min_project_size=&amp;avg_hrly_rate=&amp;employees=&amp;client_focus=&amp;industry_focus=&amp;location%5Bcountry%5D=EG&amp;location%5Bcity%5D=&amp;form_id=spm_exposed_form&amp;form_build_id=form-AQwexzQShrGtRWnztYKxBDkIeYg5Adumt2ip5p_LU9w">Egypt on Clutch</a></p><p>“A passionate team, Rubikal’s work has brought success to the company that otherwise would not have been achievable” Quoted Nan about Rubikal. We’re incredibly grateful for Nan Chu and all our satisfied clients!</p><p>Here at Rubikal, we’re known for our exceptional expertise at planning and developing real time, scalable, and fault tolerant mobile, web applications and games. Our team’s sole focus is to design the proper experience and architecture to meet a business’s goals — and our sole business focus is supporting small businesses!</p><p>With a focus to support startups by working with them to create scalable software solutions. We are proud of our collaboration and work with <a href="https://terminaltwo.com/">Endless studio</a> creating exceptional games that introduce players to fundamental programming concepts.<br>We are thrilled with our latest work review from Endless game director, Nan Chou on <a href="https://clutch.co/profile/rubikal#reviews">Clutch</a>. Putting Rubikal on the top three web development software companies in <a href="https://clutch.co/web-developers?sort_by=0&amp;min_project_size=&amp;avg_hrly_rate=&amp;employees=&amp;client_focus=&amp;industry_focus=&amp;location%5Bcountry%5D=EG&amp;location%5Bcity%5D=&amp;form_id=spm_exposed_form&amp;form_build_id=form-AQwexzQShrGtRWnztYKxBDkIeYg5Adumt2ip5p_LU9w">Egypt on Clutch</a></p><figure class="kg-card kg-image-card"><img src="https://lh4.googleusercontent.com/Pf6wllWV9UOE0Naw97mudLe5JXJR_39MxSEBfiEmdj_mJpJ_Qhxg23SjoUDM282o_aKyJKv-SoW_TjZlb-MtpXdE0I1EXBS5gDD-7Ds9fQ55tnU3lVFyqJaVoGZPPCqgcqA-rLc" class="kg-image" alt="Exceptional Clutch Review, From An Exceptional Client!"></figure><p>“A passionate team, Rubikal’s work has brought success to the company that otherwise would not have been achievable” Quoted Nan about Rubikal. We’re incredibly grateful for Nan Chu and all our satisfied clients!</p><p><strong>About Endless Studio</strong></p><p>Terminal Two is a collection of games that carry you from knowing nothing about code to reading and writing real-world code. Who built a collection of games that each target specific computational thinking and coding concepts. And who believe a core problem is that learning to code is perceived as boring and learn-to-code games aren’t fun. Endless set out to partner with real game studios like Rubkal using modern game-building technology to bring you games that look and feel like the games that kids are already playing.</p><p><strong>About Clutch</strong><br>Clutch and its sister site The Manifest are the world’s leading ratings and reviews platform for providers of B2B services. It <a href="https://clutch.co/app-developers/education">helps companies gain visibility</a> and allows you to find companies to connect with and access business insights as you purchase B2B services. They have a team of dedicated analysts who take the time to independently verify each and every client review they conduct, and then they curate the content so that you’re receiving the best information. We have a stellar 4.8-star average on Clutch, with reviews like a 5.0-star review from Nan Chu, the Gaming Director at Endless Studios!</p><p><strong>About Endless Studio</strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/05/Screen-Shot-2020-05-31-at-2.11.18-AM.png" class="kg-image" alt="Exceptional Clutch Review, From An Exceptional Client!"><figcaption>Parents. Best Familly Tech at CES</figcaption></figure><p>Terminal Two is a collection of games that carry you from knowing nothing about code to reading and writing real-world code. Who built a collection of games that each target specific computational thinking and coding concepts. And who believe a core problem is that learning to code is perceived as boring and learn-to-code games aren’t fun. Endless set out to partner with real game studios like Rubkal using modern game-building technology to bring you games that look and feel like the games that kids are already playing.</p><p><strong>About Clutch</strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/05/Screen-Shot-2020-05-31-at-2.14.03-AM.png" class="kg-image" alt="Exceptional Clutch Review, From An Exceptional Client!"><figcaption>Rubikal Profile on Clutch</figcaption></figure><p>Clutch and its sister site The Manifest are the world’s leading ratings and reviews platform for providers of B2B services. It <a href="https://clutch.co/app-developers/education">helps companies gain visibility</a> and allows you to find companies to connect with and access business insights as you purchase B2B services. They have a team of dedicated analysts who take the time to independently verify each and every client review they conduct, and then they curate the content so that you’re receiving the best information. </p>]]></content:encoded></item><item><title><![CDATA[Rubikal Has Been Accredited Top Mobile Development Company in Egypt, by GoodFirms]]></title><description><![CDATA[<blockquote><em><strong>GoodFirms</strong></em> is a research-based firm that aims to identify and recognize the best and most well-performing software development firms from across the globe.</blockquote><p>Building highly scalable SaaS and mobile applications with passion endows Rubikal as one of the top mobile app service providers in Egypt at GoodFirms.</p><h2 id="rubikal-culture-">Rubikal Culture:</h2><p>In</p>]]></description><link>https://blog.rubikal.com/top-mobile-app-development-company-on-goodfirms/</link><guid isPermaLink="false">5ecd373c29fd344e88529ce4</guid><category><![CDATA[mobile development]]></category><category><![CDATA[development]]></category><category><![CDATA[Rubikal]]></category><dc:creator><![CDATA[Anna Stark]]></dc:creator><pubDate>Tue, 26 May 2020 15:44:39 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/05/mobile-app---Egypt.png" medium="image"/><content:encoded><![CDATA[<blockquote><em><strong>GoodFirms</strong></em> is a research-based firm that aims to identify and recognize the best and most well-performing software development firms from across the globe.</blockquote><img src="https://blog.rubikal.com/content/images/2020/05/mobile-app---Egypt.png" alt="Rubikal Has Been Accredited Top Mobile Development Company in Egypt, by GoodFirms"><p>Building highly scalable SaaS and mobile applications with passion endows Rubikal as one of the top mobile app service providers in Egypt at GoodFirms.</p><h2 id="rubikal-culture-">Rubikal Culture:</h2><p>In early 2016, two like-minded entrepreneurs Moustafa Badawy and Mohamed Ibrahim founded <a href="https://www.goodfirms.co/company/rubikal">Rubikal</a>, a mobile-focused development company that would provide enterprises with a software platform and game-changing benefits. The team loves creating aesthetic, functional apps that are outstanding in every way. The specialty of the professionals at Rubikal is native iOS and Android app development. The team follows the highest standards to deliver apps that are engaging, aesthetically-pleasing, and easy to use.</p><p>Rubikal holds an elite hand-picked engineering workforce, presenting exceptional expertise and real-time planning and developing scalable and fault-tolerant solutions. Based in Alexandria, Egypt, the professionals at Rubikal are specialized in developing robust software solutions for startups, SMEs, and corporates. With a dynamic, agile environment, the team presents project-ready tech experts that work in full compliance with clients' business needs and objectives. The organization has a successful long track record in helping businesses with product designing, prototyping, and development.</p><h2 id="goodfirm-research-methodology">GoodFirm' Research Methodology</h2><p><a href="https://www.goodfirms.co/">GoodFirms</a> is a repository of the world's leading, dynamic, and well-performing IT organizations and software solutions. With its groundbreaking and authentic research process, GoodFirms has been reviewing businesses and software that could be of help to service-seekers. The enlisted companies are further probed based on the three most fundamental parameters of GoodFirms search process, viz Quality, Ability, and Reliability.</p><p>Analogously, GoodFirms examined Rubikal and asserted it to be one of the successful companies in affording exceptional services and solutions in mobile app development, and app designing companies enlisted at GoodFirms. The researchers also inferred that the firm would soon tap into the flourishing companies list at GoodFirms, rendering web development services to the service-seekers.</p><p><strong><strong>The below-mentioned is the summary from the evaluation report made by the GoodFirms team for Rubikal.</strong></strong></p><h2 id="developing-usable-apps-that-surpass-clients-expectations">Developing Usable Apps That Surpass Clients’ Expectations</h2><p>At Rubikal, the in-house team of app developers’ curates fast, responsive, and eye-catching apps with pixel-perfect designs for both Android and iOS. It is a business that affords a wide range of multichannel mobile solutions for the clients of different verticals like ecommerce, Fintech, Education, e-learning, and gaming. The team develops apps that get trending &amp; multiply clients' business ROI by turning their users into customers &amp; make their respective brands visible. Rubikal marshaled its app development services to fuel the growth of the business people and enterprises by availing a strategic results-driven approach that ensures robust development of an app idea into an immortal mobile app.</p><p>The team proffers cost-effective, state of the art web &amp; mobile app development services using the most advanced technologies for clients' business suiting their business needs. With a highly-skilled team that never reconciles for less and experiments much to deliver the best, Rubikal always kept an eye on the purchaser's requirement and goals with each application. The organization harnessed every possible way in technology and analysis to shape an app's idea into a hot seller app. Thus, executing and implementing apps that yield higher conversions and engagement for clients’ business endows Rubikal amongst the top <a href="https://www.goodfirms.co/directory/country/app-development/egypt">mobile app developers in Egypt</a> at GoodFirms.</p><h2 id="crafting-user-centric-flawless-user-experience">Crafting User Centric &amp; Flawless User Experience</h2><p>Rubikal, as the best mobile app design company, designs an app interface that proffers a passionate association of users for mobile applications. The design outlined by the designers' blends with the thoughts and influences the users to go gaga for each click, tap, swipe, and squeeze. The team of designers identifies what components clients need on their devices and how to spread them out for them to act normally and on time.</p><p>Rubikal holds a pool of experienced and devoted UI/UX masters who are capable of designing amazing mobile apps. The team flows top to bottom comprehension of Android and iOS design guidelines, that empowers them to form easy to understand and highly engaging interfaces. By incorporating the most recent technologies and innovative designs, the designers make inventive and extraordinary results in UI/UX design.</p><p>Being an accomplished mobile app design company and headquartered in Egypt, Rubikal also shrouds its services in various countries, including the USA, Canada, England, and Saudi Arabia. Making outstanding and captivating applications while enhancing their perceivability and ease of use endows Rubikal among leading <a href="https://www.goodfirms.co/directory/country/mobile-app-design-companies/egypt">mobile app design companies in Egypt</a> at GoodFirms.</p><h2 id="building-extensive-presence-with-bespoke-web-solutions">Building Extensive Presence with Bespoke Web Solutions</h2><p>Technology, creativity &amp; authenticity are threaded together to derive the best web development services from scratch for startups, enterprises &amp; entrepreneurs with the customer-first approach adopted by the developers' team. In the world where every business expects nothing less than perfection, Rubikal comes up with a wide range of web development services that marks a flawless web presence to develop a brand image of enterprises and extract the best of business opportunism from the online ecosystem.</p><p>Rubikal makes the promise to their end-users that no business will experience seclusion in the internet-rife world. Using the perfect combination of technologies including Ruby, Elixir, PHP, Swift, Kotlin, Javascript, the team at Rubikal develops the terrific &amp; bespoke web &amp; mobile apps. Moreover, the tech-geeks left no stone unturned in designing best out of best web solutions. With the team's pervasive insight into web app development's technologies has earned Rubikal many success stories of web development projects with diverse needs and challenges. Thus, backed by the team of such proficient web developers, Rubikal would soon earn a label among the top <a href="https://www.goodfirms.co/directory/cms/top-website-development-companies"><strong>web development companies</strong></a> listed at GoodFirms.</p><h2 id="about-goodfirms">About GoodFirms</h2><p>Washington, D.C. based GoodFirms is a maverick B2B research and reviews firm that aligns its efforts in finding the top mobile app development, app designing, and web development companies delivering unparalleled services to its clients. GoodFirms’ extensive research process ranks the companies, boosts their online reputation and helps service seekers pick the right technology partner that meets their business needs.</p><h2 id="about-the-author">About the Author</h2><p>Anna Stark is presently working as a Content Writer with GoodFirms – Washington D.C. based B2B Research Company, which bridges the gap between service seekers and service providers. Anna’s current role lingers to shape every company's performance and key attributes into words. She firmly believes in the magic of words and equips new strategies that work, always in with ideas, something new to carve, and something original to decorate the firm's identity.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/05/Anna.png" class="kg-image" alt="Rubikal Has Been Accredited Top Mobile Development Company in Egypt, by GoodFirms"><figcaption>Anna Stark</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Why does UX design matter? And how does it affect your business?]]></title><description><![CDATA[<p><strong>What is UX?</strong></p><p>User experience (UX) is mainly the interaction between a user and any system and how the user feels while using it. It might be a mobile application, a website or even a product. The main goal of UX design is to create a seamless experience for optimum</p>]]></description><link>https://blog.rubikal.com/why-does-ux-design-matter-and-how-does-it-affect-your-business/</link><guid isPermaLink="false">5ebc3a5f29fd344e88529bfd</guid><category><![CDATA[User Experience]]></category><dc:creator><![CDATA[Mariam Lallo]]></dc:creator><pubDate>Wed, 13 May 2020 21:00:06 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/05/cover-01-7.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/05/cover-01-7.png" alt="Why does UX design matter? And how does it affect your business?"><p><strong>What is UX?</strong></p><p>User experience (UX) is mainly the interaction between a user and any system and how the user feels while using it. It might be a mobile application, a website or even a product. The main goal of UX design is to create a seamless experience for optimum user satisfaction.<br></p><p><strong>How to achieve the optimum user experience?</strong></p><p>There is no right answer for this question. Each and every user experience is unique and different, depending on the product and its users. In order to achieve the optimum UX, you must know your users very well. This brings us to the UX process and its stages. Usually designers jump to solutions when they face a certain problem. However, the correct way is to identify the problem.</p><p>The UX process:</p><ul><li><strong>Empathize</strong>: Knowing your audience.</li><li><strong>Define</strong>: Analyzing the problem and users needs.</li><li><strong>Ideate</strong>: Brainstorming possible solution(s).</li><li><strong>Prototype</strong>: Creating a representation to your solutions.</li><li><strong>Test</strong>: Testing on users and getting feedback.</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/05/diagram-01-3.png" class="kg-image" alt="Why does UX design matter? And how does it affect your business?"><figcaption>The UX process</figcaption></figure><p>After finishing the UX process and performing several iterations to get the best results. It's clear that having a solid UX design plan is surely effective. Moreover, improving the usability and accessibility of your product will definitely enhance your business.<br></p><blockquote>“<em>Design is not just what it looks like and feels like. Design is how it works</em>” - Steve Jobs</blockquote><p></p><p><strong>Why is UX important and how it affects your business?</strong></p><p>Here are 5 reasons why good UX design is important for your business:</p><p><strong>1. <strong><strong>Helps your product to stand out.</strong></strong></strong></p><p>When you have good UX, your product will be easily recognized, and it will surely stand out among your competitors. Consequently, your UX design is more important than the product or its price.</p><p><strong>2. <strong><strong>User retention.</strong></strong></strong></p><p>By having an effective UX, your regular users will turn into loyal customers. Applying small enhancements to your product will keep them always coming back for more.</p><p><strong>3. <strong><strong>Its cost-effective (ROI)</strong></strong></strong></p><p>Revamping poor UX can result in a high return of investment (ROI) boosting your business success.</p><p><strong>4. <strong><strong>Users get attached.</strong></strong></strong></p><p>For example, if you had a hard time using a certain website or mobile app, chances that you will use it again is very low. However, if you have a functional UX with an easy navigation system users will stick longer and get attached to your product. Thus, it's key to have UX that helps you reduce bounce rates and keep your users active on  your product longer.</p><p><strong>5. <strong><strong>Help your conversion rates.</strong></strong></strong></p><p>As mentioned before, converting users into loyal customers due to good UX will improve your conversion rates, and when you improve your conversion rates, you can increase your revenue and profits.<br></p><p><br>In addition to what was mentioned above, if your users are able to complete their tasks as quickly as possible, it will leave a pleasant impression  one of which they will happily talk about to their friends and family, proving that UX matters. To conclude, UX is the foundation of your business success.</p>]]></content:encoded></item><item><title><![CDATA[Automating HTML5 Video Player]]></title><description><![CDATA[<h2 id="intro">Intro</h2><p>Since HTML5 was released, the hassle of using flash to add multimedia content was over. Now we can simply inject any video within the HTML5 itself. The HTML5 video player has the normal controls such as play/ pause buttons, the progress bar, the timer. It also has properties such</p>]]></description><link>https://blog.rubikal.com/automating-html5-video-player/</link><guid isPermaLink="false">5eaeae4829fd344e88529b07</guid><category><![CDATA[Automation Testing]]></category><category><![CDATA[Quality Automation]]></category><dc:creator><![CDATA[Doaa Hassan]]></dc:creator><pubDate>Wed, 06 May 2020 18:13:24 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/05/hmtl5video-thumb-1.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="intro">Intro</h2><img src="https://blog.rubikal.com/content/images/2020/05/hmtl5video-thumb-1.jpg" alt="Automating HTML5 Video Player"><p>Since HTML5 was released, the hassle of using flash to add multimedia content was over. Now we can simply inject any video within the HTML5 itself. The HTML5 video player has the normal controls such as play/ pause buttons, the progress bar, the timer. It also has properties such as video type and its duration. Unfortunately, most automation testing tools DO NOT provide any control over the &lt;Video&gt; tag within HTML5. <br><br>In this article, we will be discussing a simple mechanism to automate a video player, extract the video’s info, and assert on its properties.</p><h2 id="why-do-we-need-to-automate-media">Why do we need to automate media?</h2><p>If your web or mobile application has an audio or video that plays or pauses depending on a specific action that the user does, so you need simply to check if your media is working as expected according to the feature or scenario under test.</p><figure class="kg-card kg-image-card"><img src="https://blog.rubikal.com/content/images/2020/05/hmtl5video-thumb.jpg" class="kg-image" alt="Automating HTML5 Video Player"></figure><h2 id="how-it-works">How it works?</h2><p>It’s been said that whatever the automation environment or tools you’re using, you will not find built-in functions that can handle <strong>&lt;Video&gt;</strong> locators directly. As a result, you won’t be able to access the simplest controls within videos such as the PLAY <strong>(</strong>▷<strong>)</strong> button, the VOLUME controller, the PROGRESS BAR, the DURATION indicator … etc.<br><br>The only way to access these controls is by using <strong>JavaScript</strong> commands. <strong>JS </strong>has certain functions and properties that can deal with video controls inside <strong>&lt;Video&gt;</strong> tag. Some of these controls are as follows:</p><ul><li><strong>play():</strong> 		Function: plays the targeted video,</li><li><strong>pause():</strong> 	 Function: pauses the targeted video,</li><li><strong>paused:</strong>	   Property: returns TRUE if the video is paused,</li><li><strong>Duration:   </strong>Property: returns video’s duration (in seconds),</li><li><strong>volume:</strong> 	  Property: returns the sound volume controller,</li><li><strong>currentTime:</strong> 	Property: returns the current time that videos is played/ paused at (in seconds),</li><li>…..</li></ul><p>So,  let’s list the exact steps you will follow in your automation script:</p><ol><li>You should wait until the metadata of your video is loaded, if the pre-load option of your video is not ‘auto’ (auto means that the whole video file will be loaded without waiting)</li></ol><figure class="kg-card kg-image-card kg-width-wide"><img src="https://lh3.googleusercontent.com/oF5thKk0U4ze7jSNazymIXhLoES9puyQY3wUoahK1Zf9JX09YYm7g3JlBTzNj3_-0XjqA4oozjxe8T3hmYM2JV556BVULSfRpLVioNj2yMZYmzXoIwlD08ZsS2Ot8iXl_ViLL2um" class="kg-image" alt="Automating HTML5 Video Player"></figure><p>This can done by using <strong><em>onloadedmetadata</em> </strong>event as following: <br><br><em><strong>var vid = document.getElementById("myVideo");<br>vid.onloadedmetadata = function() {</strong><br>                   <strong>alert("Metadata for video loaded");<br>};</strong></em></p><p>2. After you select your video (by ID or any other selector) and waiting for it to load, you can use any supported <strong>HTML</strong> functions and attributes of dealing with media, you can find them <a href="https://www.w3schools.com/tags/ref_av_dom.asp">here</a></p><p>3. The most important trick here is that your code should be handled by <strong>JavaScript </strong>executor because there are no direct functions to use for videos. Since we are dealing with some <strong>JS </strong>functions and attributes, we’re gonna open a shell that can execute <strong>JS </strong>commands with the browser’s console. Within this shell, we will be executing the functions and properties for the video, and retrieve any data that we may use to assert on. </p><p>4. Finally, you can use any attribute related to media. For example, <strong>currentTime </strong>attribute to set or get the current time of your played video:<br><br><strong><em>var vid = document.getElementById("myVideo");<br>vid.currentTime = 5;</em><br></strong><br>this will set the time of your playing video at 5 seconds, so if your video duration is 10 seconds, this command will move the progress bar of the video to the half of its duration.</p><h2 id="conclusion">Conclusion</h2><p><br>There is a list of supported functions and attributes for dealing with media in <strong>HTML5</strong>, you can use all of them whatever the language you’re using in your script if you used the <strong>JavaScript </strong>executor, main checks you need will be doable like checking your video is paused or not and get its duration or check if it has controls or not but there is no method for reaching the full-screen button or download options of your video, so you can do the prime checks and make it simple.</p>]]></content:encoded></item><item><title><![CDATA[OKR: Objectives and key results]]></title><description><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/image-2.png" class="kg-image"><figcaption>Objectives &amp; Key Results</figcaption></figure><p><strong>Do we always wonder how successful companies can navigate and grow?</strong><br><strong>What direction to go?</strong></p><p>OKR that term which many companies start adapting, and we hear it while walking in the office and it's a time to know what it is?</p><h2 id="what-are-okrs">What are OKRs?</h2><p><strong><strong>OKR</strong></strong> is</p>]]></description><link>https://blog.rubikal.com/objectives-key-results/</link><guid isPermaLink="false">5ea5da7d29fd344e88529a40</guid><category><![CDATA[Management]]></category><dc:creator><![CDATA[Mohamed Ibrahim]]></dc:creator><pubDate>Sun, 26 Apr 2020 23:39:00 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/04/okrs.jpg" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/image-2.png" class="kg-image" alt="OKR: Objectives and key results"><figcaption>Objectives &amp; Key Results</figcaption></figure><img src="https://blog.rubikal.com/content/images/2020/04/okrs.jpg" alt="OKR: Objectives and key results"><p><strong>Do we always wonder how successful companies can navigate and grow?</strong><br><strong>What direction to go?</strong></p><p>OKR that term which many companies start adapting, and we hear it while walking in the office and it's a time to know what it is?</p><h2 id="what-are-okrs">What are OKRs?</h2><p><strong><strong>OKR</strong></strong> is an abbreviation for <strong><strong>Objective &amp; Key Result</strong></strong>. The concept was invented at the Intel Corporation and is widely used amongst the biggest technology companies in the world including Google and Zynga. So an OKRs is composed of two parts, a goal (objective) and 2 to 5 key outcomes (key results) indicating that the goal was achieved.</p><p>OKRs can help you focus on your company goals and reflect on progress each quarter, so mainly OKRs set for a quarter time. OKRs provide a reference to evaluate how well you did in executing your objectives.</p><h2 id="let-s-take-an-example-for-okr">Let's take an example for OKR</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/Screen-Shot-2020-04-26-at-9.27.41-PM.png" class="kg-image" alt="OKR: Objectives and key results"><figcaption>Example for OKR</figcaption></figure><p>That is an example for Engineering OKR for something we always lack at, writing tests for the software.</p><p>As we can see we have the <strong>objective</strong> here: <strong><em>Improve our testing procedures</em></strong><br>And <strong>5 key results</strong> which will help us achieve our objective, each key result should be measured so we can test how much we are achieved at each of the Quarter and see our progress towards the <strong>objective.</strong></p><p>The Key Results are what make <strong>OKR</strong> so effective. The reason is that these <strong>OKRs</strong> break down the objectives into smaller steps.<br>KRs are brief statements that are clearly defined, specific, and measurable. Hence, they make it easier for employees and their leads to monitor progress.</p><p>OKR is not built for a specific domain we can have <strong>OKRs</strong> for:</p><ul><li>Marketing</li><li>Engineering</li><li>Sales</li><li>Customer Support</li><li>Human Resources</li><li>Finance</li><li>Operations</li><li>Product</li><li>Design</li></ul><p>Or any other field or domain we work on.</p><h2 id="why-we-need-okrs">Why we need OKRs?</h2><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/image-3.png" class="kg-image" alt="OKR: Objectives and key results"><figcaption>What difference OKRs do</figcaption></figure><p>As you can see <strong>non-OKR</strong> can just continue our work and progress, as usual, no improvement as we actually didn't stop and define a goal/objective for what we doing and satisfied with the current state.</p><p>We need OKRs mainly for <strong>2 reasons</strong>:</p><p><strong>First:</strong> OKRs are built on two incredibly powerful goal-setting principles: <a href="https://www.investopedia.com/terms/m/management-by-objectives.asp">Management by Objectives (MBO)</a> and <a href="https://en.wikipedia.org/wiki/SMART_criteria">S.M.A.R.T</a>. </p><p><strong>Secondly:</strong> the OKR process – from goal setting to measuring and tracking are all focused on what matters most to your business: <strong><strong>results</strong></strong>.</p><p>Also, OKRs provide 4-key values:</p><ul><li>Focus the organization on what matters</li><li>Allow us to measure our progress towards those goals</li><li>Enable large groups to work together in alignment</li><li>Allow us to stretch to achieve things we wouldn’t have thought possible</li></ul><h2 id="two-quotes-i-love-about-okrs">Two quotes I love about OKRs</h2><blockquote><em>It is recommended to always shoot for stretch objectives. If you are consistently hitting your goals you are undershooting your capabilities. you should strive to achieve a 0.7 score of our stated Objectives.</em></blockquote><blockquote><em>If you’re going to do OKRs because they look easy you’re making a mistake.</em></blockquote><h2 id="how-to-represent-okrs">How to represent OKRs?</h2><p>There are many ways and templates that can help you start and here is an example of how to represent that in a Word doc or Excel sheet:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/Screen-Shot-2020-04-27-at-1.35.19-AM.png" class="kg-image" alt="OKR: Objectives and key results"><figcaption>Example by <a href="https://medium.com/@niket">Niket</a></figcaption></figure><h2 id="so-whats-now">So whats now?</h2><p>OKRs are widely used in the corporate world these days. If you aren’t adopting this framework yet in your company, you should do and that is how you can start:</p><p>If you are not sure what OKRs to set you can check this <a href="https://okrtemplates.com">website</a> which can suggest you with some OKRs for different domains and has some templates you can use to start.</p><p>If you want to dive more, you can read <strong>Measure What Matters</strong> by <strong>John Doerr</strong> its great book:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/image-1.png" class="kg-image" alt="OKR: Objectives and key results"><figcaption>Measure What Matters by John Doerr</figcaption></figure><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://www.amazon.com/Measure-What-Matters-Simple-Drives-ebook/dp/B078X4HKS9"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Amazon.com: Measure What Matters: OKRs: The Simple Idea that Drives 10x Growth eBook: Doerr, John: Kindle Store</div><div class="kg-bookmark-description">Measure What Matters: OKRs: The Simple Idea that Drives 10x Growth - Kindle edition by Doerr, John. Download it once and read it on your Kindle device, PC, phones or tablets. Use features like bookmarks, note taking and highlighting while reading Measure What Matters: OKRs: The Simple Idea that Driv…</div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">John Doerr</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://fls-na.amazon.com/1/batch/1/OP/ATVPDKIKX0DER:130-7172879-4249501:ZFQ5SQ55GRY9QNMRQZQA$uedata=s:%2FMeasure-What-Matters-Simple-Drives-ebook%2Fdp%2FB078X4HKS9%2Fuedata%2Fnvp%2Funsticky%2F130-7172879-4249501%2FNoPageType%2Fntpoffrw%3Fstaticb%26id%3DZFQ5SQ55GRY9QNMRQZQA%26pty%3DDetail%26spty%3DGlance%26pti%3DB017EOMFQQ:1000" alt="OKR: Objectives and key results"></div></a><figcaption>Link to Book at Amazon</figcaption></figure><p><br><br>We at Rubikal use <strong>OKRs</strong> within our teams for Product and Engineering purposes that help us hit our goals and measure what matters!</p><hr><h2 id="ready-to-work-with-us">Ready to work with us?</h2><p>We have a full house of talents, who are capable to build your dream application. Rubikal can help from an idea phase to a scaling solution that serves millions of users. Reach out to us <a href="#hs-chat-open">Here</a><br><br>Book a <a href="https://meetings.hubspot.com/ehab-darwish/rubikal-demo">meeting</a> with us<br><br>Learn more about us here <a href="https://rubikal.com">Rubikal.com</a><br></p><p><em>Engineer and up to the challenge, check out our latest job opening <a href="https://apply.workable.com/rubikal/">here</a> </em></p>]]></content:encoded></item><item><title><![CDATA[The Subtle Art of Communication]]></title><description><![CDATA[Two-thirds of employers ranked Communication as a top soft-skill they’re seeking in employees. As for Product Managers, Communication ranked the most important skill, absolutely essential, for the role.]]></description><link>https://blog.rubikal.com/the-subtle-art-of-communication/</link><guid isPermaLink="false">5e8b584029fd344e88529707</guid><category><![CDATA[communication]]></category><category><![CDATA[product]]></category><category><![CDATA[Rubikal]]></category><dc:creator><![CDATA[Rana Ebada]]></dc:creator><pubDate>Sun, 12 Apr 2020 19:23:28 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/04/IMG_0132-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/04/IMG_0132-1.jpg" alt="The Subtle Art of Communication"><p>Two-thirds of employers ranked Communication as a top soft-skill they’re seeking in employees. As for Product Managers, Communication ranked the most important skill, absolutely essential, for the role.</p><p>It’s all well and good for a software engineer to be proficient in all the needed programming languages and unbelievably knowledgeable in software development best practices, but whether he can communicate that knowledge, can get his points across, can collaborate with others effectively and efficiently is key. Here at Rubikal we believe communication is absolutely essential, whether for engineers, product or management. We’re not robots typing away on our Macbooks, we’re an awesome team of engineers (and product managers) working together to make a difference in people’s lives and in order to work together we need (and love) to communicate.<br><br>The good news is communication skills can be acquired and significantly improved. Here are 4 easy adjustments you can make that would have a significant impact. </p><hr><p><strong>1. <strong><strong>Don’t just hear, listen</strong></strong></strong><br><br>“Most people do not listen with the intent to understand; they listen with the intent to reply.” (Steven R. Covey).</p><p>Whether you’re a Product Manager eliciting requirements for your latest application or a Software Engineer trying to explain why your solution is better, in order to communicate effectively you need to truly understand what the person you’re communicating with is saying. You also need to make them feel heard and understood. You always need to pay attention to what a person is saying, process it, let it simmer a while and then if necessary respond. Don’t tune people out, nod your head and think about what you’ll need to do after this conversation is over. Truly be there, be attentive, actively listen to what they're saying and think it through. Try to stop the urge of  thinking about your response and how your out-of-the-box solution will completely blow their minds away while the person is talking to you. A great software product manager once said “Good communication involves more listening than talking. Listen to what your team and customers are saying.” </p><p>Again, focus and show that you’re paying attention. A good way to show that you’re actually listening is to practice active-listening. You can practice non-verbal active-listening by keeping eye contact, smiling reassuringly every once in a while and even using your posture to convey that you’re being attentive. Verbal active-listening could be by using positive reinforcement sparingly like saying “indeed” or “I understand” to reinforce that you’re actually listening. I’m not saying you have to agree with whatever’s being said, what I mean is just respond appropriately and show comprehension. Another good idea would be to reflect on what the person is saying and summarize it by paraphrasing and quickly listing the key points of their discussion. This also helps you remember what has been discussed later. Again, don’t just hear, truly listen and understand.</p><hr><p><strong>2. <strong><strong>Start with a compelling message</strong></strong></strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/The-Human-Attention-Span.png" class="kg-image" alt="The Subtle Art of Communication"><figcaption><strong><strong><strong>compelling message</strong></strong></strong></figcaption></figure><p>A human’s attention span is now down to 8 seconds, lower than a goldfish, for your info. We are in a quick-paced era where people just don’t have time. We’re all running through our lives getting things done, or trying to anyway. And if someone wants to interrupt that transrapid train we’re constantly on, they would have to powerfully compel us to. They would have to pull our interest instead of pushing their information at us.</p><p>A good way to capture a person’s attention, to pull their interest, in the first few minutes of a conversation is to start with a compelling message summarizing your point. A great example of that would be to follow Simon Sinek’s advice in his popular TedX talk about “starting with why”. He says that the best organizations out there, start with why they’re building their product and they inspire others by it. That once people are inspired, once they believe what the organization believes, they trust the organization to build anything, that “People don’t buy what you do, they buy why you do it”. </p><p>So, start your message with why you want what you want, why you want to build that product, prioritize that feature or why your technical solution would work best...etc. Once we know why and believe what you believe, we’d be more susceptible to how you’re going to do it and what needs to be done. </p><hr><p><strong>3. <strong><strong>Be Complete and Concise</strong></strong></strong></p><p>I once had this brilliant, but incredibly busy manager, which by default made him impatient and with a very low tolerance for wasting time. He always urged us to make our messages both complete and concise. So, once you have people’s attention and thus time, a good thing would be to complete your message by covering the details of the situation and the solution. State what’s happening, why it’s happening, all the details that the person would need to know and then the steps that need to be taken, their impact or what you need at this point. </p><p>In order to optimally convey your message, you need to know your audience and reflect that on the way you present information to them. The way people absorb and process information is completely different. For example, some people prefer visuals, so you’ll need graphics, graphs and pictures to show them so that they would understand your message better. Others are auditory and process information better when it’s spoken, while on the other hand some prefer receiving written words and reading through them. Try to tailor what you're saying and how you’re saying it to who you’re saying it to and in a way they would relate to and understand best.</p><p>A good practice for concise messages is to “tighten” your sentences. Start by listing what you’re trying to say and work on it bit by bit. Remove any excess information, but more importantly focus on important information and keep those, try as much as possible to not repeat yourself and get to the point without any extra “stuffing” or “padding”. And in the end, this is not an exact science, just go with what feels right.</p><hr><p><strong>4. <strong><strong>Stick to the agenda</strong></strong></strong></p><p>A significant part of our work life is spent in meetings. Standups, Kickoffs and Retrospectives are just to name a few. First of all, make sure you really, really need that meeting before scheduling it. Should it have been an email? Meetings are both essential and can easily be time consuming when they stray off topic. They can easily run for days and still not achieve their objective, true story. So, for all meetings create a clear meeting agenda, send it to the attendees ahead of time and always always stick to it. It’s perfectly okay to say “let’s schedule a meeting to discuss this later”, even if you’re invited to the meeting and not running it, say it just the same. Time is a valuable resource and we have to be mindful of how we spend it.</p>]]></content:encoded></item><item><title><![CDATA[The myth of "Risky XPath"]]></title><description><![CDATA[XPath (XML Path Language) is a query language for selecting nodes (XML tags) from an XML document. The accessibility for any node (element) is based on its location within the hierarchy of the WHOLE XML.]]></description><link>https://blog.rubikal.com/the-myth-of-the-risky-xpath/</link><guid isPermaLink="false">5e92f35229fd344e885298e6</guid><category><![CDATA[Automation Testing]]></category><category><![CDATA[development]]></category><category><![CDATA[Egypt]]></category><category><![CDATA[Rubikal]]></category><category><![CDATA[xpath]]></category><category><![CDATA[Quality Automation]]></category><dc:creator><![CDATA[M. Medhat Kamal]]></dc:creator><pubDate>Sun, 12 Apr 2020 14:17:13 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/04/Tree-Infographic--1--1.png" medium="image"/><content:encoded><![CDATA[<h2 id="intro">Intro</h2><img src="https://blog.rubikal.com/content/images/2020/04/Tree-Infographic--1--1.png" alt="The myth of "Risky XPath""><p>When it comes to finding locators in webpages, the best practice is through using unique attributes within the HTML. The most unique attribute is the <strong>ID</strong> attribute. We could also use the <strong>NAME</strong> attribute and, in some times, the <strong>CLASS</strong> attribute. Unfortunately, all auto-test experts warn the novice ones about using either <strong>CSS selectors</strong> or <strong>XPath</strong> and they don’t mention the reason. Actually, it reminds me with a well-known scene that turned into a meme from The Lion King movie …</p><figure class="kg-card kg-image-card"><img src="https://blog.rubikal.com/content/images/2020/04/download.jpg" class="kg-image" alt="The myth of "Risky XPath""></figure><h2 id="xpath-why-not">XPath … Why not?</h2><p>XPath (XML Path Language) is a query language for selecting nodes (XML tags) from an XML document. The accessibility for any node (element) is based on its location within the hierarchy of the WHOLE XML. Since HTML is also a markup language that has a hierarchical structure, therefore XPath can be smoothly used on HTML.</p><p>It’s been said that XPath is the riskiest approach to trace a web-element inside a webpage. Due to the high requirement changes and the high demand for presence of responsive webpages, the HTML structure is likely high to be changed frequently. Accordingly, the hierarchical route (that could be defined using XPath) of a certain web-element (button, input field, drop-down list, hyperlink, … etc.) is changes as well. As a result, the XPath is not stable and will cost the auto-testers much refactoring in every change with the HTML itself.</p><p>If you want to find the XPath of a certain tag in a webpage, you can do easily through the inspector:</p><p>1. Open the inspector of the browser,<br>2. Select the Elements tab,<br>3. Find the tag that presents the control which you’re interested in,<br>4. Right-click on it,<br>5. Hover on copy form the context menu, and<br>6. Select Copy XPath.</p><p>The screenshot below shows the how it looks like when attempting to copy XPath for a certain control (card) in a webpage.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.rubikal.com/content/images/2020/04/2-1.png" class="kg-image" alt="The myth of "Risky XPath""></figure><p>Now let’s paste what was copied and discuss it:<br><strong>/html/body/main/section[1]/div/div[2]/div[2]/div/h3</strong><br><br>From the first look of the copied-and-pasted value, we can see that it looks like a directory path. But instead of folder names, the HTML tags were presented to determine the path from the root tag (<strong>html</strong>) to the in-depth tag (<strong>h3</strong>), which is the desired locator.</p><p>The number in square brackets presents a certain tag among other tags with the same name and same hierarchical level. For example, <strong>section[1]</strong>means that we have many tags called <strong>section</strong>, but we’re interested in the first one; because it has the desired locator (<strong>h3</strong>) deeply inside it.</p><p><strong><u>We can translate this path into the following:</u></strong><br>Start from the <strong>html</strong> tag, then move to <strong>body</strong> tag, then the <strong>main</strong> tag, then <strong>the first section</strong> tag,  then <strong>div</strong> tag, and inside it move to the <strong>second div tag</strong>, then again the <strong>second div tag</strong>, inside it we have another <strong>div</strong> tag, and finally, inside the recent <strong>div</strong> tag, we have our destination, the <strong>h3</strong> tag.<br><br><strong>Well, I know how you feel right now! 😳</strong><br>Too long, too complicated, and too exhausting! Honestly, this is a relatively easy path! There are much longer paths that for other web-elements. Moreover, if some changes took place, the whole path is ruined, and we have to copy the new one according to the newly changed HTML structure. So, is there another smart way to use XPath? Or shall we give up on locating element with such approach since it is risky and unstable to trace elements with?!</p><h2 id="how-to-make-it-safe-and-easy-with-xpath">How to make it safe and easy with XPath?</h2><p>XPath selectors can be written in smarter ways than the copied ones from the browser’s inspector. If you decided to learn XPath and how to use it, you will be surprised by the awesomeness of such tool. If you prefer a shortcut, you can google <em>“XPath Cheat Sheet”</em>, you will find a lot of results that helps you with simple, smart, direct selectors that you may use to locate elements in HTML and XML as well. We’re gonna try one of those simple examples, and use it instead of the long, static, selector that was copied before. The structure of the selector that we will be using alternatively is as follows:<br><br><strong>//TAG_NAME[text() = 'TEXT_IN_WEB_ELEMENT']</strong><br>Let’s talk about each part in the previous selectors:</p><p>1.<strong> The double slash(//)</strong>: <br>Skip to a certain tag name within the HTML structure<br>(Don’t start from the beginning).</p><p>2. <strong>TAG_NAME</strong>: Here we put the name of tag we’re interested to find.<br>(Example: <strong>button</strong>, <strong>input</strong>, <strong>div</strong>, <strong>h2</strong>, … etc.) </p><p>3. <strong>text()</strong>: A function with XPath that is used to find if a certain control contains certain text inside it.</p><p>4. <strong>'TEXT_IN_WEB_ELEMENT'</strong> : The value of that text with this web-element.</p><p>Looking back to the previous example, we tried to locate h3 web-element, which contains the following text: <strong><em>“Mobile Development”</em></strong>. Now, and based on the previous illustration of a smarter selector, we can try to type a different selector to find the same web-element as the following:<br><strong>//h3[text() ='Mobile Development']</strong></p><p>Let’s see the results in the inspector:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.rubikal.com/content/images/2020/04/3.png" class="kg-image" alt="The myth of "Risky XPath""></figure><p>As displayed, the selector was able to find the same web-element in a smarter way. Now let’s move to the test script. If we try to find this element in test script, the following 2 lines will achieve the same goal:<br><strong>$("/html/body/main/section[1]/div/div[2]/div[2]/div/h3");</strong><br>OR<br><strong>$("//h3[text() ='Mobile Development']");</strong></p><p>But how about the other 5 cards? If you decide to use the first, risky, complicated selector for each card, then your code will be more complicated and unreadable. Plus, any additional card in the middle of those card will deprecate the whole script. But, if we think about generalizing the second, smart, simple, readable, selector, then we will be able to use it with no worries of changing in HTML structure. In <strong><em>Page-Object Model</em></strong>, we can do it as follows:</p><p><strong>thirdHeaderValue(textValue) {</strong><br><strong>           return $("//h3[text() = '"+ textValue + "']");</strong><br><strong>}</strong><br><br>Then in the test script, we may type the following:<br><strong>MyObj.thirdHeaderValue('Mobile Development');</strong><br><br>Instead of:<br><strong>$("//h3[text() ='Mobile Development']");</strong></p><p>With such a generalized method, we can find the <strong>h3</strong> web-element with all other 5 cards that exist in the same webpage:<br><strong><em>MyObj.thirdHeaderValue('Web Development');<br>MyObj.thirdHeaderValue('Game Development');<br>MyObj.thirdHeaderValue('Quality Assurance');<br>……</em></strong></p><h3 id="hey-wait-a-minute-we-can-do-all-of-this-without-using-xpath-in-the-first-place-why-do-we-use-it-instead-of-the-html-attributes-directly">Hey! Wait a minute!<br>We can do all of this without using XPath in the first place!<br>Why do we use it instead of the HTML attributes directly?</h3><p>XPath has tons of features. It is maintainable, reliable (if used smartly) and easy to read and understand. You will never be struggling again to locate web-elements if you start to learn it and master its selectors. Despite the simple example mentioned in this article, XPath can be used to locate:<br><em>1. The parent web-element.<br>2. The side-by-side element in the same level.<br>3. The first, second, third, …, n<sup>th</sup> child of web-element.</em></p><p>Furthermore, when it comes to automating mobile apps, the main structure of screens and controls with native apps is based on XML, and the only selector that can deal with XML is XPath. XPath is your best choice for interacting with controls for mobile test automation.</p><h2 id="conclusion">Conclusion</h2><p>XPath is a beautiful tool that auto-tester should be using in automation. It is powerful, readable, and makes things easier. It is compatible with all automation tools. Auto-Test Engineers cannot complete any auto-test suite without using XPath. So, instead of using it with concerns, we may move forward to gain a well-established understanding of XPath, and be trustful about using it efficiently.</p>]]></content:encoded></item><item><title><![CDATA[Product Development Lifecycle]]></title><description><![CDATA[Working with a well-defined product development process resulting in a successful product, and working with an experienced team on how to work and apply this process is a major for your product success. Now, let's see the the product development life cycle.]]></description><link>https://blog.rubikal.com/product-development-lifecycle/</link><guid isPermaLink="false">5e8b805c29fd344e885297ae</guid><category><![CDATA[product]]></category><category><![CDATA[development]]></category><category><![CDATA[software]]></category><category><![CDATA[Rubikal]]></category><dc:creator><![CDATA[Nada Hafez]]></dc:creator><pubDate>Mon, 06 Apr 2020 19:48:20 GMT</pubDate><media:content url="https://blog.rubikal.com/content/images/2020/05/0.jpeg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.rubikal.com/content/images/2020/05/0.jpeg" alt="Product Development Lifecycle"><p></p><p>Working with a well-defined product development process resulting in a successful product, and working with an experienced team on how to work and apply this process is a major for your product success. Now, let's see the the product development life cycle.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/f3c806219021f02101fe807bb2c2a2a7b0a160e7.png" class="kg-image" alt="Product Development Lifecycle"><figcaption>Software Development Life Cycle&nbsp;</figcaption></figure><p><strong>Product Discovery</strong></p><p>A  product  plan  is  kicked  off  with  a  discovery  and market  validation  phase  where  we  frame  the  idea, understand   the   customers   and   users,   envision   a solution   that’s   valuable,   then minimize and   plan   a solution  that  is  feasible  with  the  tools  we  have  and within the required time frame.  </p><p>The discovery phase includes collaboration with the UX design  team  where  we  go  through  the  design  process to  come  up  with  the  optimum  design  for  the  problem we’re solving. The deliverables in this phase contain: </p><p>•An   executive   summary:   which   is   a   one   page document  containing  an  outline  of  the  features  and why we’re doing them<br>•A stakeholder map<br>•A list of user personas<br>•A user flow diagram<br>•A product roadmap <br>•A user journey map<br>•A low-fidelity wireframe<br>•A high-fidelity wireframe<br>•An interactive prototype</p><p><strong>Product Development </strong></p><p>Start  the  development  process  where  we  kick off by holding a workshop to establish what we’re going to  build,  how  we’re  going  to  build  it  and  why. Applying Scrum, we work iteratively in sprints and we use Jira as our project management platform. We start by holding a workshop  for  user  story  writing and  then  have  a  sprint kickoff meeting to start   the   sprint, have regular standups,  a  retrospective  meeting  once  the  sprint  is done  as  well  as  a stakeholder  product  review  and repeat the process with following sprints/iterations. </p><p><strong>Working Agile at Rubikal </strong></p><p>Agile   project   management   is   designed   specifically around  software development.  It’s  best  suited  for  fast-paced  and  dynamic  environments  which can  benefit from working in a flexible and iterative manner. </p><p>Agile  has  been  a  life-changing  way  for  us  to  work.  It’s proven  to  be  the most efficient  way  to  get  things  done. Concentrating   on   what   we   can   achieve   during   a specific  one-week  or  two-week  period  gives  everyone on  our  team achievable  goals.  It  creates  a  sense  of urgency,  forcing  us  to  make  smart decisions  to  reach our  goals.  It  also  gives  an  individual  contributor  the incredible  feeling  of  accomplishment  when  they  mark their  tasks  as  “done” and  see  the  whole  week  turn green.  This  boosts  team’s  motivation  to  start the  next week fresh and tackle a new set of goals.</p><h2 id="anatomy-of-a-scrum-sprint">					Anatomy of  a Scrum Sprint <br></h2><blockquote>“Work expands so as to fill the time available for its completion” — Parkinson's law </blockquote><p>With  Scrum,  we  break  down  big,  complex  projects  into manageable  pieces  on which  we  serially  iterate  on.  A sprint  is  a  recurring  time  frame  in  which  the design, development, testing, and review of those small pieces. A  minor  release  is launched  at  the  end  of  every  sprint. This  way,  we  guarantee  a  steady  pace  of product updates out to users.</p><p>A scrum board is where the magic happens. It overlays the product as a list of stories, with priorities, stored in a backlog.  A  sprint  planning  is  one  venue where  stories are  moved  from  the  backlog  to  the  particular  sprint’s backlog.   That’s   where   stories   are   broken   down, estimated,  assigned  to  a  team member.  Once  a  sprint capacity is reached, the sprint is started with a relevant sprint goal.  </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.rubikal.com/content/images/2020/04/image.png" class="kg-image" alt="Product Development Lifecycle"><figcaption>Agile process</figcaption></figure><p>A   typical   product   engineering   team   would   include backend,  frontend,  and mobile  engineering  members depending   on   the   product   scope.   Quality   control analysts are essential in our team setup. QC guarantees quality  of  the shipped  work  on  a  sprint  to  sprint  basis. Finally,  a  project  manager  whose responsibility  is  to glue   the   different   disciplines   into   one   solid   entity working  towards  a  goal,  which  is  a  shippable  product as fast and as good as possible. </p><p>While  the  product  engineering  team  is  building  the features in a sprint, QC is analyzing the stories/features and  coming  up  with  meaningful  test  scenarios that need  to  pass  in  order  to  consider  a  certain  feature  is done.  A  feature  is considered  done  if <em>(and  only  if)</em>  it passed the QC test plan. </p><p>Towards  the  end  of  a  sprint,  stories  which  passed  QC analysis  are  deployed and  a  new  increment  of  the product is shipped with the new features included. This process is repeated until a final version of the product is attained. </p><h2 id="agile-ceremonies-demystified">				Agile Ceremonies Demystified </h2><p><strong>Sprint Planning </strong><br>The venue where a sprint plan and a sprint goal are set. It’s  attended  by  the entire  team,  including  project  and product  managers.  A  prerequisite  to that meeting  is  a prioritized product backlog. Whose items are discussed with the development  team,  and  the  group  collectively estimates  the  effort  involved. The  product  engineering team  will  then  make  a  sprint  forecast  outlining  how much  work  the  team  can  complete  from  the  product backlog. That  body  of work  then  becomes  the  sprint backlog. It typically takes somewhere between and hour and two hours depending on the sprint length. </p><p><strong>Daily Standup </strong><br>A   standup   is   where   everyone   communicates   their status,  or  any  blockers they  might  be  having.  The  goal of  this  meeting  is  for  everyone  to  stay  in sync,  while implicitly adding a sense of accountability among team members. <br>It typically takes no more than 15 minutes. </p><p><strong>Sprint Retrospective</strong> <br>The purpose of this meeting is to get rapid feedback to make   the   product   and   development   culture   better. Retrospectives  help  the  team  understand  what worked well and what didn't.</p><p>Here is a video explaining Agile process:</p><figure class="kg-card kg-embed-card kg-card-hascaption"><iframe width="480" height="270" src="https://www.youtube.com/embed/MJR-EgHTA4E?start=19&feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><figcaption>What is agile project management</figcaption></figure><p>We at Rubikal apply a text book Scrum and Agile process and that helped us deliver products faster with a high quality code, if you have a project in mind and want to start please reach out to us now!</p><hr><h2 id="ready-to-work-with-us">Ready to work with us?</h2><p>We have a full house of talents, who are capable to build your dream application. Rubikal can help from an idea phase to a scaling solution that serve millions of users. Reach out to us <a href="#hs-chat-open">Here</a><br><br>Book a <a href="https://meetings.hubspot.com/ehab-darwish/rubikal-demo">meeting</a> with us<br><br>Learn more about us here <a href="https://rubikal.com">Rubikal.com</a><br></p><p><em>Engineer and up to the challenge, check out our latest job opening <a href="https://apply.workable.com/rubikal/">here</a> </em></p>]]></content:encoded></item></channel></rss>