How to Start a Software Development Project?

Starting a software development project might raise many questions. No matter if it’s a web development or mobile development, you have to know what to expect. Here’s a short summary of steps needed to kick off a project at Sunscrapers.

The process will differ in some aspects, from case to case. That’s because we approach every project individually. Over the years, we’ve learnt that software development is far too complex to tar everyone with the same brush. What’s most important is the execution and decision making in a given business context. Market landscape, leadership, resources – all those factors  have an impact on the ultimate success of an application. We know that this context is inevitably different for everyone. That’s why we must approach those individual circumstances in – you guessed it – the individual way.

How do we start then?

1. An introductory call

We set up a 15-30min Skype (or Hangouts) video call to get to know each other. This is the moment to talk about your vision, goals, requirements, resources and constraints. We will also tell you more about Sunscrapers and our software development services.

The goal of the call is to give us enough input to determine:

  • whether we’re the right partner when it comes to our expertise and your needs – we’ll be honest if for any reason (e.g. technology mismatch) we’ll not be able to guarantee the top quality service,
  • how we could help – what service(s) and competences we think are needed, what engagement model would work best, what we can propose,
  • what next steps would make most sense.

We care about your time and needs, that’s why we won’t discuss functional aspects of the application during this call. Without determining the fit first it will probably a little bit too early to do that.

2. Project proposal

Based on your individual circumstances as well as your progress up to date we’ll propose the best way to tackle the software development project. Essentially there are three entry points for collaboration:

  1. Product discovery workshop – aimed for those who just have an initial idea of what should be accomplished, don’t know much else and need our help in clarifying the business concept, it’s assumptions and feasibility. 
  2. Scoping session – most of projects will start with this step. It’s goal is to take all your input (brief, list of functionalities / requirements, mockups – everything or anything you have), analyse it, follow up with Q&A sessions (that’s where we discuss functional requirements in details) and then start our own internal process aimed at putting together a solid strategy for product development in a formal project proposal document. 
  3. Code audit – if we’re taking the project over from a different team, we will want to start with reviewing the existing codebase to get an opinion about it’s current state. Then, if the project backlog is well defined we may jump straight to development, or otherwise revert to the scoping session. 

3. Agreement

Once we’re mutually happy with the project proposal, we will move on to sort out the formalities needed to kick off the project.

4. Onboarding

Alright, all set! Our project manager will now take you through our client onboarding so that you understand how our collaboration will look like in detail. We’ll tell you about the tools, working process, roles and responsibilities to make sure we all make the most of our time together.

The whole process is designed to bring as much value to our prospects as possible. Our existing clients happily admit they’ve learnt a lot during our initial conversations! Even if we’ll not be able to help, we’ll always look for genuine ways to help, guide or recommend other solutions/providers. That’s simply the way we are.

If you’d like to see the process in practise and learn something on the way – do get in touch to check if we’ll be able to help you with your project.

 

Cooperation with a Remote Team: Recipe for Success?

Cooperation with a remote team from the other side of the world might seem hard. But everything is possible with some preparation around a work routine. Why we believe it’s achievable? Because we’ve been working successfully with many companies from USA or UK for years. Some our clients shared their reviews in Clutch, mentioning our extraordinary skills in remote cooperation. Would you like to know our recipe for success?

Timezones

Our clients are based in different countries – USA, UK, Netherlands… This means coping with timezones. One hour time difference between Poland and UK is not an issue at all. What can be tricky is the difference between Central European Time and Pacific Time. 8-9 hours might seem like an insurmountable obstacle! At Sunscrapers we’ve successfully managed all difficulties. We have a semi-flexible working hours policy and our team members have an autonomy on their work hours. This means that catching up with a client from the West Coast is easy as a pie. 9AM in Pacific Time means 6PM in Poland. Someone from Poland can sleep a little bit longer and start their work later, which is an excellent solution for night owls!

Process

Proper planning is the most important thing at the beginning of cooperation. We determine a procedure that fits both us and client. Usually, every two weeks we have a sprint planning meeting, where highest priority features are discussed and further plans are made. In most cases, we incorporate daily scrums in our routine, especially if close cooperation is needed. Daily scrums are everyday meetings, where each team member tells more about yesterday’s tasks and tasks for that day. They are particularly important in a dedicated team model, which we discuss more in our previous post: Working Models in Software Development.

