Practice Archives - Wolf https://www.wolf-software.com/category/practice/ Software Development Tue, 07 Mar 2023 11:31:46 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.1 https://www.wolf-software.com/wp-content/uploads/2021/11/cropped-Software-Development-32x32.png Practice Archives - Wolf https://www.wolf-software.com/category/practice/ 32 32 The History of React: From its Inception to Present Day https://www.wolf-software.com/the-history-of-react-from-its-inception-to-present-day/ Tue, 07 Mar 2023 11:31:44 +0000 https://www.wolf-software.com/?p=1790 React, also known as ReactJS, is a JavaScript library that was developed by Facebook in 2011. Since then, it has become one of the most popular and widely used frameworks for building user interfaces (UIs) for web applications. In this article, we will delve into the history of React, its evolution, and its impact on […]

The post The History of React: From its Inception to Present Day appeared first on Wolf.

]]>
React, also known as ReactJS, is a JavaScript library that was developed by Facebook in 2011. Since then, it has become one of the most popular and widely used frameworks for building user interfaces (UIs) for web applications. In this article, we will delve into the history of React, its evolution, and its impact on the web development industry.

Inception of React

In 2011, Facebook was facing a challenge. The company needed to develop a new newsfeed feature for its website that would be able to handle a large amount of data and update in real-time. The existing technologies were not suitable for this task, so the team at Facebook started working on a new solution.

The team was led by Jordan Walke, a software engineer at Facebook, who created a prototype of a new library called “FaxJS”. The library was designed to render UIs on the server-side and provide real-time updates to the client-side without reloading the page.

FaxJS was later renamed to “React” and was open-sourced by Facebook in 2013. It quickly gained popularity among developers due to its simplicity, flexibility, and performance.

Evolution of React

React’s initial release was focused on server-side rendering, but the framework evolved over time to become a comprehensive UI library for building web applications.

In 2015, React introduced a new concept called “React Native,” which enabled developers to build mobile applications using the same principles and syntax as React. This was a major breakthrough for developers, as it allowed them to build high-performance mobile applications with native-like performance.

React also introduced “JSX,” a syntax extension that allows developers to write HTML-like code inside JavaScript. This made it easier to create UI components and increased code readability.

In 2016, Facebook released “React Fiber,” a new version of React’s core algorithm that significantly improved the library’s performance and made it more suitable for building complex applications. React Fiber introduced a new concept called “Fiber,” which is a lightweight thread that can be paused, resumed, and prioritized by the browser’s rendering engine. This enabled React to handle complex UIs more efficiently and provide a smoother user experience.

Impact of React

React has had a significant impact on the web development industry since its inception. Here are a few key ways in which React has influenced the industry:

Declarative programming: React’s declarative programming approach has made it easier for developers to reason about and maintain their code. React’s component-based architecture enables developers to create modular UI components that can be reused across multiple applications.

Improved performance: React’s efficient rendering algorithm and use of virtual DOM has significantly improved the performance of web applications. React’s focus on performance has encouraged other frameworks and libraries to adopt similar approaches.

Increased developer productivity: React’s simple syntax, modular architecture, and extensive documentation have made it easier for developers to learn and use the library. This has resulted in increased developer productivity and reduced development time.

Mobile app development: React Native has made it easier for developers to build high-performance mobile applications with a single codebase. This has significantly reduced development time and costs for mobile app development.

Conclusion

React has come a long way since its inception in 2011. It has evolved from a server-side rendering library to a comprehensive UI library for building web applications and mobile apps. Its focus on performance, simplicity, and modularity has made it one of the most popular and widely used frameworks in the web development industry.

As we move forward, it will be interesting to see how React continues to evolve and adapt to new technologies and trends in the web development industry. But one thing is clear: React has left a lasting impact on the industry, and its influence will continue to shape the way we build web applications and mobile apps for years to come.

One of the key strengths of React is its ability to simplify complex UIs by breaking them down into smaller, reusable components. This modularity makes it easier to build and maintain large-scale applications, as developers can focus on creating and testing individual components rather than having to deal with the entire application as a monolithic structure.

