Categories
Software Technology

Coding.fest meetup: PHP, Node.js and Blockchain insights that you cannot miss

The worst pandemic times seem to be already behind us and the market is slowly coming back to life after two years of lockdowns and online events. Since we can meet stationary without fear, our focus is to conduct conferences, workshops and other face to face events. At Espeo, we believe that nothing can replace interpersonal contact in a traditional form. This is why our first post-pandemic stationary event, coding.fest, took place on the 21st of April. It was an amazing meeting hosted in Gdańsk (Olivia Business Centre, O4 Coworking), from where our employees from Tricity work. Three of our employees (Piotr Horzycki, and Szymon Biduła) have prepared prelections about PHP, Node.js, and Blockchain technologies. In this piece, we have collected summaries of the most important information from each speech that may be useful for you at work.

From this article you will learn about:

Handling currency in an international fintech (Piotr Horzycki, Senior PHP Developer)

It’s tricky to handle multiple currencies in international fintech projects. From payment gateways to billing engines, there is a risk of losing money due to wrong calculations. When different systems have their own way of handling money, it’s easy to make a terrible mistake. Fortunately, we have a set of good practices, industry standards, and libraries for popular programming languages. Let’s start from using proper data types. Because most currencies have minor units of 1/100, it is natural to use decimal numbers to represent the amount. However, computers do not handle decimal numbers natively. Try adding 0.1 + 0.2 in a browser’s debugging console and you will not get the expected 0.3 due to a binary floating point system being used internally. This is why most e-commerce applications store an amount in the smallest unit as an integer. To make the calculations more reliable, especially across multiple currencies, a Money Pattern was invented. It already has successful implementations across PHP, Java, Javascript and other languages (MoneyPHP, Java Money, Dinero.js). Addition, subtraction, tax calculation, allocation, currency conversion – these are easily handled by well-tested libraries. When interchanging data between APIs, it is crucial to agree upon a contract. It’s not enough to just send a number and label it as “price.” Thus, it is common to provide an object that combines an amount and a currency, like {“amount”: 1234, “currency”: “EUR”}. It would be even better to clarify use of integers with a label like amountInteger. This way we can avoid all misunderstandings.

Piotr Horzycki, Senior PHP Developer

Hexagonal NestJS (Wojtek, Senior Node.js Developer)

Wojtek took us on a journey through the Yet Another NestJS App. Together, we discovered the unpleasant factors that developers encounter quite often during application development, such as: tangled codebase – instilling fear of change, fixed dependencies – causing vendor lock and reducing migration possibilities, cannonade of Mocked Dependencies – to set up your every single test. This final state of evolution is recognizable in the industry as The Big Ball of Mud and often ties developer’s hands, making it difficult for them to adapt to current business needs. This may end up with exponentially growing maintenance expenses, issues with meeting desired time-to-market and draining morale with poor development experience. Later, we highlighted The Architecture we Might Need: explicit, flexible and testable. These factors led us to the concept of Hexagonal Architecture. We’ve learned about its rules, building blocks, flow, and dependency relations between components. Limiting the integration points to the bare minimum and explicitly defining them introduced a bunch of improvements: better code organisation – through cognitive-friendly structure, increased testability – making entire business flow unit-testable, enhanced understanding – by exposing business processes, flexibility – possibility to delay critical decisions (aka. points of no return). Wojtek also showed us a NestJS project implemented in Hexagonal Architecture, cleverly using DI mechanism, encapsulating dependencies in Self-Contained Modules – hiding all implementation details and setting them up via Composition Root. We also saw how a modular, hexagonal approach can help us with microservice separation.

Are you a Node.js Developer looking for unique career opportunities? Check our job offer and join #espeocrew!

Connecting the DeFi space: Building bridges between blockchains (Szymon Biduła, Blockchain Developer)

