Web apps in Ruby or PHP? HOW TO SOLVE POPULAR DILEMMA? :)

Customers often have to decide, in which programming language they would like their product to be created. Ruby and PHP are on of the most common dilemma. Inspire of PHP’s former popularity, recently more and more customers are reporting their need to create products using Ruby and its popular Ruby on Rails framework.

In Codest we had the opportunity to cooperate with many clients that require proper arguments, why the programming language offered by the software house will be a good choice for their productQuite often the dilemma concerns Ruby and PHP. We exactly know that PHP is better known for most people. However, the market trend is different. Ruby has many of strengths that customers and developers appreciate. It is not without reason that such services as Twitter, Basecamp or AirBnB have been created in this language.

Ruby is ideally suited for the development of web applications. Its advantage is that it provides many libraries and high quality frameworks that improve the developer’s comfort. The process of building a web application is relatively faster in Ruby than in PHP. The first functionalities of the application can be obtained in a relatively low time. The most commonly used is the Ruby on Rails framework, which has gained great popularity with programmers.

Therefore, if time is a matter of value for a client, Ruby will be a good choice for them due to its time efficiency. At the very same time, there is no fear of any quality lost as the applications created in Ruby on Rails are of high quality and performance. Ruby is appreciated by developers for its brevity and the ease of introducing corrections and upgrades. This helps a lot at the later stages of work.

Obviously, PHP also has its supporters. There are more programmers on the market that have competencies in this area. Ruby creates a bigger barrier for entry for novice developers. The market trend shows, however, that more and more beginners in programming are deciding to learn this language by seeing more possibilities in it. A similar relationship can be shown with the customers, who want to create a web application and turn to the software houses that specialize in Ruby.

Is Berlin becoming a new Europe’s Silicon Valley for tech startups? :)

Everything indicates that we are witnessing a revolution on the startup market in Europe. The dynamically growing market in Berlin is becoming a leader among tech startups. Until now, this title was awarded to London, but currently the capital of Germany is increasingly recognised as the new Europe’s Silicon Valley.

Brexit effects

When the British decided to leave the European Union, the attractiveness of the startup market in London began to lose value. Of course, this is still a place where you can find many innovative companies, but my recent experience confirms that Berlin is considered to be a European leader now. I want to emphasise that this is not an isolated opinion. Having been observing the startup market for over 10 years, I’ve managed to keep in touch with entrepreneurs of various directions and I’ve received clear signals that Berlin is currently the best place in Europe for the development of tech startups.

Comfortable development conditions

There are three main reasons, why Berlin strikes as a very attractive market. It is about the relatively low costs associated with running a business in this city, access to qualified specialists and contacts with other European Union countries. It all adds up to a very attractive ecosystem that favours the development of tech startups.

Being completely honest, I must say that I am impressed by the work standards that prevail among startups in Berlin. Recently, I’ve been quite often in this city, when together with the developers of Codest, we were working on creating software for few of our clients. I was delighted with the quality of work, efficiency in communication and their professionalism.

Returning to the ecosystem for the development of startups in Berlin, I would like to draw your attention to another important fact. I mean the low barrier to start a business. You might be surprised, but takes less than 7 days to launch a startup. In addition, there are many incentives available for entrepreneurs who can benefit, for example, from the support of numerous incubators or accelerators. A big plus is even low prices for an office space rent. It all adds to the progress of this market.

New Europe’s Silicon Valley

Considering what has been mentioned above, I am convinced that Berlin is currently the most attractive market for tech startups. This is a new Europe’s Silicon Valley. Of course, it is difficult to compete with the American one, but Berlin is a great example of how you can develop the tech company in Europe. The best confirmation of this is the fact that currently there are over 2,500 startups in the German capital. Quite an impressive result.

Top 10 German tech events in Q1 2019 :)

Have you ever heard the statement that Berlin is considered to be a new European Silicon Valley? German market with its capital at the forefront is developing very dynamically. It is an attractive place to operate companies and corporations as well as to invest into.

In Germany you can find a lot of interesting tech events that will let you stay up to date with all the latest news in the industry. A few of them promise to be really interesting. Below is a list of the most important events in 2019 (only Q1).

#1 WeAreDevelopers World Congress 2019 – Berlin, January 6-7

IT leaders and specialists from around the world take part in it. The topics discussed include languages and frameworks, distributed systems, fronted and UX engineering, blockchain and issues related to IT project management.

#2 Sillicon Allee Events – Berlin, January 8, February 5, March 5