Another key feature of React is its use of a virtual DOM, which enables it to render changes to the UI more efficiently. Instead of directly manipulating the browser’s DOM, React creates a lightweight representation of the UI called a virtual DOM. When changes are made to the UI, React compares the virtual DOM to the actual DOM and only updates the parts that have changed. This results in faster and more efficient rendering, especially for applications with complex and dynamic UIs.

React’s impact on the web development industry has also led to the emergence of a vibrant ecosystem of tools and libraries that support and enhance React development. This includes popular tools like Redux for managing application state, React Router for handling routing and navigation, and Styled Components for styling React components.

In addition to its impact on web development, React has also influenced the broader tech industry in other ways. For example, the concept of a virtual DOM has inspired other frameworks and libraries to adopt similar approaches, including Vue.js and Angular.

Overall, the history of React is a testament to the power of innovation and collaboration in technology. What began as a solution to a specific problem faced by Facebook has grown into a versatile and widely used framework that has had a significant impact on the web development industry. As we look to the future, it will be exciting to see how React continues to evolve and adapt to new challenges and opportunities.

The post The History of React: From its Inception to Present Day appeared first on Wolf.

]]>
When and who needs search engine optimization (SEO)? https://www.wolf-software.com/when-and-who-needs-search-engine-optimization-seo/ Thu, 05 Aug 2021 21:51:25 +0000 https://www.wolf-software.com/?p=1662 Search engine optimization or SEO (search engine optimization) is a continuous work. Even if you take the first positions in search engines, you can not stop: without updating the content, the site will lose position.

The post When and who needs search engine optimization (SEO)? appeared first on Wolf.

]]>
Search engine optimization or SEO (search engine optimization) is a continuous work. Even if you take the first positions in search engines, you can not stop: without updating the content, the site will lose position. SEO makes sense if you’re an expert in your business and are building a serious business “for years. We began to optimize the site 10 years ago and continue to this day. Below are the actions required for the search engine promotion of your resource.

  1. Analyze

It is necessary to analyze the network and find out the industry standards and the position of the site in relation to competitors. For example, information technology is a highly competitive sphere, there are several hundred software companies in the Russian Internet. And there are no more than forty gold mining companies in Russia. We choose 5-10 resources on similar topics (the more the better), evaluate their structure, design quality, and content, and look at the best ones.
Next, we analyze the number and geography of visitors, as well as the reference base. If our site is being referenced by “toxic” resources, it may be easier to create a new site that is not spoiled by low-quality links. On the contrary, links from popular profile sites improve ranking.

  1. Choosing a promotion method

Depending on the activity and goals of the company choose: search engine optimization or contextual advertising.
Contextual advertising (Google AdWords) guarantees the first positions for the chosen search queries. Each user’s click on an ad is paid for and the price per click is set by the advertiser. Several companies are placed in Direct for one keyword phrase, the set prices are taken into account for the distribution of display places: the one who pays more is the first.
We recommend contextual advertising for seasonal sales, short campaigns and special offers. In the output the site is marked as “advertising”, and the ads are read by users who are ready to buy immediately. Direct works quickly, is expensive and does not require any special site adjustments.
Search Engine Optimization – a more complex promotion for businesses aimed at long-term existence. The first sites in the output without the label “advertising” users trust more. The resource is visited not only for the sake of purchase, but also for information, because for SEO you need valuable professional content.
Search engines suggest the page to users, and if the latter stay on it, the article rises in the ranking. Meaningless and uninteresting texts will not attract traffic. For example, our article “Software Warranty and Technical Support” has been occupying the first lines in search results for many years: users read it regularly.
It is difficult to create high-quality content, and you have to post new texts regularly. Unupdated sites rank poorly.

Setting up site profiles in search engines.

When registering services will show a number of errors and recommendations for correction, which is important to implement.

  1. Check the server location and language versions of the site

The server on which the site is located – it’s hosting, which is tied to the IP address of the data center. Search engines determine where the server is located and show the site to a geographically relevant audience. Therefore, the server must be located in a city with a target audience. If we are interested in several cities, you need to cache the site at different IP addresses in each city.
If you put several language versions on the same domain, it does not mean that the site will be seen by foreigners. Each language is a separate SEO project. You have to buy different domains and put the appropriate language on each. Then the site will start to rank in the right country. If the Polish market is of interest, the server should be Polish, the address and phone number should be Polish, and links should be from Polish sites.
The search engine consists of search clusters that work for a particular country. If the company works for Americans, the server must be in the United States. For example, only 15% of the visitors to the English version of the site were Americans; when we moved the server to San Francisco, visitors from the US accounted for 60% of the traffic.
Then there is segmentation by city. If we work for the whole country, the server must be located either in the geometrical center or in the capital.