Currently, the blockchain landscape is composed of many protocols that represent different design choices and as a result are mostly incompatible with each other. Yet, the liquidity, that could be measured by the overall market cap, is divided only among a few top players. Given the rapid rise of decentralized finance (DeFi) that is shaping the current market, underdogs need to find a way to bring the liquidity that enables DeFi or face unpleasant consequences. Therefore, many foundations and companies are interested in creating bridges between different blockchains. Creating such a solution for the client could be a daunting task for the developer. After all, one needs to take into consideration even the miniscule details of each blockchain to enable a seamless token swap. Thus, during the presentation a mental framework was presented that could make this task easier. This framework consisted of a list of issues that needed to be resolved on every bridge and questions that were worthy of lengthy discussion with the client during the design phase. Finally, the potential security risks were highlighted as bridges are currently the main target of the hackers attacks in the blockchain space.

Are you a Blockchain developer looking for new challenges? We have multiple growth opportunities for you! Check out our open job positions, apply and join our team!

The meetup provided ample opportunity to discuss interesting questions raised by participants. The planned Q&A session after each lecture and the networking session after the main part of the event happened to be very engaging. During the event, the participants were given the opportunity of winning the GoPro Hero 8 webcam by answering one question: “In applications we often have a common database schema – both for Write and Read. What is the name of the approach that uses separate Read / Write models?”. The correct answer was Command Query Responsibility Segregation. The event showed us how important it is to return to offline meetings, which have been lacking in the past few years. We are already planning further ones for all programming enthusiasts. We hope to meet you there! Stay up to date with all the latest meetups and workshops we organize. Follow us on Linkedin, Facebook, and Instagram not to miss anything.

Are you a software developer looking for new challenges? Join our team and work with the best experts! Check out our job offers, apply and boost your career!

Categories
Software Technology

Non-technical books for IT people

The IT sector is growing very fast and more and more people are interested in new technologies that affect our lives. The industry is always faced with new challenges and problems as it develops. If you want to know more about the IT industry, about coders, artificial intelligence, mathematics that surrounds us everywhere, you should certainly take a look at books mentioned in this article.

“Coders. The Making of a New Tribe and the Remaking of the World” by Clive Thompson

Have you ever heard a question “What do you really do as a software developer” at the family table? Has your friend ever asked you to repair her or his computer? If the answer to any of these questions is yes, you should certainly let them read the book “Coders” – reportage written by Canadian freelance journalist Clive Thompson.

This story is a complex introduction to a world of new technologies and software developers; it answers questions about the programmers – why they are the way they are, why they are sometimes so frustrated and closed to other people. Thompson shows how powerful and intelligent they are, how they think and work. But this is not only the laurel for the developers. The author isn’t afraid of writing about the tough and bad sides of the IT industry. He shows that it is not only a place of nice hipsters smoking weed but there are many social problems like sexual harassment, racism, and nationalism. Thompson proves that the IT industry and career as a software developer is for everyone, for people of all genders, all nations and skin colors. The best summary of this theory is: “if a given tool is created by a team that is essentially homogeneous in terms of culture, it will have significant weaknesses – resulting from the failure to perceive certain aspects of representatives of this one culture.”

Link to english version: https://www.amazon.com/Coders-Making-Tribe-Remaking-World/dp/0735220565

Link to polish version: https://www.znak.com.pl/ksiazka/koderzy-opowiesc-o-ludziach-ktorzy-zmienili-nasz-clive-thompson-147344

“Ada’s Algorithm. How Lord Byron’s Daughter Ada Lovelace Launched the Digital Age through the Poetry of Numbers” by James Essinger

Ada Lovelace was a daughter of Lord Byron, the famous poet, but she didn’t follow in her father’s footsteps. She became well-known as a brilliant English mathematician. She wrote a publication about Charles Babbage’s mechanical general-purpose computer. Ada started to be known as the first computer programmer after she published the algorithm.

James Essinger in his book called “Ada’s Algorithm. How Lord Byron’s Daughter Ada Lovelace Launched the Digital Age through the Poetry of Numbers” tells the fantastic story about Ada, her stubbornness in pursuing the goal and her analytical thinking. The book also tells the story of the very beginnings of computers, programming, and algorithms. It is even hard to believe that all of that happened in the early XIX century, almost 200 hundred years ago. This is a story about an amazing woman who not only proves her outstanding intelligence but also does it in a world dominated by men.