In the first quarter there are three meetups, organized periodically each month. The community connected with the tech startups in Berlin is taking part, which means that experience exchange, sharing knowledge and gaining valuable contacts are guaranteed.

#3 Handelsblatt Annual Conference Strategic IT Management – Munich, January 21-23

Digital transformation is the main topic of the conference. It’s a good place to acquire new knowledge in IT Management. The event is organized by EUROFORUM.

#4 LZ Open – Berlin, January 23-24

Like the conference in Munich, LZ Open in Berlin is all about digital transformation. In addition, you can gain useful knowledge of current technological trends and learn about effective business models that have revolutionized the market.

#5 Lean Startup Summit – Berlin, February 11-12

This event gathers experts, founders and intrapreneurs and C-level leaders in one place to exchange the latest innovation and transformation methods, share best practices and learn from each other in interactive formats like keynotes, workshops, roundtable discussions and mentoring sessions.

#6 International Conference on Science, Engineering&Technology – Munich, February 3-4

The purpose of this conference is to help exchange information and knowledge between various social groups, such as entrepreneurs, engineers, university lecturers and students. The most current technological trends are the high priority of the conference.

#7 Disruptive Technologies & Innovation Minds – Berlin, February 24-26

Here you will meet over 200 managers responsible in their companies for Research and Development (R&D). You will have an opportunity to take part in a discussion about technological innovations and challenges related to the IT industry.

#8 JavaScript Days – Munich, March 18-21

The event is conducted by experts in the field of JavaScript and HTML5. They will provide their views on how to plan JavaScript and HTML5 applications in the most optimal way and present the strengths and weaknesses of both technologies.

#9 IT&Information Management – Berlin, March 25-26

Strategies and processes, business realities in digital ecosystems, business models of the future, digital realignment and roadmaps – these are just a few examples of the topics that will be discussed during the conference in Berlin. You will have a unique opportunity to meet experienced managers related to the IT market.

#10 Mobile tech Conference – Munich,  March 26-27

This event is addressed to the leaders in mobile technology industry from German-speaking countries. It focuses on topics related to the development of iOS and Android, mobile web and UX experience.

It was a real hit! Best Codest’s articles in 2018 :)

The year 2018 is coming to an end, which is why it seems to be a good time for summaries. In recent months, a lot has happened on our blog. We shared the content prepared by the Codest specialists with you. We checked which articles were the most popular in 2018. Here is our list. If you missed something, we really recommend to catch up.

Where should you open your next startup and why?

The startup market is a very interesting topic, right? We have analyzed the best current markets for business development. Silicon Valley holds the leading positions, but on our list you will find many other interesting locations.

Best Agile tools for IT projects

What is the Agile methodology and what are some useful tools that improve work? On the basis of our client’s completed projects, we are answering how you can effectively increase your efficiency.

5 projects where JavaScript works well

JavaScript, as one of the most popular programming languages. We are presenting in which projects JS works really well.

UX/UI design. Why is it important in an IT project? (interview)

We are interviewing Katarzyna Górniak – Product Designer from Codest about current trends in UI / UX design. We also looking forward to what 2019 can bring us.

What should you know about Ruby on Rails?

We are impressed by Ruby technology and the Ruby on Rails framework. We are talking about their most important features. Here you will find a small compendium of knowledge.

How did Codest push Yieldbird to Deloitte list?

One of our clients has achieved great success in 2018, and we are really happy with it and pleased that our work could have contributed to the development of Yieldbird. See what effects our cooperation has brought.

That’s the strategy! Strategy Design Pattern

Something for the geeks. A design pattern is a conceptual model that helps you solve design problems in various contexts. Do you want to know more? You have to check this article!

First aid for broken JavaScript dependencies :)

I would like to write about JavaScript dependencies. But let’s start from the beginning. If you are a software developer, then you probably already know, that one of your many roles is definitely not to be yet another wheel inventor. At least, not in most of the cases. World has proceeded far enough to say that today there exist packages for almost everything, making our development easier and more efficient.

This of course is not an encouragement for losing interest in other issues – every package has quite a large space to improve and evolve. However, your business goal is to bring a complete product on a plate just on time or even before it is up. Packages will help you fulfill those plans, bringing npm or yarn on the top of your best friends’ list, but be aware: any solution, as well as this one, may also bring risk. And we will try to describe it and show you a better way of getting away with it in the article below.

Let’s start with a story…

Imagine a large JavaScript project. Business requirement obligates developers to use a specific package, allowing a proper integration with another system of a client. And that is completely fine. MVP has been brought on time, next contract has been signed and development is carried on. Client asks to integrate the next part of a system, which requires your package update.