The post When and who needs search engine optimization (SEO)? appeared first on Wolf.

]]>
How to create a software product? https://www.wolf-software.com/how-to-create-a-software-product/ Mon, 26 Jul 2021 22:06:29 +0000 https://www.wolf-software.com/?p=1674 How to create a software product? You need to select the performers.

The post How to create a software product? appeared first on Wolf.

]]>
How to create a software product? You need to select the performers. There are four options for this task.

Hire programmers on staff

01 Team You need to be able to hire the “right” programmers. In fact, 80% of the work is done by 20% of the staff. If you don’t find those who do and can set tasks for the rest, the budget will be wasted.
The motivation of programmers is also quite a serious task. This category of employees is very specific, and the ability to motivate is a special talent.
03 Disk in a box and case It is necessary to protect your product from theft. So that it does not happen that for your money will develop and transfer information to competitors or open a rival firm themselves.

If the project is small, and its development will take up to six months, it makes no sense to hire programmers. The employer has to give the employee certain social guarantees, pay taxes, pay for sick leave, vacations, etc. This is irrational.

Find freelancers.

In this case, first of all, you are deprived of all the burden of the employer. Secondly, this is the cheapest way: freelance programmers cost less, because they usually have no experience working on serious projects. But they can easily complete a typical template project. Freelancers who work well usually have several customers and several projects at the same time. Therefore, 95% of those who complete the task are likely to blow the deadline. There are often unscrupulous freelancers. Some like to supplement their portfolio with other people’s work. Others take an advance payment and disappear. On the exchanges a lot of newcomers who are little of themselves, but know how to advertise. And even if you manage to find decent professionals, they are unlikely to work on your project 20 hours a week. The probability that the project will be delivered on time – about 5%.

You can save on software development in two cases.

If the project is small (for example, on man-week labor, then it will be completed in about three to four weeks).
If the implementation of the task is not critical.

If the project will require five man-years, calculate what a mistake in selecting the performer can cost. Suppose you hire five programmers, and only a year later, when the result is supposed to be delivered, it will be found out that the task was assigned to unskilled people.
For large projects, freelancers with no experience in multi-year projects are not suitable. Their prerogative is small one-time tasks.

Freelance team

Essentially the same as hiring multiple freelancers. If there is no legal entity, no management, and no backbone in the team, at the first force majeure the team falls apart. Co-working teams tend to be just as unstable, unmanageable, and unpredictable in their behavior as solo performers.
In order to keep the organization from serious failures, you need a highly paid, experienced manager who can solve the problems that arise without harming the customer. Often “free artists” neglect the managerial component. And in a team of solid performers, there is no one to analyze tasks, change people, find new ones, motivate them, and bring development to completion when the slightest difficulty arises.

Professional organizations

There are many software companies and they have different degrees of reliability. When considering them, you should pay attention to the following aspects.
01 How the project management function is implemented.
02 The substitutability of employees.
03 The company’s reputation, customer feedback.
04 Developed products similar to yours.
05 Ready-made developments in the form of knowledge or, possibly, source code.
06 Availability of experience in implementing similar projects.
07 Organizational points: availability of ready legal documentation, professional contract, speed of interaction, etc.

When negotiating with a company, it is not necessary to evaluate the qualifications of individual employees. First, programmers exchange knowledge in the course of their work. Secondly, it is possible to form a team with people of a certain focus: one, for example, to develop video surveillance, another – to create a payment system.
A specialized company is the most expensive, but the most reliable solution. The price is determined by the presence of additional overheads and a permanent team of professionals. The company’s profitability and longevity are a testament to sound management and the repeated fulfillment of commitments made in terms of cost and timing.
This option is for those who need serious software products, who create high-loaded unique projects and complex services from scratch. In order not to make a mistake, choose either a specialized organization, or a multidisciplinary one, but necessarily one that has experience in creating similar products.