Link to english version: https://www.amazon.com/Adas-Algorithm-Daughter-Lovelace-Launched/dp/1612194575

Link to polish version: https://www.znak.com.pl/ksiazka/algorytm-ady-james-essinger-163789

“Infinite Powers. How Calculus Reveals the Secrets of the Universe” by Steven Strogatz

When I was participating in my Mathematics course at the university, we had an exam about ​​integrals and differentials. It was one of the most difficult exams in the first year of our studies. Some of us passed the exam on the first try, some of us passed the exam in the next attempts. I noticed that none of us, the ones who passed and didn’t pass the exam, didn’t really understand the integrals and differentials. We just knew how to solve exercises and remember the mathematical formulas. It changed when I read the book “Infinite Powers. How Calculus reveals the Secrets of the University” by Steven Strogatz.

The author explains the power of mathematics in a very simple way. He uses a lot of stories that help to understand what integral and differentials really are and how they affect everyday life. Without differential and integral calculus, there wouldn’t be mobile phones, television, we wouldn’t be able to disintegrate the atom or land on the Moon. If you want to understand mathematics and how it affects almost everything around us, you should definitely spend a weekend with Steven Strogatzs book.

Link to english version: https://www.amazon.com/Infinite-Powers-Calculus-Reveals-Universe/dp/0358299284/ref=sr_1_1?keywords=infinite+powers&qid=1649844765&s=books&sprefix=Infinite+Powers%2Cstripbooks-intl-ship%2C159&sr=1-1

Link to polish version: https://www.ccpress.pl/potega-nieskonczonosci-jak-rachunek-rozniczkowy-i-cakowy-odkrywa-tajemnice-wszechswiata

“Hello world. How to be Human in the Age of the Machine” by Hannah Fry

We live in a technologically advanced age. It develops in a very fast way, the fastest way in the world’s history. About 30 years ago, mobile phones started to be popular, but the internet wasn’t as popular as it is now. We are witnesses of a great era, at least in context of fast evolution. But is everything going in the right direction?

Hannah Fry, the British mathematician, in her book “Hello World. How to be Human in the Age of the Machine” in a very good way describes technological progress in the last few years and also predicts what we should expect in the near future. Should we be afraid of the development of smart homes? Should we be afraid of autonomous cars? Should we be afraid of data leaks? In this book, you will find answers to these and many other questions. Hannah Fry wrote that this book is about who we are, where we are heading, what is important for us, and how everything changes thanks to the new technology. It is a book about our relations with algorithms, the ones which already exist and work with us everyday.

Link to english version: https://www.amazon.com/Hello-World-Being-Human-Algorithms/dp/039363499X/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=1649844818&sr=1-1

Link to polish version: https://www.wydawnictwoliterackie.pl/produkt/3514/hello-world

“American Kingpin: The Epic Hunt for the Criminal Mastermind Behind the Silk Road” by Nick Bilton

Last but not least, I wanted to write about “American Kingpin: The Epic Hunt for the Criminal Mastermind Behind the Silk Road” written by Nick Bilton. The book tells the story of a man who started an online illegal drugs and guns shop on the Darknet. Ross Ulbricht wasn’t even a software developer, he was a radical libertarian who believed that online drug stores would decrease criminality. In his opinion, people who buy drugs on the streets would have an opportunity to order them online which might result in less gang shootings on the streets. Ulbricht didn’t have coding skills, he started the whole thing by reading tutorials on the web and creating his first store which was full of bugs and errors in security. The shop occured to be a good business and Ross Ulbricht became a millionaire in a very short time. The book written by Nick Bilton is a reportage but you can read it as an interesting crime story. It shows the study of insanity that pushes the boundaries further and further. To be honest, this is one of the best books I have recently had the opportunity to read.

English version: https://www.amazon.com/American-Kingpin-Criminal-Mastermind-Behind/dp/1591848148/ref=tmm_hrd_swatch_0?_encoding=UTF8&qid=1649844890&sr=1-1