This part goes well, until tests are fired. It seems that the package contains a simple, but inconvenient bug, that has not yet been fixed in any product release and it is known that this won’t happen soon enough. You cannot just fix your node_modules directory – it should be removed out from your repository from tracking, therefore your collaborators will never know anything about your changes! Well, while you were reading this, probably you have already understood what to do – fork. But do you really need such a hammer?

Understand your problem

You must be aware, if the problem you are facing with is going to involve just you or a larger community. Sometimes, people interpret lack of certain functionality as a bug, which is not always correct. Therefore, your solution may not be accepted by a community and not included into an official repository. However, you still need it here and now. Well, let’s patch it!

According to the release notes of github repository, patch-package was released officially in May 2017. It is a powerful tool, that allows modifications inside dependency project to be installed in your node_modules directory. Some may say that this is quite a madness – firing install command your dependence manager will overwrite the changes.

Well, this is correct. However, a patch-package coexists with npm and yarn perfectly (I must admit it works slightly better with npm so far, you can read more in “Why you should use postinstall-prepare with Yarn?” section of README file) and takes full advantage of a script preparation (“script”: { “prepare”:“”}) of your package.json file. Patch-package literally creates a diff directory between your changes and the original package, stored in the patch folder of your actual project.

After running install command and downloading all dependencies, it applies that difference to the project directory, making a perfect reconstruction of your changes for all collaborators. It makes your life simpler, doesn’t it? The solution has some disadvantages as well. The patch-package cannot fix dependencies of your package or make any changes in package.json.

In this case you may use the fork solution. Also, you must consider the number of changes you are about to apply into your dependency package and whether they will grow in time. In case the will – you should think carefully when using fork, as this is a project of your own.

Don’t be selfish!

Patching is a great way to fix your dependencies without creating endless forks and generating multiple project sources. But you should always remember, that taking advantage of community should not be a one-directional. If you find a bug or feel like you can improve the package you’re using, you should always consider helping others by registering an issue or even by contributing to the project!

Top Principles For Building Great Software Product :)

No company is able to succeed, if its product is not of a right value for the potential consumers. Creating an effective product based on proper software, consistent with customer preferences, is the key to your business development.

However, this is not as easy as it may sound. Many startups in the past either collapsed or had big problems getting their target group’s interest. All this happened due to the imperfections of the product. We decided to prepare a list of the most important rules to keep in mind when you are going to create a great software product.

Use the data of your target group

Even if you are convinced that you have created a great product that will not have any problems with the sale, you should check it out. On the basis of our ten – year experience at Codest, we have noticed that customers sometimes take hasty hypotheses, which later result in failures and the need to introduce a lot of modifications. That is why a proper analysis is so important. Use the available data – for example about the behavior and preferences of the target group, and then analyze them for your users.

At first – MVP

The creation of Minimum Value Products (MVP) is a very popular solution. It is not advisable to commission developers at the very beginning of the works aimed at creating very extensive functionalities. First of all, due to the fact that not all ideas can be verified by customers positively. That’s why the idea of MVP works really well. In addition, you should add that, thanks to MVP, you will gain time efficiency and will be able to check what your clients like and what not. If you are thinking about creating a web application, read the Ruby on Rails framework analysis and check which brands have decided to use it.

Choose an effective team of developers

You should entrust the creation of an effective product to professionals. You need to know that, depending on the character of work, it can be a very time-consuming process, which is why your decision should be carefully thought through. Why is it so important? First of all because you will minimize the risk of delays and possible errors. In addition, the competent experienced team of developers will also help you in choosing the right technology.

Remember, that not only the inside of the product counts, but also its overall appearance. In this case, the role of UX designer will be helpful, as this is a person who is perfectly familiar with current market trends and knows how to create user-friendly interfaces.

Testing

Do not give up, if the initial product functionality is not as effective as you expected. In the first phase of its development, you should run as many tests as possible to help you determine weaknesses and strengths. Thanks to A/B tests, you can gain knowledge of the solutions you should abandon in the future. If it maintains constant cooperation with a team  of developers, you will be able to implement subsequent changes very quickly. This will help you match the product to the market needs as fast as possible.

Why Poland is full of qualified Ruby on Rails developers? :)

We have no doubt that Poland is currently one of the most attractive markets in the world, where you can find qualified Ruby on Rails developers. Cooperating with clients every day, we are looking at this trend with quite an interest.  Polish developers are praised not only for their knowledge of this framework, but also for high standards of cooperation.