The post How to create a software product? appeared first on Wolf.

]]>
Mysterious software product development https://www.wolf-software.com/mysterious-software-product-development/ Sat, 22 May 2021 22:03:17 +0000 https://www.wolf-software.com/?p=1671 Legislation for the protection of intellectual property is different. A European software company, as a rule, cannot show the product in its portfolio or even mention the development without the written consent of the customer.

The post Mysterious software product development appeared first on Wolf.

]]>
Legislation for the protection of intellectual property is different. A European software company, as a rule, cannot show the product in its portfolio or even mention the development without the written consent of the customer. The discussion of the project idea itself begins with the conclusion of an NDA (Non-disclosure agreement). This is especially true for startups and greenfield developments.

We are ready to cooperate on such terms, but the cost increases. If the customer pays for complete confidentiality, the increased measures are used to ensure its observance.

Ways to ensure confidentiality

01 Man and tick Only verified specialists with high ratings, who are aware that complete secrecy is a principal condition of cooperation, are involved in the development. Appointed programmers sign a special agreement providing for penalties.
02 Page protected In the case of a leak of information, the managers are obliged to take measures: to conduct an internal investigation, to check the executors.
03 Spy The project management system and the source code repository are isolated from the main resources of the company. Materials are accessible only to the assigned specialists and are not transmitted publicly over the network. Anti-virus and anti-spyware software is installed on employees’ computers, protecting them from information theft.

Compensation for advertising costs

When making up a standard website, the question of privacy does not arise. It makes sense. An extra link to the site is not a nuisance, but on the contrary, will attract additional traffic.

For more serious projects, customers often demand complete confidentiality. It turns out that a software company invests a lot of time, effort, knowledge and labor to create a complex and unique product. Such valuable experience, in theory, should increase sales, because the company often chooses a performer with specific competences. But strict compliance with NDA prevents this and requires additional marketing expenses.

That is why confidentiality costs money: in order to attract new customers you cannot show off your existing expertise. When ordering software development, you need to weigh all the arguments and decide whether absolute secrecy is so important, whether it will be beneficial for both parties.

The post Mysterious software product development appeared first on Wolf.

]]>
Developing Internet applications https://www.wolf-software.com/developing-internet-applications/ Fri, 26 Mar 2021 21:59:49 +0000 https://www.wolf-software.com/?p=1668 It is enough to type "online diagnostics" into the search engine bar to get a long list of developments of Internet applications that are supposed to help the user determine his disease. However, nowhere will you find rave reviews that a particular site has solved a person's problem.

The post Developing Internet applications appeared first on Wolf.

]]>
It is enough to type “online diagnostics” into the search engine bar to get a long list of developments of Internet applications that are supposed to help the user determine his disease. However, nowhere will you find rave reviews that a particular site has solved a person’s problem. Why? Below we’ll look at the main difficulties of trying to create an online diagnostician.

The issue of motivation

From the diagnosticians found online, we can conclude that few developers have sought to solve the user’s real problems. The goal of most such apps is to attract traffic or monetize it. There are also resources developed for the purpose of PR for a particular clinic.
The usefulness of online applications of a medical nature is determined primarily by whether the program has answered the user’s questions: what is wrong with them, which doctor to contact, what tests they will have to undergo and how dangerous the situation is. Suppose, for example, an online diagnostician determined by the localization of a headache that you have twenty-five percent probability of arterial hypertension, and ten percent – migraine without aura. Does that make you feel better? And this is a very real algorithm for one of the best diagnosticians in Runet.
The main problem with online diagnosticians is that the developers very rarely ask what user’s problem their project solves. They are not interested, and hypochondriacs will always provide the portal with traffic. And it does not matter that by clicking on the links, they find only useless toys. After all, only a doctor can adequately diagnose and treat, which means there is no need to try.

At the same time, in order to create something that can be useful, the following questions must be answered:

  • How can the patient be helped before seeing a doctor?
  • How can you help when a doctor’s consultation is unavailable?
  • Why can help not be available?

This information is the starting point to start thinking through the project.

“Simplicity is worse than theft.”

The desire to make an app simple is understandable: the less the user will click and wrinkle his forehead trying to determine, for example, the nature of a rash, the better. This is why the main problem with apps is that they try to diagnose one or two symptoms. A doctor, on the other hand, when making a diagnosis, is working with a set of signs. And the signs themselves, in his mind, have many gradations. There is no such thing as just pain or just a rash. The discharge has a source, a color, a consistency, a smell.