Polish version: https://czarne.com.pl/katalog/ksiazki/krol-darknetu?gclid=CjwKCAjw6dmSBhBkEiwA_W-EoNi61HjY4MHRNKuN2DGP_xW2KeljhWS2KnQbUsCm0jSvuBg8EFQgcxoCL6YQAvD_BwE

Summary

All five books mentioned above are very good ones, written by leading journalists and scientists. You don’t need to have any technological knowledge in order to enjoy them. Especially if you are a software developer, project manager, ux designer or you just want to know more about the present and future world, you won’t be disappointed with these books.

Are you an IT Specialist looking for new career opportunities? Make sure to check out our job offers and join the team of software development experts!

Categories
Entrepreneurship Software

Software development outsourcing: 9 benefits that will make you want to outsource your next digital project

Software development is a compound process involving a range of services, from building applications to integrating software and analyzing data. The complexity of all stages makes outsourcing software a great alternative to building an in-house team. In the following article, we examine the most important benefits of outsourcing software development.

Jump to the software outsourcing benefit of your interest:

Save time and focus on what your company does best

A full in-house product development cycle can consume a lot of time – from a couple of months up to a few years. Meanwhile, a reliable software development outsourcing vendor can deliver a minimum viable product (MVP) in as little as three months by following an agile approach. As a result, collaborating with an external company enables you to conduct the project much faster and efficiently. In addition, the time which you spend on finding an appropriate IT company to outsource your work is shorter than the recruitment process. With all the saved time, your team can focus on developing other areas of your business, along with the strategy of your new digital product.

Tackle the developers shortage problem: recruit faster and more efficiently

An average of 44 days passes between submitting a job application and the start of the first day on the job for software developers, according to a new study from LinkedIn. On top of that, the onboarding process is not included in that period of time. Meanwhile, a fully functioning team can be set up within two weeks if it is outsourced. Let’s consider the situation in the Nordics. There, an effective IT recruitment of a Senior Developer may take up to 9 months. For fast-moving companies and startups, this means not only additional costs but also delays in their time-to-market. With outsourcing, a team of experienced developers can start working on your project in as little as two weeks.

Align your spend with the desired business outcome

According to research done by Joe Hadzima, a senior lecturer from MIT, the true cost of an in-house developer could be 2.7x times the base salary. In comparison, outsourcing a simple MVP to an IT outsourcing company can start from $40,000. That includes everything from technology to team management and IT support. On the contrary, in Poland, the cost of the same performed labor may differ by up to 80% compared to West Europe or North America.

Save on technology and infrastructure

With software outsourcing, any expansion of the IT infrastructure in the event of scaling the development up is minimized to an extent. It is the offshore software development company that carries the costs of the complete IT architecture and infrastructure.

Free resource: what are the best questions to ask your potential software provider before starting a cooperation

Access to a bigger pool of IT experts

Highly skilled experts are difficult to find, especially when you are looking for experts with an experience in niche technologies. Outsourcing software development gives you access to specialists with unmatched skills and expertise. You can find specialists that will handle your project without needing to worry about additional training or guidance for in-house employees.

Increased efficiency and faster Time-to-Market

Outsourcing the development of your project can decrease the software delivery time by e.g. 80%. This is possible thanks to a team that is totally focused on coding and not distracted by other in-house requirements.

Reduced risk & staffing flexibility

More flexibility is another considerable advantage of outsourcing development. Hiring new employees for short-term projects is inefficient and generates additional costs, especially in the downtime phase. By outsourcing software development, you can increase or decrease the size of your team as necessary. According to one of our long-term clients, Education Alliance Finland, the flexibility to scale up or down is one of the reasons they decided to outsource their software development.

“When we outsource, the work is more flexible – naturally we have different development needs at different points and times. We can scale up and scale down our business whenever needed.”

Olli Vallo, the CEO of Education Alliance Finland

Access to the latest tools and tech