More and more geeks of RoR

The IT market is struggling around the world with the problem of demand exceeding supply with qualified specialists. Experienced and effective developers are constantly sought after. However in Poland there are quite a lot of them. We have noticed that more and more people are deciding to learn Ruby and its popular Ruby on Rails framework as they see it as a great prospect of development. The exchange of knowledge also comes in handy. The Ruby on Rails geeks community is extensive and appears to be a huge asset of this framework. This comes as quite helpful for developers, primarily when they need to solve a problem.

In addition, the high competences of Polish Ruby programmers should be appreciated. They receive job offers from foreign companies a lot, but a really good situation on the Polish market makes them reluctant to go. In Poland, Ruby developers are truly appreciated. Companies guarantee high earnings and very good working conditions.

Quality

The quality of products created with Ruby on Rails by Polish developers is appreciated all over the world. It is said that RoR programmers in Poland are one of the most developed groups with very high competence and the reasons seem quite obvious. They can combine the capabilities of the Ruby language and the Ruby on Rails framework, creating products based on such features as efficiency, functionality, time efficiency, application width and security. We must also add that Ruby on Rails is probably the best language that allows you to create a product based on MVP (Minimum Value Product) in a very short time. This is a very common solution used by many companies that regularly check and verify the value of their product on the market.

Poland is a great place for outsourcing

Not only the high skills and a wide range of Ruby on Rails developers decide that Poland is perceived as a very good place to outsource. There are also many other benefits, such as cost savings, the ability to cooperate with a customer or ever-growing market. In particular, the first two factors are really crucial from the partner’s perspective. Not only that by creating a product in Ruby on Rails you can be sure of quality and speed, but also software houses in Poland offer very good prices – much lower than in other countries of Western Europe.

Finally, we would like to draw attention to yet another important element – communication. An effective team of developers must be able to communicate effectively with the client to understand their needs and, as a result, create a product that coincides with the expectations. In fact, this is not a simple process at all. That is why it is so important for a software house to have effective cooperation rules, which are best, if confirmed by the recommendations of previous clients.

That’s the Strategy! Strategy Design Pattern :)

While working on a project, it is crucial to remember that you do not want to reinvent the wheel. If a solution for a problem is proved to be effective, reusing it will save you tons of time and a few headaches. In case of system architecture dilemmas, we have developed some patterns to ease a design process.

What is a design pattern?

A design pattern is a conceptual model that helps you solve design problems in various contexts. It is like a reusable template you can apply to a structuring code. The thing is, design patterns are well-documented, well-proven and commonly known. In other words, use a proper design pattern and be sure that other design pattern insiders (aka your coworkers) will get the hang of your ideas smoothly.

Eager to learn? Here comes the Strategy Design Pattern.

The strategy design pattern:

– defines a family of algorithms,

– implements each of the algorithms as a separate entity,

– allows each of the algorithms to be used interchangeably in a given context.

Real life example? Authentication

In one of our apps we have implemented a few strategies for authenticating requests. We allow authentication with cookies, JWT tokens and API keys. Sounds like a family of algorithms to me.

Let’s have a look at a sample implementation.

We have our family of authentication algorithms divided into three separate classes. Each class defines the concrete behavior; it is where all the implementation details go:

module AuthenticationStrategies
  class CookiesAuthentication
    def self.authenticate_request(request)
      puts "I implement a cookie authentication algorithm"
    end
  end
class JWTAuthentication
    def self.authenticate_request(request)
      puts "I implement a jwt authentication algorithm"
    end
  end
class ApiKeyAuthentication
    def self.authenticate_request(request)
      puts "I implement an api key authentication algorithm"
    end
  end
end

Then, we have a context/client class:

class Authentication
  def self.authenticate(authentication_strategy, request)
    authentication_strategy.authenticate_request(request)
  end
end
request = "I pretend to be a request"
Authentication.authenticate(AuthenticationStrategies::CookiesAuthentication, request)
Authentication.authenticate(AuthenticationStrategies::JWTAuthentication, request)
Authentication.authenticate(AuthenticationStrategies::ApiKeyAuthentication, request)

The above script outputs:

I implement a cookie authentication algorithm
I implement a jwt authentication algorithm
I implement an api key authentication algorithm

Summing it up

– design patterns are useful tools for solving architectural problems,

– knowledge of design patterns improves communication on system architecture with other developers,

– the Strategy Design Pattern suits your needs if you have a bunch of algorithms that can be used interchangeably in a given context.