It is impossible to create a really working product by trying to translate an electronic medical reference book into an interactive form. There is no other way to think through a diagnostic algorithm than to enlist the help of a doctor – someone who knows how to do it. And simplicity will have to be sacrificed. It can only be achieved at the interface level.

When does an app help?

Now back to the question of usefulness. Of course, a doctor is indispensable in diagnosing and prescribing treatment. But a person who is sick faces more than just a “how to treat” problem. Before seeing a doctor, the patient needs to relieve the underlying symptoms somehow. And a selection of innocuous, but relieving medications won’t hurt. For example, with joint pain, a tip to use ibuprofen instead of analgin will be appropriate.
First-aid instructions also come in handy, especially when it comes to problems that are not the most common. Emergency aid for heart attacks or strokes is not covered in television programs and is rarely written about in brochures in clinics. Apps also help when a person is in doubt. Should I call an ambulance or can I just sit it out? Which doctor should I make an appointment with? Even such seemingly elementary information as the telephone number of the ambulance is sometimes difficult to find out, depending on the region and mobile operator.
An Internet application that gives maximum answers to the questions of a person who feels ill will be a success. But, as is already clear from all of the above, it will require considerable investment.

Why do it

Initial Internet diagnostics are useful for clinics that attract patients via the Internet. If a visitor receives answers to any questions prior to seeing a specialist, he will be more trusting of those who enlightened him. But private medicine, as a rule, is not ready to allocate the budget required to create a really useful Internet application with a multi-step diagnostic algorithm and professional recommendations.
At the same time, a high-quality Internet application for self-diagnosis will also be quite in demand among ordinary users, because healthy lifestyles and body condition monitoring are becoming a widespread trend.

The post Developing Internet applications appeared first on Wolf.

]]>
How to report bugs correctly https://www.wolf-software.com/how-to-report-bugs-correctly/ Mon, 22 Feb 2021 21:56:49 +0000 https://www.wolf-software.com/?p=1665 In the midst of concentrated activity, programmers get distracted by Skype questions. Sometimes an answer is enough, but sometimes it turns out that there is a bug in a project that needs to be fixed, and we begin to clarify the details, create a task in the bug tracker, agree on deadlines for solutions.

The post How to report bugs correctly appeared first on Wolf.

]]>
In the midst of concentrated activity, programmers get distracted by Skype questions. Sometimes an answer is enough, but sometimes it turns out that there is a bug in a project that needs to be fixed, and we begin to clarify the details, create a task in the bug tracker, agree on deadlines for solutions. And when we return to the interrupted task, we find out that forty minutes have passed. And then the manager asks: “Why did you estimate the task at seven hours, and perform the second day?”

Dear customer! When a problem is detected on a project and you want to report it to the chat quickly, remember the following.
Time in money If you make the point unclear or confused, it takes extra time to figure out the details, which you pay for. In this case, one or more employees are distracted from the ongoing cases.

The illusion of urgency can be created. For example, the developer will try to reproduce the specified defect, without waiting for answers to clarifying questions, and immediately try to fix it, which is good if the problem is critical, bad if it is minor (and there are more important tasks), and very bad if you did not plan to fix it at all.
The opposite situation is also possible: the problem discussed in Skype can stay there. Many employees rightly believe that solving a problem begins with setting the problem in the bug tracker. Skype is only a communication tool where you can quickly discuss an ongoing project. Tasks, comments, and decisions are recorded in bugtracker. Debatable situations are resolved in bugtracker, too. In other words, if you are going to Skype something like “it would be nice to do so…” and then, a week later, become indignant as to why it has not yet been implemented, please do not.
If you don’t start a task in the bug tracker, we will. Then we must make sure that what you say is correct.

What must be done?

So, there is a problem, which must be declared. The first thing you specify when you start the task is the title, when you first look at it, you must know what happened. The headline should answer three questions.

“What?” – What actually happened?

“Where?” – where in the interface do you see the problem?

“When?” – under what circumstances does the problem manifest itself?

Here are examples where the header doesn’t answer any of the above questions.

“Nothing is working again” – it’s not clear what exactly is not working.
“Unclear button” – no comment.
“Login and password” – please don’t have a headline like that.