Inefficient technology may be one of the reasons to outsource your development. By working with a software provider that uses advanced technology, your product can gain a competitive edge on the market and hence have higher chances of succeeding. What is more, cooperating with an outsourced software development provider can modernize the current technology of your business, speed up the deployment of the new stuff and help your employees gain valuable insights from the outsourced team.

Strategic partner for transformation

Working with external partners provides your company with practical experience, new knowledge, and meaningful feedback. Therefore, you gain valuable insights that can lead to the improvement of your project as well as your company in general. To sum up, outsourcing your software development might be a strategically-wise decision. If you are still unsure and would like to learn more about the software outsourcing process, feel free to reach out to us using the contact form below. One of our colleagues will get back to you to discuss more.

Would you like to discuss how outsourcing software development of your project can benefit your company in particular? Send us a message and we’ll come back to you shortly.

Categories
Software Technology

The future of software consulting by Dominik Zyskowski, Software Consulting Director

There are many faces to software development consulting. This is why the demand for companies that will be able to address all of them will only increase in the next few years. In the following piece, I dive into the topic of software consulting and possible scenarios for its future. Continue reading to learn more about:

How it all started: a journey from an academic post to consulting international market leaders in terms of software development

My background is strictly scientific. When I first started my career, I worked at a university on R&D projects, mostly focused on developing IT solutions from scratch. I had to come up with the desired solution and then plan all the steps that were necessary in order to develop it. I enjoyed the possibility that I could work on something from the beginning, plan all the business assumptions, and then document the process of achieving them. Since all the projects were focused on addressing unique business challenges, I’ve gained a lot of valuable insights into the best ways of approaching different problems and business needs in terms of software development. Especially in situations where there are no already-built software solutions that address those problems and needs. During my doctorate, I got offered a job in PayU, where I soon started as a Product Owner. It was the time when agile was only being introduced in companies and I was on the front line when the new approach was implemented. Before that, the main methodology used to deliver projects was traditional SDLC and was based on the combined rules of Prince2 and agile.

The future of software consulting by Dominik Zyskowski, Software Consulting Director

During my time at PayU, I have become specialized in business analysis – as a Product Owner, I was working closely with the team but at the same time I was the decision maker and domain expert driving the direction of the projects. Later, when I started working at Espeo Software, I firstly continued my path as a Product Owner. Back then, we primarily worked on projects with public clients and my role was to directly translate the client’s specification into what our teams had to custom develop. After the company’s pivot to the international market, I took over the responsibility of managing the primary contact with the clients. As part of this role, I had the chance to put my past experience to good use. The ability to listen well and inspire trust, as well as the knowledge of how to integrate clients’ needs with software development and business premises helped me succeed as a Consulting Director. Therefore, clients are assured that they are discussing their software needs with a person who can guide them through all the steps required in order to help them achieve their business objectives. As the company grew, I slowly moved away from being involved in projects and focused solely on software consulting. After all these years, I feel like all my previous experiences led me to my current position. I enjoy my work especially thanks to a challenging and fast-paced environment where I am exposed to different business problems that I can help solve.

“Custom development can address many business needs but sometimes SaaS is the better option. During the consultations with clients, I am always driven by the optimal solution and if a ready-made product can help the client more, I don’t refrain from recommending it.”

What is software consulting? My thoughts on the matter

Software consulting is a process which provides the opportunity to make informed and cost-efficient investment decisions which can later lead to much larger IT investments and therefore, costs. It is an excellent way for businesses looking to invest in a certain solution to gain an understanding of the markets’ implementability. It is utterly important to consult a business idea with an expert who has considerable industry experience and knows what alternatives to that business idea already exist. One of the reasons for this is that an external software consulting expert can advise on the optimal technology that should be used in a particular project. From experience, I can also add that software consultants care for their clients’ success and are determined to help them achieve it. What is more, software consulting enables efficient cooperation.