Quality in Codest. Why do we deny to some projects? :)

In the previous articles you could find out, why a great communication in IT project is so important. This time, we would like to talk more about our work at Codest and present our personalized approach to a quality work, which is very crucial for us. To put it in a nutshell – it’s not quantity, but high quality that counts.

Why does the quality work matter?

Our customer’s satisfaction has always been the priority. Codest has been operating for over 10 years on the IT market and at the very beginning it was decided that our work was to stand out from other companies in terms of quality and high efficiency. Nothing has changed since then and it is only due to this approach we can prove our being the best software house that is constantly developing.

The year is coming to an end and that is why we can summarize the completed projects. Once again we have managed to provide a high level of service, reflected by the opinions of our clients and great relationships maintained. They have repeatedly appreciated our approach, emphasizing, that in the case of needs related to the development of software, we will always be their first choice.

Why do we refuse from some projects?

Every month we receive several inquiries from companies that want to cooperate with us. I would like to emphasize that we do not always agree to implement a specific project. It is related to the fact that at first we analyze the availability of our developers and only then we can confirm the readiness to cooperate with a client. We are convinced that this approach puts us in a very good light in our partners’ eyes.

We will never accept a project if our developers do not have sufficient time resources. It is because we pay much attention to their work comfort. We know perfectly well that it is a good idea to organize their working time to be as efficient and effective as possible. This approach influences directly the effects of our projects. Only then we can be sure that our work will be positively evaluated.

Grow fast with high quality

That’s the motto that guides us in Codest. From the very beginning of our activity on the IT market, we have been developing dynamically, cooperating in the meantime with companies from various industries. From startups to large corporations, we want to constantly develop and be proud of successive projects that are a success. And at this point I would like to emphasize once again that the development would not be possible, if it were not for the high quality of work that is always a priority.

Codest is characterized by an individualized approach to each client who can be sure that when we carry out a project we do this with an utmost care. You can stay assured that this approach in Codest will never change.

How did Codest push Yieldbird to Deloitte List? (interview) :)

Once upon a time, there was a market without any AdX Optimization. Then a Yieldbird appeared and changed the reality of many publishers. How did it happen? We talked with Grzegorz Kubrakiewicz, Head of Technology at Yieldbird, who explains, how the cooperation with Codest has made it possible to be listed 16th in Deloitte ‘Technology Fast 50 Central Europe‘.

How was this whole idea born?

– Grzegorz Kubrakiewicz: It all began with Adtaily, which allowed small advertisers like hairdressers or hotels to place their ads on larger portals on regional Gazeta.pl sites. The Adtaily ad network was working with them. In the meantime, Marcin Ekiert and Piotrek Niedziela, inspired by Fredrik, started playing from the publisher’s side with AdX settings and noticed that in this way they were able to make more money with them. It was also related to the fact that all the money on the market in programmatic come from advertisers.

The whole programmatic focused then on the source of money from the buyers’ side, the market was tight, the competition was large. Based on gained knowledge, we created Yield Optimization and for several years we were becoming more and more experienced on many markets.

The next step was an attempt to write a software which will automate and improve all these concepts in two ways: either by automation and increasing the scale, or by using more complex algorithms that will be better than a human.

How did the implementation process work?

It took a bit of time to find a way on how to automate it, get to know the process, the way it works, invent some ways for it and how to tell developers from Codest about it, so that they could produce a tool that creates added value. And then it went like a snowball effect, it spread, we had more and more ideas what to optimize.

Later on we made a whole class of products, i.e. a wrapper which really automated processes such as creating setups for publishers. Setups are constructions that help these publishers increase profits by increasing demand, it required the publisher to install javascript codes, integrate with the site. It was quite complicated, mainly due to the Javascript code which has to be integrated with a website, and not every publisher has their own development resources. A swell as both the language and cultural barrier with the publishers could be quite an obstacle. Therefore, it was clear that we needed Codest to create an easy and user friendly product.

How did the market welcome Yieldbird?

– The publishers’ market, the supplier of advertising space, was quite empty, there were no products dedicated to these publishers. So the idea of optimizing the advertising space worked. The next stage was the idea for a service that will help publishers earn more from the advertising space and exert more pressure on advertisers.

Some welcomed us really warmly, as they really wanted to make more money, but some were very suspicious, or we could not explain them what it all was about. The barrier of understanding is quite large, because it is not an easy or cheap product. Each publisher is in a different situation and a different setup, that’s why our products are cut to measure and grow together with our publishers.