Examples where the header answers only part of the questions.

“Site’s layout is flying off” – it’s clear that the site has errors with the layout, but it’s not clear what the point is.
“Different text layout” – begs further questions, because it’s still unclear what this is about.
“Dashboard graphics glitch” – something happened on the Dashboard screen, but it’s not clear what to count as a glitch. More questions will arise.
“Not displaying some messages in the Dashboard” – the header can already be considered good. It lacks information about which messages and under what circumstances are not displayed, but finding out takes time, and the error should be reported sooner.
“The first time I can’t switch from My Cameras to the Guest Access tab” – it would be helpful to clarify under what circumstances this happens: the developer may not be able to reproduce the problem.
“Failed to send Issue” – not bad.
“The ability to configure cinemas has disappeared in the administrative area” – a case where an answer to the question “When?” is not required.

Examples of good headlines that answer “What? Where? When?” questions.

“Not all messages delivered as push are displayed in the LC” – it’s immediately clear where to start debugging.
“IE 8 constantly swears at the ad submission form from step 1” – it’s only unclear what is meant by “swears” here, but by opening the ad submission form in IE 8, we can see everything.
“In the filter panel, the price is not “initialized” when the price filter is set” – you can open the code section responsible for the price filter and see what’s wrong there.
“When viewing a recording, the rotation buttons are still available” – there is no point in rotating the camera in video recordings, so they forgot to remove the rotation buttons, we will fix it soon.
“Bypasses the limit on the number of private ads by entering a direct link in the address bar” – everything is clear, we’ll add redirection.

The post How to report bugs correctly appeared first on Wolf.

]]>
Code refactoring https://www.wolf-software.com/code-refactoring/ Sat, 26 Mar 2016 18:13:12 +0000 http://userthemes.com/admania/?p=46 Major repairs or redesigning at least once in your life, probably everyone did. Pipes and wiring wear out, finishes and furnishings become obsolete, the arrangement of rooms ceases to be convenient.

The post Code refactoring appeared first on Wolf.

]]>
Major repairs or redesigning at least once in your life, probably everyone did. Pipes and wiring wear out, finishes and furnishings become obsolete, the arrangement of rooms ceases to be convenient. Refactoring is comparable to complete overhaul and implies redesigning and correcting the code. The inner structure of the program changes, while its behavior remains the same.

Code refactoring is often needed because

  • The first version was made hastily or “as cheaply as possible.”
  • a new version of compiler or libraries appeared;
  • previous programmers may have made architectural mistakes;
  • as you use it, it becomes clear that new features are needed.

Low-quality code is cumbersome and unreadable, storing passwords in cookies, complex URLs, naming variables in different languages.

Refactoring fixes

01 heterogeneous style triangle circle square heterogeneous style naming variables, methods, classes.
02 duplicate code two scripts Duplicate code.
03 long class Long methods and classes.
04 overloaded list Overloaded list of parameters of functions and methods.
05 long blocks scheme Long branching blocks.
06 magic sign Magic values.
07 obscure abbreviation Use of obscure abbreviations.
08 Rigid assumption Rigid coding of assumptions.
09 excessive configuring Excessive configuring.
10 confusing code Confusing code.
11 abstraction levels circle heptagon triangle Excessive number of abstraction levels.
12 dependent class Excessive interdependence of classes on each other.
13 no check crossed out list No check of input data.
14 Overloaded class Overloading classes and components with heterogeneous functionality.
15 generalized code Overgeneralization of code.
16 Variables in fields Storing temporary values in fields.
17 Mediator classes Mediator classes.
18 No class isolation Lack of class isolation.
19 Irrelevant inheritance Irrelevant inheritance of classes.
20 Inheritance Delegation Inheritance instead of delegation.
21 logic outside of classes Logic outside of subject area classes.
22 direct calls Direct calls between far-flung parts of the system.
23 Unused code Unused code.
24 cpu consumption Consumption of the CPU to wait.
25 No parallel cpu Incorrect paralleling of tasks or not using threads.
26 Separate branch Separate code for special cases.
27 Library Self-written code instead of using a library.
28 little commenting Insufficient commenting of code or excessive commenting of obvious sections.

Failure to refactor leads to the fact that any small code interference will cause a succession of errors and corrections. The second unpleasant consequence can be recurring occasional critical errors, which will be very difficult to reproduce, diagnose and debug. Finally, the gradual addition of new features will lead to a buildup of functionality, which in turn will have a negative impact on the program and will cause dissatisfaction among users.

The post Code refactoring appeared first on Wolf.

]]>
Tips for Juniors https://www.wolf-software.com/tips-for-juniors/ Wed, 10 Feb 2016 16:14:23 +0000 http://userthemes.com/admania/?p=11 Becoming a top-notch professional requires work, patience, and time, not only from the junior, but also from the company - the starting point of his career path.

The post Tips for Juniors appeared first on Wolf.

]]>
Becoming a top-notch professional requires work, patience, and time, not only from the junior, but also from the company – the starting point of his career path. We’ve already described the benefits of being a rookie in our article “How much is a trainee’s labor worth?” To become valuable to an employer, you should listen to the advice of experienced colleagues who have been successful. Job seekers, take note!

  • When we publish a job posting, we get a lot of responses. And only one candidate out of twenty-five is able to complete the test assignment. That is, not everyone who wants to be a programmer, eventually becomes a professional. Do you think there is a predisposition to work in this field?

Of course, to be a good developer, as well as a good cook or a good mechanic, is not for everyone. If we talk about coder-specific character traits, the following are required.

01 Head with gears Perseverance, patience and the ability to perform the task, even if it is not solved in a hurry.
02 Systems Approach A systems approach and an engineering mindset. I mean the ability of a person to “soar” over a problem, see it as a whole, and then solve tactical problems. There has to be an overall vision, not like a bedbug on the wallpaper who only sees in front of himself.
03 Clarity of wording Mathematical thinking and clarity of wording. Often juniors do not know how to express their thoughts accurately in words.

  • Is the ability to articulate necessary for communication or does it affect the quality of the code?

A competent professional must be able to communicate with others in the process. A typical disadvantage that I encountered: there is no uniform terminology in the team, it is difficult for colleagues to understand each other.
The task should be viewed through the prism of the customer’s needs, otherwise the result may not satisfy the latter. If the task is formulated unclearly, it is necessary to ask questions and get additional information.
If a person wants to become not just a developer, but a lead, communication skills are very important. But without the basic skills of solving algorithmic problems, you will not get very far.

  • It turns out that professionalism has two components: personal qualities and technical knowledge. What would you advise in order to develop both?

Let’s talk only about people with talent. A person can learn only from someone, it’s impossible to get knowledge only from a book.

  • Are we talking about gaining experience under guidance?

Yes. In any business, you need a teacher from whom you can learn. And what is important is the acceptance of learning and the right attitude: “I need to learn a lot, I want to reach the top of the profession, but now I’m at the beginning of the way,” rather than “I already know everything.

  • That is, to understand your level and have some humility?

Yes. Humility and understanding that while I am inexperienced, I must do what I am told, follow the instructions of someone I respect, even if I think they are not right, not logical. Accordingly, I have to partially take for granted how to write code, how to communicate with the customer. If you are willing to accept knowledge from your older colleagues, then there will be development.
The ability to ask is important. Many people get hung up on a problem, spend an enormous amount of time without asking a senior colleague. On the other hand, it is better to ask questions at the right moment, rather than constantly distracting colleagues. But there are the silent ones who sit for a week, don’t ask anything, and end up reinventing the wheel.

  • Does it also take a certain amount of experience to ask the right question?

Yes, you have to understand that the problem you’re solving is typical. That’s why juniors need supervision.
To summarize about personal qualities. You have to get into the position of the student taking in the knowledge, asking questions, following in the footsteps, adopting the experience. When, let’s say, a project is handed to you, you can pick up the knowledge by looking at the code written before you: how it is designed, what approaches are used, and do it by analogy. Some people start writing their own way, inventing methods, without looking around, but it’s more correct to watch how a professional does it.

  • Is it possible to develop technical skills by taking courses, getting certificates?

I think it’s useful. But more important, in my opinion, is to develop “for yourself”. A person must have a desire to code. At school, at university, you should solve real problems at your level, try different technologies in practice, choose your area of interest.

The post Tips for Juniors appeared first on Wolf.

]]>