What makes our regular meetings better are… videoconferences. During a videoconference we can see our facial expressions and body language. It leads to easier, faster and more productive cooperation. Not to mention that all team members feel more connected to the project and each other.

Sometimes we meet face-to-face with our clients – in our or client’s offices. It’s not essential for project’s success, but it’s definitely a nice addition that can improve our cooperation.

Tools

Beside regular meetings and videoconferences, adequate tools are also really important in a cooperation with a remote team. Project management tools give us the possibility to be up to date with a current work status. Trello, Pivotal Tracker and Jira are examples of project management tools. At Sunscrapers, we always make sure to update our work status as soon as possible. Thanks to that everything is transparent and our communication with a client is easier and simpler.

Other useful tools for fast information exchange are instant messengers. We chose to use Slack for in-house communication and remote cooperation. Slack is a really helpful app, which allows us to answer all urgent questions immediately. We always create a channel dedicated for the the whole project team (including our clients). That’s why, regardless of distance, all members are able to participate in an instant communication if there is a need to.

Emails are complementing project management tools and instant messengers. They are usually used to send longer reports, meetings summaries or research information.

All those tools are relevant to build efficient and productive communication without barriers. We are trying our best to react as quickly as possible. It’s important especially in the beginning, when we are building trust based cooperation with our client.

Discipline & Personal Development

Some developers, despite their dedication to work, can’t maintain a discipline. Our established processes and tools are not enough for them to work productively with a remote team. That’s why we took some lessons from our past experience.

We pay bigger attention to recruitment processes. We check if our candidates have any previous experience with remote cooperation. Motivation for remote work preference and communication skills have big influence on our decisions. Not to mention that proficient knowledge of English is a must.

What is also a good indicator of employee’s attitude is the trial period. We look closely at our cooperation with new developers to see if they are able to work remotely. This is the reason why we prefer our junior developers to work from our Warsaw office until they are promoted to regular positions. They can also get help from more experienced colleagues.

At Sunscrapers we emphasize the importance of personal development. Our team members have many possibilities of improving their communication skills. They can take part in trainings and presentations, where we share our experience in remote cooperation. Everyone can learn how to effectively communicate, which makes work easier.

 

This is our simple recipe for a remote cooperation. Distance is not an obstacle, especially when we take all possible measures to minimise potential drawbacks. We are successfully handling all our projects, even though we are not working in client’s offices. If you would like to see some examples, check out our case studies or contact us!

Working Models in Software Development

There are different working models in software development. Differences between them might seem subtle, but actually they vary in terms of price, attitude and added value. Think about what you need and choose the best one for your company with our comprehensive guide.

Team leasing, body leasing or body shopping

Team leasing, which is also called body leasing or body shopping, is form of outsourcing conducted by a software company. Software company is an intermediary between client and developers. Such firm is dynamically looking for developers to meet specific project’s requirements, but it doesn’t lead the programming itself. Software company arranges two job interviews. First one verifies candidate’s soft skills and is conducted by a software company. Second one is a technical interview carried out by the client. Signing a contract between software company and developer happens only after client’s approval. Then, a developer is passed on to exclusively work for a chosen client, usually in client’s office.

What’s interesting is that an intermediary software company is an employer of a developer. That is why it is also responsible for administration and payroll of this employee. Salary, leave – all is handled by a software company. Usually a software company operates on a commission basis.

Pros

Body leasing is probably the fastest option, which makes it a great advantage for big companies. A software company usually employs a lot of recruitment specialists, who can easily and rapidly choose a bunch of interested candidates. And since it has the access to so many developers, it is also able to move team members between different clients and projects quite easily. What’s also important is that there is a lot of companies that do such intermediary services, so their prices should be rather attractive.

Cons

Choosing working models like team or body leasing is only profitable when the client’s project is big enough. Huge companies need tremendous number of developers and they need them fast. This may be associated with the considerable threat – hiring low quality employees. The biggest issue here is the speed of recruitment process itself. It is so rapid, that negotiations with developers are mostly based on giving them higher salaries, not checking their skills. Software companies don’t conduct technical interviews, which doesn’t help either. Another problem with body leasing is a matter of an identification with a company. Employees don’t feel connected to anyone. They don’t have all in-house benefits and very often they don’t identify themselves as a team members, which can be an issue with building a strong, devoted team.

Will team leasing work for me?