When it comes to custom solutions, there are many different ways to achieve one desired result. As a Consulting Director, I know how to make sure that both client and the development team are on the same page. Providing software consulting services brings a great deal of satisfaction – oftentimes clients simply don’t know how to overcome their business obstacles. I can advise them on the optimal solution as a software consultant with experience from a variety of industries – in most of the cases we as a company have already solved a similar case and additionally to sharing valuable insights, we can do the same for them. This is possible thanks to the large number of projects that we have delivered over the years. There are particular project similarities that can be discovered and reused, despite the industry the client operates in. As a result, I can use the previously gained insights and advise companies despite their primary field.

My take on the advantages of software consulting from the client perspective

First of all, investing in digital solutions that were previously consulted has a much higher probability of success. This is because in the phase of consulting, the potential risks and opportunities are identified and discussed thoroughly. Moreover, consulting workshops create a thread of understanding between the client and the software development provider – after the workshop, there are little to no uncertainties. Both parties are aware of the previously mentioned opportunities and risks, technologies that have to be used as well as the order of particular project stages. What is more, software consulting workshops offer an additional benefit – the flexibility of choosing the vendor who will be in charge of developing the final software. This is possible due to detailed deliverables that are produced during the consultancy process. It is important to mention that the client is not obliged to develop the software with the vendor who worked on the consulting.

“Software consulting should be objective and detached from the particular company. The results of the software consulting workshops should be easily applicable by a different software development vendor.”

A good consultant is aware of his or her weak points. This is why during the software consultancy process, the consultant draws on his or her knowledge from many various sources and sometimes cooperates with other experts. At Espeo, if we happen to work on a case where we lack the proper experience of, we work with experienced external consultants who excel in needed areas. This particular net of external experts creates additional value for the client as the project is managed by people with very specialized expertise (usually by the lead consultant and subject matter expert).

The current state of software consulting

One thing is for sure. Businesses looking for ways to stay competitive by investing in digital solutions put a particular focus on convenience. They intend to purchase a 360-degree service that includes not only consulting, but also audit, design, implementation, and maintenance. Nowadays, there is a growing number of companies that address that need. For instance, vendors developing mobile apps offer additional services consisting of various actions that help position the end-solution on the market (e.g. through search engine optimization, online and offline marketing among others).

In the light of the above, one of the most prominent trends in the consulting and development industry is the increasing specialization of such companies. They are primarily interested in increasing their customer contact and product offerings. Second trend I want to discuss is the fact that big, well-established consulting companies are changing their structures and extending their offerings to be more like software houses. They no longer offer only strategic consulting but also get into the role of the final provider by implementing the solutions they have previously consulted. This is a big shift considering that in the past, companies like these would give their recommendations which were later implemented by other companies. Now, they are slowly entering the software development market. On the other hand, more and more software development companies do the contrary by adding consulting services to their offerings.

Additionally, one undeniable trend is the increasing popularity of building digital solutions with low-code no-code platforms. In response to the demand, companies that are specialized in choosing the optimal ready-made solutions for particular business challenges are becoming growingly relevant. Furthermore, many companies tailor their systems to meet the needs of a variety of business types. An example of such a company is Jira which offers a lot of different plug-ins, e.g. for recruiting, project management etc. When it comes to the consulting trends in terms of technology, AI, blockchain technology, IOT as well as virtual reality, are constantly in the limelight. Clients who want to invest in projects that are developed using these technologies become increasingly interested in software consulting as it helps them make informed, data-driven decisions about the investments and their possible business outcomes.

The future of software consulting: my predictions

Expertise and proven experience will always be of value. As the world becomes increasingly digital, so must the companies all over the world. However, in order to digitalize in an efficient way, the business owners will have to base their decisions on data-driven premises which can be discovered with the help of software consulting. This is why, in my opinion, the popularity of software consulting in managing various projects will continue to grow. In terms of technologies, there will always be a new solution which will grab the attention of businesses. In my career, I saw this happening quite often – businesses wanted to develop a certain project in a particular technology solely because it was popular at the time. However, it is important to consider if that technology is the optimal one in order to arrive at a desired result. Here, again, software consulting can help as it discovers all the pros and cons of a particular approach and will continue to do so. To sum up, as the complexity of the IT industry increases, the demand for proven experience and consulting will rise.

Discover more FutureTalk articles: