Uncertain development of IT market in 2023 | | https://cleverlance.de/en/blog/Pages/uncertain-development-2023.aspx | Uncertain development of IT market in 2023 | <p><strong>The economic situation in Europe and worldwide is currently facing many uncertainties. Globalization trends are in question after covid-19 pandemic and, more recently, also due to geopolitical risks. But as for our industry, IT custom software development stands on a stable foundation, has still a lot of potential for deeper international cooperation and a fatal recession is not imminent in our business.</strong><br></p><h3>Economic uncertainty<br></h3><p>Many commentators predict a significant slowdown or even crisis within the European and global economies. The real situation is not, in my opinion, as bleak as many paint it. What I observe from market behaviour is more of uncertainty rather than crisis. Fortunately, inflation appears to be easing in key markets and unemployment is still at record lows, both across Europe and in the US. Moreover, most clients are not cutting back on orders, but are planning for shorter periods with monthly or quarterly budgets. <strong>The situation favours flexible players who listen to their clients and can respond flexibly to their needs.</strong></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/inflation_trends_caloun.png" data-themekey="#" class="ms-rteImage-1" alt="" style="margin:5px;width:680px;height:419px;" />source: Eurostat, BLS<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/unemployment_EU_caloun.png" data-themekey="#" class="ms-rteImage-1" alt="" style="margin:5px;width:680px;height:419px;" />source: Eurostat, BLS<br></p><h3>Strengthening position<br></h3><p>The continued attractivity of the IT sector is reflected by strong M&A activity. Major players in the IT business are on a shopping spree and the market is consolidating further. This consolidation is also in the interest of most clients, for whom IT and software are increasingly moving to the centre of their business. As a result, they need to entrust their contracts to reliable companies to manage risks involved, and can no more afford to work with smaller riskier suppliers for their core IT services. Clients are also interested in the quality and breadth of the offering, as suppliers with a broad portfolio of services and skills are gaining an advantage over smaller specialised entities. <strong>Companies in the IT sector are in high demand, and the idea of consolidation into larger units is supported by investors globally.</strong><br></p><h3>Globalisation vs. geopolitics</h3><p>Globalization is not a new addition to the list of IT trends as interest among clients in near-shore or off-shore delivery has been growing for many years. While the covid-19 pandemic has severely crippled global supply chains and many manufacturers have begun to wonder whether they should move their global operations back closer to their home markets, in the IT world globalisation has continued mostly undisturbed. The Russian invasion of Ukraine, however, clearly showed the limits of globalization for the IT world as well, and reinforced the concept of friend-shoring. This concept still focuses on globalisation, but restricts it only to reliable and politically-allied countries. This puts Russia on the outside of this global economy, and also increasingly China and potentially other countries that are not politically aligning themselves with the Euro-Atlantic community. Therefore, in 2023 I expect to see further globalisation in IT services where language barriers allow, but now only within the circle of politically friendly and stable countries. <strong>Companies with linguistically equipped people in the right locations and a global sales network will still have a clear advantage and will be increasingly able to reach interesting clients from Silicon Valley to Singapore.</strong><br></p> | | | | |
Animation plugins in Figma | | https://cleverlance.de/en/blog/Pages/animation-plugins-figma.aspx | Animation plugins in Figma | <p><em>Disclaimer: all tools mentioned in this article are under active development with frequent releases, so the version used when writing this article may already be older than yours. All animations referenced in the article can be found in this </em><a href="https://www.figma.com/file/rtjSqflfNWeaMPAjrQzhoM/Figma-Animations-overview-article---resources?node-id=0:1" target="_blank"><em>Figma file</em></a><em>.</em><br></p><p>When one says "animation tool", most people in the industry immediately think of Adobe Animate or After Effects. No wonder, it's the "industry standard" after all. But when you only animate every once in a while, need to make a nice loading screen, and you already have all the assets made in Figma, you don't want to deal with other tools. As you will see, there is no need to resort to such overkill solutions!<br></p><p>At an opportune moment, Figma plugins enter the scene, enriching its native shape compositing and prototyping functionality with exportable animation capabilities. In this article I will present a selection of the best ones. But first, a bit of terminology.<br></p><h3>Keyframe<br></h3><p>Represents the state of an attribute of a given layer at a given time.<em><img src="/de/blog/PublishingImages/Articles/CreateIt/position_and_color_shift-2.gif" data-themekey="#" class="ms-rtePosition-4" alt="" style="margin:5px 200px;width:190px;height:190px;" /></em></p><p><em>The keyframe for attribute X at 0 seconds into the animation sets the switch position to the left, the next keyframe to the right. Two more keyframes change the color of the switch, the remaining two change the background color</em> (created with Motion).</p><h3>Ease<br></h3><p>Defines the acceleration and deceleration of the transition in time, whether it is faster at the beginning, at the end, or in the middle. This adds a sense of life to the animation - after all, few things in the world move uniformly (linearly), except perhaps gears.<em><img src="/de/blog/PublishingImages/Articles/CreateIt/Ease-2.gif" data-themekey="#" alt="" style="margin:5px 200px;width:190px;" /></em></p><p><em>The light square moves with a linear ease setting, while the dark one moves with "Ease in and out" - it speeds up at the beginning and slows down at the end </em>(created with Motion).<br></p><h3>Object anchor </h3><p>A point that defines the position and anchor of the layer in space. The layer rotates around the <span style="color:#232323;font-size:16px;">anchor; it is used for all motion calculations.</span><br></p><br><p><img src="/de/blog/PublishingImages/Articles/CreateIt/Anchor_center-2.gif" data-themekey="#" alt="" style="color:#696158;font-size:14px;margin:5px;width:190px;" /><img src="/de/blog/PublishingImages/Articles/CreateIt/Anchor_top_left-2.gif" data-themekey="#" alt="" style="margin:5px;width:190px;" /><img src="/de/blog/PublishingImages/Articles/CreateIt/Anchor_offcenter-2.gif" data-themekey="#" alt="" style="margin:5px;width:190px;height:190px;" /><br></p><p><em>Anchor in the center, top left corner, and at 50% of the X dimension and 75% of the Y dimension </em>(created via Motion).</p><h3>Formats<br></h3><p>in which motion graphics are commonly found on the web:<br></p><p><strong>MP4 and WEBM</strong></p><ul><li>Video formats<br></li><li>do not preserve quality when scaling<br></li></ul><p><strong>GIF</strong></p><ul><li>sequence of raster images<br></li><li>does not preserve quality when scaling<br></li><li>large volume<br></li></ul><p><strong>SVG</strong></p><ul><li>XML containing Javascript, CSS or SMIL code that defines individual shapes and their movement<br></li><li>scalable, easy to edit (if you can write the code)<br></li></ul><p>Bonus: <strong>Lottie</strong></p><ul><li>a new minimalist format based on JSON<br></li><li>shapes and their movement are defined using a maximum of two-letter attribute abbreviations<br></li></ul><p>Now let's get into the details of the individual animation plugins.</p><h3>Motion<br></h3><p><img src="/de/blog/PublishingImages/Articles/CreateIt/motion.png" data-themekey="#" alt="" style="margin:5px;width:658px;height:336px;" /><br></p><p><a href="https://motionplugin.com/#" target="_blank">Motion</a> is a plugin with wide animation possibilities, based on keyframes. It allows animating a wide range of attributes, changing anchors with great granularity and copying keyframes between layers with X and Y value recalculation for a simplified workflow. A rich library of preset animations, effects and motions is available so we don't have to set everything up manually.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/link_and_vector_path_shadow-2.gif" data-themekey="#" alt="" style="margin:5px;width:648px;height:402px;" /><br></p><p><em>A paper plane moves according to the drawn vector and the shadow follows it thanks to the dependency provided by the handy link function.</em><br></p><p>The finished animation can be exported in many formats, including GIF, MP4/WEBM and SVG in beta. GIF and SVG also support layer transparency.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figma1.png" data-themekey="#" alt="" style="margin:5px 230px;width:190px;height:411px;" /><br></p><p>Motion has four different licenses, with the free version limited to two-second animations and 30 FPS. The Professional license for 8 days per month is convenient for users who don't animate for a living.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figma6.png" data-themekey="#" alt="" style="margin:5px;width:658px;" /><br></p><p><em>The 8-day Motion license costs $6.39 per month.</em></p><p>Overall, the Motion plugin is very pleasant to use, although I would appreciate the option of a separate window for multi-screen work.<br></p><h3>Figmotion<br></h3><p><a href="https://www.figma.com/community/plugin/733025261168520714/Figmotion" target="_blank">Figmotion</a> is a free plugin with a web interface that makes it ideal for multi-screen work. It is also based on the use of keyframes. Compared to Motion, it supports animation of individual rounded corners and stroke widths, on the other hand, copying keyframes is done without recalculation, which in combination with the need to click Save every time, considerably slows down the workflow.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figmotion_corners-2.gif" data-themekey="#" alt="" style="margin:5px 200px;width:190px;height:190px;" /> </p><p><em>Rounding of individual corners and stroke width.</em><br></p><p>Figmotion implements the dependency between layers using expressions, i.e. calculating values based on variables (time in milliseconds or progress as a decimal value between 0 and 1), or attributes of other layers. However, this functionality is not well documented and you need to know Javascript.<br></p><p>The plugin has only four basic preset ease options and completely lacks a motion library, which means the users have to do everything manually. The anchor can be set to one of nine preselected positions. It supports export to MP4, WEBM and GIF up to 60 FPS, but without the option of transparent layers. Lottie format export was also recently launched in beta, and front-end developers will be interested in the new export for React's Framer Motion.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figma2.png" data-themekey="#" alt="" style="margin:5px 230px;width:190px;height:325px;" /><br></p><p><em>Anchor settings are on top, keyframe settings in the center, and transition options on the bottom.</em></p><p>Figmotion has a huge number of features, but many of them are unfinished, and frequent bugs and a cumbersome workflow take away from its usability. On the other hand, it has unlimited animation length, is free, and has the largest number of users in the Figma community.<br></p><h3>Bonus: Jitter.video<br></h3><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figma3.png" data-themekey="#" alt="" style="margin:5px;width:658px;height:399px;" /><br></p><p><a href="https://jitter.video/" target="_blank">Jitter</a> is a web tool for creating animations from vector shapes which doesn't work directly in Figma, but you can import assets from Figma in a single click using their plugin. While it doesn't yet support all attributes (for example, individually rounded corners), it solves this relatively elegantly - it imports the unsupported layer as a PNG. Rather than keyframes, it focuses on the transition process. It provides a decent library of preset animations and a simplified view of individual attributes.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/figma4.png" data-themekey="#" alt="" style="margin:5px 230px;width:190px;height:460px;" /><br></p><p><em>The user is shileded from individual attributes by user-friendly verbs.</em></p><p>Jitter in the free version does not allow transparent backgrounds and export to higher resolutions. In the case of the beta Lottie export, this limitation is quite easy to work around - you just need to know a bit about the Lottie format and set the transparency manually. The paid version costs $12/month.<br></p><h3>Conclusion<br></h3><p>As you can see, there are several ways to get otherwise static assets moving in Figma, it just depends on what one expects from the tool and whether one is willing to pay something for the extended possibilities to implement one's ideas. The fact that they compete with each other encourages dynamic development, which of course is not without bugs, but the developers of these tools are quick to respond and appreciate every bug reported (I've written about ten of them myself).</p><p>Would you like to learn how to use one of the plugins? You can look forward to a sequel in the form of a tutorial on Motion.<br></p> | | | | |
Place yourself in the centre of your data | | https://cleverlance.de/en/blog/Pages/PST-interview.aspx | Place yourself in the centre of your data | <p>In May 2022 Petr Štros gave an interview to
<a href="https://www.cio.cz/clanky/postavte-se-do-stredu-svych-dat/">CIO Business World</a> telling what's in the store at Cleverlance. </p><p>
<strong>Since 2019, Cleverlance has been part of a group of technology companies united under the Aricoma brand. The original plans were that you would build a large international organization, ready for expansion into foreign markets. How is this vision being fulfilled?</strong></p><p>This is a huge and key topic for us.<br>The goal of making the company a European technology supplier has not changed at all. We are standing on the threshold of great things, of which Cleverlance will be a significant part.<br><br><strong>What does building a European supplier mean to you?</strong><br><br>There are a lot of American and Asian providers on the market but really big European players are missing.<br><br><strong>Do you mean with the EU flag?</strong></p><p>No, with the European flag. We want to have the flag of Europe, but to do business worldwide, to be proud that we are from Europe. In the United States, for example, Europe is still considered a mark of quality, so why not take advantage of that? Today we are at the beginning of our European journey. There are currently around three and a half thousand of us in Aricoma, we want to grow at least threefold, only then will we be big enough to operate in the European context. For me personally, it is interesting to take part in it, to give meaning and contours to the expansion. The target customer is Europe, it is our home address, we certainly will not even resist exporting our services to other continents.<br></p><p>
<strong>Why is it so important for the growth of a company to be part of a large international group?</strong></p><p>Our business is connected to digitization, which has two parts – customer and delivery. The delivery part is problematic all over the world due to the lack of people who would be able to deliver all the required services within the framework of digitization. It is no longer possible to do it with just one company from the Czech Republic and Slovakia.<br>That is why we are part of Aricoma and why we opened branches in Germany and Spain. We need to expand our options. But even there, of course, we have problems finding skilled people at a reasonable price who will fit into our company culture. And we need a lot of them.<br><br>Many of our potential customers in Europe and around the world are really large and as such expect their partners and suppliers to be large companies as well. Cleverlance, even though we are huge with a thousand employees, is not big enough for them. Big companies simply don't like small ones, so Aricoma's size, when it grows to the strength of at least ten thousand employees, will be a springboard for us to new large international customers.<br><br><strong>So you're finally delivering on the strategy </strong><a href="https://www.linkedin.com/company/cleverlance/"><strong>Cleverlance</strong></a><strong> was founded with? That it will be a company that will primarily serve the foreign market.</strong><br><br>Those were the original assumptions. But after the bursting of the dotcom bubble in 2000, we had to reorient ourselves to the Czech market. After a while Czech clients started asking us to go abroad with them on international projects. So we went beyond the borders again. We started to rebuild our positions on the German market. But nothing will ever change about the fact that the domestic market has become key for us and we'll never leave it, nor our Czech clients.<br><br><strong>Which foreign markets do you prefer?</strong><br><br>We are starting in Germany, we already have offices in Munich with salesmen and technicians, now we are trying Austria and eventually we will go to Switzerland. These countries suit us best with their mentality.<br></p><p>
<strong>How does Spain, where you opened offices in April, fit into the expansion?</strong></p><p>Because we are looking for a solution to the critical talent shortage problem, and in addition to expanding our reach, we need English-speaking people. We looked around Europe and found an ideal place in Valencia that offers thousands of technically educated university students every year at a reasonable price, so it was an obvious choice for us. Let's hope it goes well. We want to have 20 people there within six months and 100 within a year, thereby starting a major expansion into Europe. Our goal is also tenders from the European Union.<br></p><p>But it is not easy to get such tenders. You have to go through a series of checks and tests, sign a framework contract with the European Union.<br><br>That's right, we've already gone through all that and we've been officially promised that we'll be one of the 8 companies that will sign such a contract with the European Commission. The contract will set barriers for the supply of services, people or technology for any European company that falls under the European Commission. The contract is for five years and the amount of money contracted is huge.<br><br>And this is also possible only because we are in <a href="https://www.linkedin.com/company/aricoma-group/">ARICOMA Group</a>, because one of the monitored elements was of course our size and stability, which Cleverlance alone would not be enough for, although our knowledge and capabilities are.<br><br><strong>So that contract gives you automatic access to European Commission contracts?</strong><br><br>No, it gives us the opportunity to participate in tenders for contracts from the European Commission, we will be able to apply for contracts in competition with the other seven companies that also have this framework contract. For the fact that we are actually only a Czech company in quotation marks, this is a phenomenal success.<br><br><strong>What are your expectations for the impact on </strong><a href="https://www.linkedin.com/company/cleverlance/"><strong>Cleverlance</strong></a><strong>?</strong></p><p>We expect our turnover to triple at least within those five years.<br>Of course, we would grow even without the contract with the European Commission, but not nearly as fast.<br></p><p>
<img src="/en/blog/PublishingImages/Pages/PST-interview/Petr%20Stros-7945.jpg" alt="Petr Stros-7945.jpg" data-themekey="#" style="margin:5px;" /> <br></p><p>
<strong>Cleverlance is establishing itself very much in the digital economy service. What do you think is the situation in this area?</strong><br><br>The world simply needs <a href="https://www.linkedin.com/feed/hashtag/?keywords=digitization&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#digitization</a> or <a href="https://www.linkedin.com/feed/hashtag/?keywords=digitaltransformation&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#digitaltransformation</a>, it doesn't matter what buzzword we call it. For now, as a world, we are only in the initial phase of the next act of the digital future.<br><br>Undoubtedly, we need tools to build a digital environment that allows us to acquire and use data, communicate with third parties, and then work with all that knowledge. But there are so many of them that it is simply not humanly possible to process them all. Therefore, tools are created to process them, which tell you what you should do on the basis of this data, how you should behave, what to buy, what to sell... But even with automatic data processing, you are soon overwhelmed by the reduced outputs. There's just too much.<br><br><strong>And what can be done about it?</strong></p><p>Change the approach completely. From an attitude of machines telling us what to do, you need to move to a system that offers advice on how to do better what you think is good for your business.<br><br>Therefore, you or your systems must learn to take only the one tiny particle that interests you from the processed <a href="https://www.linkedin.com/feed/hashtag/?keywords=data&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#data</a> and continue to work with it. In a week you can take another part and alternate it as needed. As a customer, you have to put yourself at the center of your data and only get what you need and want, not be overwhelmed by the volume.<br><br>Today, however, it still essentially does not work that way. When that time comes, it will be very interesting. We want to be both a data platform supplier and a user when the system recognizes the customer's feelings in advance and offers him exactly what he needs.<br></p><p>
<strong>What do you mean by that feeling? Do you mean his current business need?</strong></p><p>No, needs can already be found and satisfied by today's artificial intelligence or machine learning algorithms. But recognizing those feelings will be more girlish for the AI, we are only very slowly heading down a very difficult path there. No one even knows yet how to incorporate such an ability into algorithms. First, AI has to really be AI, and then all these things can be incorporated into it. The question is also whether AI will ever really reach a state where it will be intelligent.<br></p><p>
<strong>What limits it today?</strong></p><p>Mainly hardware, when there are quantum computers, we will be in a different situation. Today we are really at the beginning of this journey.</p><p>And thanks to Aricoma, we can embark on that journey and work to create the future. Because the future of the digital economy does not end with building a platform for smart intelligence. An additional layer of blockchain will be needed on top of the AI layer.<br></p><p>
<strong>How does blockchain fit into this?</strong></p><p>I'm not talking about cryptocurrencies, those are completely out of the question. I am referring to pure blockchain technology, which itself offers a safe, unassailable and trustworthy space. Trust is key in business, and so will blockchain in the future. And we are gradually trying to make these technologies available to our customers in the future.<br></p><p>
<strong>How are you trying?</strong></p><p>We have our own blockchain research department where we test our stuff. It's really pure research, classic blockchain science. It is still early for practical use, it will take years. But without science, the future would not come. We are a technology company, and this is exactly the field for us.<br></p><p>
<strong>When we talk about artificial intelligence, the European Union wants to regulate it in a fundamental way. How do you look at it?</strong></p><p>Now, if we set some frameworks for AI behavior, it's not entirely out of the question. I think that is correct, but it depends on the size of the playing field that the EU wants to define. It's a hard nut to crack, because we can't see into the future, it's hard to build future guardrails. If the playing field is too small, we won't be very competitive, if it's too big, there won't really be any regulation and it could happen that the whole thing gets over our heads.<br></p><p>
<strong>Will Skynet or the Matrix come?</strong></p><p>I don't believe that AI will take over us, but it can go over our heads. We're not going to like that anymore, so we have to have some way to stop it. Let me give you an example for drivers - if you drive aggressively, such an overpowered AI will conclude<br>that you are dangerous to the environment and will stop you at every traffic light you meet on the road. Even if you calm down and drive sensibly, he will still run a red light just out of inertia, because you were simply a risky driver. You won't like that. Therefore, it is necessary to have the rules set in advance, and I note that I am not a fan of regulations. But in this area, you can't rely on everyone to self-regulate.<br></p><p>
<strong>But won't such rules limit the competitiveness of European companies?</strong></p><p>I think the whole world will follow us in this, just like for example with GDPR. Everyone feared it as the scourge of mankind, and in the end nothing really happened.<br></p><p> </p><p> <br> </p><br> | | | | |
Five Current UX Trends | | https://cleverlance.de/en/blog/Pages/UX-trends.aspx | Five Current UX Trends | <p>In 2009, when we issued the first yearbook on User-friendly Interface in the Czech Republic, there were only about twenty professionals focusing on the area in the Czech Republic. Today, according to data from Glassdoor, a global leader in the area of information about jobs and employment trends, the position of UX designer is the 25th most sought-after job world-wide. Google’s entry into the world of education resulted in more than half a million certificates being issued. The field is still evolving and so are the requirements and outputs of these creative activities. Let’s have a look at which ones we found the most interesting at the moment.</p><h3>1. User interfaces as brand bearers</h3><p>The more we can learn about users from research, the more time and resources development teams have to focus on the form and consistency of user interface outputs. In order to achieve the best possible user experience, all outputs need to have a unified design –companies cannot afford to use a different tone every time they speak to the client. Still, many companies only focus on the appearance and controls of the application, and at best perhaps also on the corporate colors. However, the brand essence carried by the user interface is an important communication dimension not only towards clients but also within the companies themselves. One such example is Nike, whose user interface is always easily recognizable already at first glance.</p><h3>2. Design system as part of UX delivery</h3><p>In order for a brand to maintain its uniqueness, it is not possible for the look of individual technological solutions to depend only on the supplier or the platform. Design System Management (DSM), which is a set of standards for large-scale design management, is becoming increasingly popular. The tools created in this field provide non-stop access to the current design manual, even to third parties. This ensures visual consistency across various interfaces and digital channels.</p><h3>3. Increasing reliability through user experience</h3><p>Just like before, users who make a purchase get not only the product but also the buying experience, only this time in a digital environment. The fact that the consistency of the appearance and controls are crucial for the user’s relationship to the brand has been confirmed by many studies. For example, according to Adobe Trust Report (The digital economy is personal, 2022), 57 % of users claim that as soon as a company breaks their trust, they will not give it another chance. 70 % of users then stated that inaccurate personalization reduces their trust in the brand. This goes hand in hand with the handling of customers’ data. Here it also holds that the more transparent the digital approach to the processing of the customer’s data, the more willing the customer is to share their date with a company they trust.</p><h3>4. Typography – small details with fatal impact</h3><p>Typography is a small but crucial detail for branding. The more text is transferred to digital equipment, the better the required quality of the text. A UX designer has to keep in mind that today text is used in various situations and places: a driver watching the dashboard in a car, a jogger setting the pace in their application, someone reading the news on the phone during their morning commute, a warehouse operator checking the data from a scanner, an operator configuring a machine in a production plant… All these situations have one thing in common: the user often holds the device in their hand and reads from a shaky screen. This of course places higher requirements on the font than when used on a static device. At Cleverance we often create new fonts on the basis of the client’s requirements to ensure legibility and readability of the text in highly demanding conditions.</p><h3>5. Limits of internal UX teams</h3><p>Many companies that desire to forego UX consultants and create their own internal UX teams quickly find out about the limits of such an approach. The expectation that a single internal UX expert can cover all UX skills often proves to be unrealistic. Sub-fields of UX such as research, copywriting or design are so specialized that not even one expert can manage to master all of these on the required level. This is why many companies now have UX teams with several members, and it’s becoming more difficult to find specialists with the expected skill levels and experience on the job market. As a result, the internal team often focuses on only one area of UX, for example research. However, without a high-quality designer, this only leads to theoretical results. A significant handicap of these teams is their narrow (albeit understandable) specialization on a specific product of the company. Designers and researchers then lack a comparison to, insights from and the best practices for other areas. That is where technological companies come in again, as the variety of the projects they handle can enrich companies with new approaches and nicely complement internal UX teams.<br></p> | | | | |
The Automatic Testing Machine | | https://cleverlance.de/en/blog/Pages/Automatic-Testing.aspx | The Automatic Testing Machine | <p>No universal testing program exists for automated testing. Every project needs its own unique script which is created based on an extensive expert assessment. Before each new project, an exact calculation must be made of which type of testing is optimal, effective, and more economical. Only after this can automated testing and a testing robot enter the picture.<br></p><p>
“Generally speaking, testing automation speeds up the process, that’s evident. And thanks to automation, several different scenarios can be tested, the scope of the tests can be expanded, and each of them can be performed identically because robots perform scenarios absolutely the same way each and every time,” says Tomáš Mertin, an automated testing system developer at Cleverlance. As a result, testing and code writing are essentially simultaneous, and developers can fix any errors or inaccuracies within a short period of time.</p><p>
“In recent months we’ve witnessed an increase in interest in automated testing, it’s a trend, but everyone’s expecting that it will reduce the number of people involved in development. I don’t think that’s going to happen,“ says Mertin. “Automated testing will definitely speed up development. It also provides us with better knowledge of the state of the application at any given moment. But tests, deployment, operations – someone still has to maintain all that. The human dimension is going to stay,” Mertin explains, adding that he thinks automated testing will not fully replace humans. “But it will save time, which they can then spend on actual development.”</p><p>
Automated testing frameworks have proven successful in segments where development is constantly underway. Like the banking sector. “We’ve got a big project in which we’re practically building the entire digital banking framework. One phase has to precisely dovetail with the next one. These days agile management is used for things of this size, which makes it all possible,” says Jan Vajsejtl, who is in charge of testing at Komerční banka, one of the largest banks in the Czech Republic.</p><p>
In the past, large companies like banks used waterfall testing. Testers would receive completed sections while work on development would halt because the developers waited to hear what they needed to fix. If any major intervention was needed, it was followed up with another phase of testing, prolonging the work.
</p><p>
In the past two years, automated testing has been added to conventional, time-tested, and efficient testing methodologies. It’s proven successful wherever development is practically non-stop. The experience with it has been exceptionally good, says Komerční banka’s Jan Vajsejtl.
</p><p>
These are cases where automated testing makes a substantial difference. “Our experience is exceptionally good. The automated system my colleagues and I fine-tuned for our own needs allows us to test practically all devices and environments, cell phones, websites, and more,” Vajsejtl says.
</p><p>
Although the inside of the system is complicated, its use in practice is surprisingly easy. “I think the main advantage is that it’s essentially very simply written. So just a short, half-day training session is enough to be able to start to use it. You definitely don’t need to know how to program or have some deep technical knowledge.” </p><p>
“For me it’s a testing success. We’ve put the testing framework to practical use and tried it out; my colleagues at Cleverlance and I tailored it to Komerční banka’s needs and augmented it with additional functionality. Given the amount of development we have, it’s a really efficient thing,” Vajsejtl.<br></p> | | | | |
When you say analyst, it means that... | | https://cleverlance.de/en/blog/Pages/analysts.aspx | When you say analyst, it means that... | <br><div><p>From an IT perspective, being an analyst means several different positions with various job descriptions. These includes the role of IT analyst, which is also commonly referred to as systems analyst, or business analyst, data analyst or test analyst. But what do people who hold this position actually do and what are they responsible for? Let’s have a look at the roles chronologically as they enter the IT project.</p><h3>Business analyst</h3><p>The first analytical position to join the project is the business analyst. Very simply put, business analysts are responsible for communicating with the client, with business representatives on the customer’s premises. The aim of their work is to collect the client’s needs, transform them into requirements and rank them in order of importance. Subsequently, analysts develop a solution design, i.e. de facto build the software from the user’s point of view. They record their design in the business analysis, which means creating process diagrams, Use Case models or User Stories, activity diagrams, describing user roles, drawing wireframes of screens and so on, i.e. everything that will show how the system should work from the user’s perspective. You can read what a good business analyst needs to know here.</p><h3>IT analyst</h3><p>IT analysts, also known as a systems analysts, enter the project process early or together with the business analyst. Their responsibility is to design the technical solution of the system. In their work, they communicates intensively both with the IT architect, who is responsible for designing the concept of application development, and with the business analyst, who presents to them functional requirements and a description of the solution from a business perspective. The IT analyst then designs and describes the details of the technical solution, individual system modules, data and object structures including their links, defines interfaces and models sequence diagrams, etc. The results of work performed by the IT analyst, together with the results of work performed by the business analyst then constitute the specifications according to which the developers program the required system. This is also why a standard requirement for IT analysts is that they are familiar with programming languages such as Java, .NET, SQL or XML. Knowledge of methodologies such as RUP and ITIL or the recently widespread DevOps approach to software development.</p><h3>Test analyst</h3><p>Test analysts process the test analysis. They study the inputs provided by the business and IT analyst and go through the processes and logic of the entire expected solution with them to understand how the system should work in the end. This means that they enter the project either after the business and IT analyses have been elaborated or before their completion. After familiarising themselves with analytical documents, they develop test scenarios (Test Cases), test suites (logical groupings of tests which are related in some way) and test scripts. It may also happen that during the creation of test scenarios, they come across a deficiency in the business or IT analysis. In this case, they will draw attention to this fact so that the business or IT analyst can incorporate the identified deficiency in the analysis. Test analysts also defines the necessary test data for testing of the software during the creation of test scenarios. In the end, they are able to propose a test plan, i.e. the order of testing the individual test scenarios. Sometimes they are also the ones who prepare the test data or participates in the software testing itself.</p><h3>Data analyst</h3><p>Data analysts, as the name implies, work with data. Each system contains thousands, sometimes millions, of data records from which a wealth of interesting information can be extracted for business purposes. This concerns numeric values, but also text data. Data analysts works with both primary data sources, i.e. data from the main system, and also secondary data, for example, data from systems which deal with less important, i.e. supporting processes. Analysts sort, clean and analyse the data using standard statistical tools. They create various types of reports and visualisations for business or management. They design and create relational databases, define correlations and patterns in complex datasets. The primary skills of a data analyst include database design, familiarity with data warehouses and BI platforms, SQL, data mining, and the ability to visualise the resulting data and present the results. But also knowledge of statistical techniques, mathematical knowledge and orientation in the field of finance. In fact, data analysts can join the project at any time. They can be part of the team almost from the very beginning, for example, if the project involves migration of data from the original system to the new one. Or they can get involved in the project after the system is deployed in production to extract and process the first outputs for the client’s business or management, while continuing this work and continuously preparing various reports and visualisations.</p><p>As can be seen from the description above, several analysts are involved in creation of the system design, and their work builds on that of each other. This is one of the reasons why ongoing, more or less intensive communication is important for everyone. Actually, designing new software could be described as a performance given by a symphony orchestra, with the violin accompanied by the flute or the oboe, with the occasional horn or timpani. If everybody is in tune, they create a beautiful melody, and if not, everybody has to cover their ears. In the case of software, any “wrong notes” would result in a non-functional solution which would not meet the client’s needs and, moreover, would probably not be usable.<br></p></div> | | | | |
Unexpected bad practices | | https://cleverlance.de/en/blog/Pages/unexpected-bad-practices.aspx | Unexpected bad practices | <p>Some programming practices are so familiar to us that we use them automatically without much thought. Sometimes these techniques become obsolete; sometimes they are applied in the wrong context. Addressing such poorly experienced habits is often met with revolt. Especially by those who use them and perceive the topic as useful, so let's do exactly that!</p><h3>Marks<br></h3><p>Programming IDEs often recognize specific types of comments to help navigate across the codebase. Xcode’s <em>FIXME</em> lets other developers know that a piece of code deserves more attention. <em>TODO</em> is helpful when something is, well, to be done. <em>MARK</em> differs from the previous cases; it serves a documentation purpose. The same feature in IntelliJ IDEA/Android Studio is called region.<br></p><p>Marks divide the source code into multiple parts using headings. That can make the code appear broken into logical units. If you are a reader familiar with the former Objective-C era of iOS development, know that this is just an updated <em>#pragma mark</em> directive.<br></p><p>Typical usage is in files with a large number of lines. <em>Marks</em> create the illusion of clarity by breaking them into pieces that supposedly belong together.<br></p><p>The usage of marks in such cases is a bad practice. Developers often abuse them to justify a file being too big. One should not depend on Xcode to make the code comprehensive and readable. Small and well-decomposed classes are more straightforward to reason about and navigate without IDE features. Especially for pull request reviewers using the web interface where those features are absent.<br></p><h3>Extensions</h3><p>Modern programming languages such as Kotlin or Swift allow you to extend classes, interfaces/protocols, structs, or enums to provide an additional implementation. You can divide your code into multiple pieces using extensions to outline what belongs closer together. Another usage is to make a convenience extension around another type you might not even own to make its use more intuitive. The possibilities are almost limitless. This isn't always a good thing, but first, a peek into history.<br></p><p>Extensions existed way back in Objective-C as well. If you're not blessed with experience with programming in such a language and had to guess the name for extensions, you'd likely be surprised. It's Categories! Another surprise is that Extensions are a thing in Objective-C too, but serve different purposes. What's interesting is the difference between both languages. Categories in Objective-C forced the developer to come up with the name. That's why files named in style <em>Class+CategoryName.swift</em> are often used even for Swift extensions. And more importantly, to use Categories, you had to import them explicitly.<br></p><p>Extensions in Swift are an unnamed piece of code. Such code may be more complicated for the reader to grasp. If multiple extensions of the same type exist, adding a name to the code and wrapping it in a type might help readability immensely.<br></p><p>Improper extension of widely used types causes namespace pollution. It's critical, before creating extensions, to ask whether all instances of the type should have such an ability. Should all UIViews have access to a blinking method? Does one specific subclass of UIView make more sense?<br></p><p>Some developers use extensions to break down the implementation of multiple protocols: which might also be a warning sign. If a class implements many protocols, it may be time to consider splitting it into smaller classes.<br></p><p>For trolls out there: you can make your co-workers mad by extending <em>UIView</em> with <em>translatesAutoresizingMasksIntoConstraints and watch them compare it with translatesAutoresizingMaskIntoConstraints.</em><br></p><p>But don't.</p><h3>Comments<br></h3><p>The ability to write comments might lead undisciplined programmers to create code of poor quality. Unfortunately, it's easier to neglect to name a variable and describe what's going on in my head with a complicated but not-so-clear comment. Easy should not be our goal. Brevity and clarity should.<br></p><p>Great comment for poorly written code is still a code smell. Don't just take my word for it. Robert Martin states: "A comment is a failure to express yourself in code. If you fail, then write a comment; but try not to fail."<br></p><p>Another reason is as the code lives in the repository and is modified and refactored, its behavior might change, and its name can express it everywhere it is called. But its comment is rarely updated and may become more confusing than helpful.<br></p><p>Documentation comments serve their purpose very well when you're designing an API for others to use. Remember that the API needs to stand by itself, and clarity is the priority. Don't use the documentation comments as an excuse for a lousy design.<br></p><h3>Structure</h3><p>The structure of a project is one of the first things you see when you check out a codebase, and it should outline the app's purpose at first sight. However, it is not an exception that some projects have folder structures inspired by the layers of architecture, e.g., View, ViewModel, Model.</p><p>Project structure based on architecture layers is a bad practice. It makes reusability effectively impossible. Navigating through such a structure is unnecessarily complicated and becomes harder to maintain as the scope increases. It doesn't scale. Folders inspired by the architecture might have their place, not just at the top level. It should not be the first thing you see.<br></p><p><img src="/de/blog/PublishingImages/Articles/MobileIt/unexpected-bad-practices-01-01.png" data-themekey="#" alt="" style="margin:5px;" /><br></p><p>See for yourself, what structure tells you more about the application?<br></p><h3>Dependencies</h3><p>Open source offers many libraries to simplify life, from UI components through networking to dependency injection solutions. It can often save a great deal of time and effort. On the other hand, this carries various dangers and limitations; using third-party libraries requires discipline, order, and balance.<br></p><p>Randomly scattered third-party dependencies significantly reduce robustness. Shielding the core of the application and using the libraries from the outer parts of the architecture helps mitigate the risk. Abstraction eases the process of replacing one library with another.<br></p><p>It's OK to utilize 3rd party dependencies, but with caution. Ask yourselves: How much time will it save me? How much effort will it take to replace? Can I install enough defense mechanisms to protect the application?<br></p><p>The silver bullet to protect your app, though sometimes tricky or impractical, is to have the import of the dependency in only one place.</p><p>We've had the pleasure of taking over multiple apps that were impossible to maintain anymore due to this problem. Without abstraction, no longer supported (or closed sourced) libraries disintegrated the codebase. External dependencies should never hold your product hostage.<br></p><h3>Tests</h3><p>Test-driven development is a programmer's good manners, a discipline overflowing with benefits. Technical impacts are a blog post by itself, if not a series. Non-technical impacts such as easy onboarding of new team members and executable documentation that cannot become obsolete speak for themselves.<br></p><p>Yet they are often neglected. A complete absence of tests is the apparent first and most common violation, followed by writing tests after the production code, which mitigates all the benefits and introduces other obstacles.<br></p><p>You must write unit tests first - before production code. Testing first will prevent you from creating code that's too complex. It will guide you through building components of the right size. The big classes are challenging to test, and the tests will direct you to decompose them into smaller ones.<br></p><p>Tests written after production code are inherently lower quality and can even be misleading. Unless you write the production code as proof of the first failing test, it is impossible to say whether the tests assert what they declare. It is then questionable how well such tests protect the system under test.<br></p><p>If you write tests after implementation, you may find a component challenging to test, which is impossible with a test-first approach. You can't create untestable code!<br></p><h3>The devil's in the detail</h3><p>Even the mundane can be harmful if we do something too automatically and with less attention. Challenge the ordinary and seek bad practices that you wouldn't expect.<br></p> | | | | |