Team leasing is a good option if your company is under the pressure of time and cares more about the amount of developers and less about their quality. If flexibility in increasing and decreasing your team’s members is extremely important to you, you should consider team leasing. Also, if your company works on difficult projects and keeping employees in-house is a struggle – body leasing might be the way to go.

 

Team augmentation and dedicated team

Team augmentation and dedicated team working models are based on developers that are working full time for a client, but are hired by a remote software shop that specialises in nearshoring or offshoring solutions.

Team augmentation helps with insufficient manpower in a client’s company. Tech leadership and project management is usually on the client’s side. Software shop is providing know how and experience gained from other projects and encouraging developers to demonstrate proactive attitude.

Dedicated team, on the other hand, is about setting up a more autonomous group of developers. Tech leadership and project management are on a software shop’s side.

In both of these models, software shop is taking care of all employee’s benefits, like office space, hardware, leaves, worktools, but also professional development, wellbeing and entertainment. Developers are usually more committed to the company, because they are working in an environment conducive to their progress.

Developers can be either recruited for a specified project, like in team leasing, or chosen from the internal resources of a company. We believe that there is a better chance to access skilled and proven experts in software development with the second option. That’s why at Sunscrapers we have our own, independent standards of the recruitment process, so we can hire the most qualified, yet versatile developers.

Pros

Software development company that offers team augmentation and dedicated teams, usually provides added value to its services based on its past experiences and gathered know how. When it comes to price, dedicated team or team augmentation are almost always cheaper than in-house recruitment. While the initial cost may seem comparable in relation to a salary of a local, in-house employee, web development company pays for workplace, equipment, benefits or administration. It also cares for employees’ development and entertainment, making them more productive and harmonious. All of this is possible while maintaining flexibility in the recruitment process.

Cons

What can be a hurdle with both team augmentation and dedicated team is remote cooperation. Communication or a project management will require some extra effort. Another problem is difficulty in carrying out a project that requires a very broad range of technologies. Software shops usually specialise in particular technologies in contrary to big recruitment companies. Software shops are experts in specific areas, for example Python development or mobile apps production.

When it’s a good option?

Team augmentation and dedicated team models are perfect for medium and long-term projects. If you need committed developers to work closely on your projects and value for money is an important factor – it might be the best solution for you.

 

Project

With project based cooperation you set a goal to achieve in a specified time and budget and a software shop handles the delivery. This working model is a great decision when you need a web development shop to comprehensively take care of your standalone project. When you know what you want, you can assign everything to a software shop with multiple competences. Such projects are usually completely independent from your daily operations. Cooperation costs are based on fixed fee or time and material – we’ve mentioned differences between them in one of our previous posts. Are you doomed to fail your IT project? Hourly rate vs. fixed price discussion

Pros

Software shop provides added value to the project through its experience. Thank to previous projects and ability to upskill, web development company is able to deliver a requested solution. Software shop takes care of everything. It offers not only on-demand availability, but also access to a range of specialties: design, web/mobile development or consulting. All worries are removed from client’s shoulders with no obligation of long-term cooperation.

Cons

The major drawback of this working model is its price. Usually, it’s higher than other solutions, but there is a reason for that. Developers may be assigned to a project only for a short, irregular periods of time. And since project is held completely by a software shop, it generates more costs. Software shop has to engage more manpower without long-term cooperation, which might be pricey.

Is project model an option for me?

Project based model works best with short and medium-term ventures. It’s a good option if you would like to work with a partner with broad competences and you need flexibility in choosing them. Also if you are looking for an exact specialisation you can choose a software shop basing on its know-how, quality of work and relevant experience. Finally, project model is a great solution when you don’t have your own IT competences and outsourcing is the only option.

Considering your true needs is extremely important while choosing the best working model for your company. If you have any questions, leave a comment below. If you need help in choosing the right working model for your business – contact us!

Sunscrapers in Top Web & Software Developers in Poland by Clutch

We thoroughly check opinions about a product before we make a purchase. It is pretty obvious right? The same goes with looking for a reliable web development company. We know how important it is to research information before cooperation starts. And at this point there is a rescue for all companies looking for software providers – Clutch. Clutch is a B2B market research firm that helps to find partners for one-off project or a long-term relationship. It uses an innovative research process that melds a traditional research and newer consumer review services.

We were really thrilled to hear that we were showcased in their recently updated listing of Top Polish Web & Software Developers! We stood out from almost 140 companies with a thirteenth place.

Leaders Matrix

Leaders Matrix consists of 15th best Polish companies that are able to deliver. We feel that it is just the beginning of changing the image of Polish developers in the world!

What are our biggest advantages? Our clients mentioned our engagement in offshoring cooperation, which made any communication barriers or time zone differences irrelevant. Also our superior English skills and uncompromising responsiveness were indicated as our strong points. What is more, our our knowledge and passion for Python was much appreciated in our client’s reviews and we are more than happy to read that!

Highlight from our client’s review.

Our startup client wrote that “For a company the size of Sunscrapers, it’s unique that they try to keep relationships on a personal level. They invest in people and find quality programmers who don’t only care about being paid a lot. We are glad we found Sunscrapers as a partner.”

Big thanks everyone!

We feel grateful for being acknowledged by Clutch. Thanks to the support from our clients, we are able to solve their problems with technology. Big thanks to our team as well. We are really proud of our developers: keep up the good work!

If you would like to read more reviews, check out our Clutch. Feel free to contact us if you have any questions!

Looking for developers? These are your best options!

There is a moment in a company life where existing team of developers is great and successful but there are not enough hands to work on a product. At this point, in-house recruitment starts to be a nightmare and extra support is needed – favourably as soon as possible. What can you do if you find yourself in this position? There are few options available and we will shortly describe you their pros and cons.

Recruitment agency

First option is the recruitment agency that can be the additional support for in-house recruitment. Although the process of hiring can still take more than a month, it’s probably, still, the fastest option of getting help. The additional advantage is knowing all the associated costs upfront (agencies are transparent with their pricing) which can help in predicting the necessary budget. What’s more, many recruitment agencies work in a “success fee” mode which means that you only pay for the staffed position – that decreases the risk of spending money without hiring anyone.

On the other hand, the remuneration of the agency can be quite high. It depends on a country, but usually a commision that varies around 10-20% of candidate’s annual salary is a standard. You also need to remember that the agency is helpful when it comes to preliminary selection of candidates but after that their job is over. Conducting technical interviews and final responsibility for making the best choice is left to you.

Why cooperate with the recruitment agency?

HR recruitment agency might be the best option when you’re in a desperate need of increasing your recruitment pipeline fast and your budget is quite big. Also, when you’re looking for someone that can join you directly in your office.

Freelancer

Another option is hiring a freelancer that can join your team for a short period of time. There are many ways to find a perfect contractor – you can try networking or searching portals such as toptal.com or upwork.com that are collecting experienced freelancers.
The recruitment process of a contractor can be faster than with the in-house recruitment. Also, existing databases of candidates, make checking their backgrounds easier. With in-house recruitment it’s more difficult – every time you have to ask for references from past employers. What is more, freelancers usually have lots of experience and different sets of skills because they change projects quite often.

There are some major cons of hiring freelancers though. Their availability is a big issue – they may work on few projects at the same time or even disappear when they find a full-time job elsewhere. It is also your responsibility to manage such person and do check-ups. You need to be sure that a freelancer is in constant connection with the team and knows what to do. Also, costs of hiring a local contractor are quite high. And yes, remote contractor can be cheaper but disadvantages we’ve mentioned above can grow to really serious issues. Last, but not least – a freelancer’s loyalty is rather low. When the project comes to an end a freelancer disappears from the team together with all meticulously gathered knowledge and know-how. With the next contractor you have to start the onboarding and training again.

So when it’s good to hire a freelancer?

Hiring a freelancer might be a good option when you need support for a short period of time – few weeks up to few months. It’s also easier when your project’s tasks are fully described and new developers don’t need a long training before they become productive.

Local software shop

Cooperation with a local software shop is a great option because of the stability of such partnership. Those companies hire many employees and that lets them be elastic with regards to developers assigned to your project. Usually the quality of their work is high because of their competences and track record. Also, some firms are like one stop shops – they have extra competences, so you can carry out your project only with them. Strategic planning? Market research? Design and UX? They can help you with almost anything you need.

But the biggest and usually the most disqualifying issue with the local software shop is the price of the cooperation. It’s the most expensive option from all mentioned above – agencies in the big US cities can charge even $200 per hour!

OK, when it’s a good option?

If you have a standalone project that can be developed in parallel to your current work (such as systems maintenance, bugs repairs, customer service requests), local software shop might be the way to go. It’s also a good option if you would like to work with a partner with broad competences, not only software development. Finally, this option will also work if you have an IT department within your company (because you don’t need it!) and you can implement a project through external partners.

Remote software shop

Might be the best option if you are looking for a reliable, solid and experienced partner but your budget is not limitless. In addition to the advantages listed in a previous paragraph, you have the access to truly talented people from different parts of the world. There is a huge competition for the best talents on a local market, that’s why extending your search area may help. With a remote dev shop, you have a great opportunity to build a long term cooperation – lower costs allow to set up a sustainable arrangement without the need to worry about optimizing costs in future. At Sunscrapers, for example, we can set up dedicated teams for our clients which, at the end of a day, is very similar to opening up an actual remote office.

The disadvantage of this solution might be the lengthy process of singling out the best software shop from many available options. It’s really important to conduct the process carefully and comprehensively, because there are many companies of questionable quality that are better to be avoided. That’s why you have to be 100% sure that communication with the chosen partner and his workflow will not cause problems. Also, you need to remember that distance might make things more difficult – with remote work everyone has to put in a little bit more effort.

When to cooperate with the remote software shop?

It’s simple – if you’re looking for a long term solution while keeping your budget on a reasonable level. And when you are not afraid of trying out a remote partnership.

You know that you need help with extending your team of developers and you know what options you have. Now, you should think about your true needs. Do you need support in the short or long term? Does your project require close cooperation or is it standalone? What’s most important to you – time, budget, same location? Answer those questions and if you would like to know more about us and our experience, check out our website www.sunscrapers.com or contact us!

Python – our language of choice

image
Choosing the right programming language for your business 

Regardless of whether a large company is introducing a new IT project or a startup is building its first MVP, choosing software engineers is one of the most important decisions any team will make. This decision will determine a project’s success or failure. Today I explain the reasons why we believe Python is the best language of choice for us.

There are many programming languages to choose from, as well as there isn’t just one feature to think about during this selection. Each language has different characteristics, communities, ecosystems and support to consider. In this article we want to show you how to analyze the relevant factors when selecting a programming language. What’s more, we explain why our language of choice is Python.

Let’s think about two kind of circumstances. If it’s for a personal project, you may choose a language you know. However, if you have your own company or want to start one, there are more factors to consider before choosing a perfect technology to solve your business problems. A choice of technology determines a second step which is finding the best tech partner.

Which aspects are relevant during a selection process of a programming language? To answer the question you should concentrate on two aspects related to the programming stack. The first one is the popularity of a language. Make sure that there are many well qualified developers on your market who are ready to work at your company. The second one is the problem that you want to solve using a particular technology – check which technology was used in similar business problems and if there are libraries supporting it.

 

Our language of choice is Python

This post will explain to you why Sunscrapers uses Python and will describe the benefits which our clients get due to that choice. At Sunscrapers, our backend language of choice has been Python for 5+ years.

Our previous post answers to the question: what do we love Python for? There are three main reasons:

  • Python is developed under an open source license;
  • its community is open and mature;
  • its foundations are easy to learn for beginners.

Now we want to go further and explain you why Python is our language of choice.

 

Let’s take a look at the most relevant aspects of Python

We should start with a brief presentation of Python’s definition and its usage. Python is high-level, general-purpose, interpreted, dynamic programming language. Its design philosophy emphasizes code readability and its syntax allows programmers to express concepts in fewer lines of code than possible in other languages such as C++ or Java.

We can use Python in these fields:

  • web development
  • scientific programming
  • big data and machine learning
  • computer graphics
  • scripting

Python responds to the needs of our customers and helps us ensure the best quality of support. Thanks to its fast implementation we can introduce changes in our clients’ projects without additional waste of time. The next valuable aspect is readable code – we can easily involve new person to the development process when our client wants to upbuild his project. Python is good for web development  – it fits nicely with front-end frameworks like Angular.js. It can scale to solve complex problems. Also, it guarantees an intensive focus on the problem because of a simple and elegant syntax. We can easily build MVP in Python to test our client’s business idea.

There are other important benefits that boost the effectiveness of working in Python. Most of all, Python is constantly updated and thanks to that the projects written in it will not stack in an old technology. We should also appreciate its active community which organizes valuable events, promotes Python and is created by many talented developers. The last one is a spectacular amount of open source libraries which gives us additional possibilities of building-up our projects.

As you may have noticed, Python gives us a wide range of possibilities to support our clients through the use of technology. We want to go deeper into this topic and that’s why future posts in this section will compare Python to other languages. Stay tuned!