Perhaps, someone likes to say not “developer” but programmer, because engineer – it sounds proud! Or not? Fortunately, this article is not about terms. If you don’t like my term, put your own term: “software author”, “software master”… and even “application creator”!
By “software developer,” I mean a person for whom writing quality software is a profession. A person who uses scientific approaches and statistics in his work and considers his occupation something more than just making money.
To become a developer, it is not enough to be able to program.
It is easy to teach anyone how to program. Writing simple programs that work for specific people on specific machines can be done by almost anyone, but no one guarantees that the same programs will work in other conditions.
I like the analogy: everyone can sing in the shower for their own amusement, but you don’t put on tracks with recordings of this singing at a party – you turn to the works of professional musicians.
Do you want another analogy? Please:
- We were taught math and writing at school, but that didn’t make us mathematicians and writers.
- Most people can easily learn to cook, but when it comes to feeding large numbers of people, we hire chefs.
- Nobody calls on a neighbor to build a house from scratch.
The main task of this text is to make it clear that the creation of simple programs is very different from software development.
Transferred to Alconost
Programming in the simplest way is to give the computer instructions to perform some actions with some input data to get some output.
Software development, on the other hand, is the design, writing, testing and support of computer programs to solve problems for multiple users; it is the creation of reliable secure solutions that will withstand the test of time and cope with some unknown tasks lying in an area close to the obvious original tasks.
Software developers thoroughly study the tasks to be solved, fully understand how the solutions they propose work, how these solutions are limited and how they are characterized in terms of data privacy and security.
Solution-oriented approach
Software developers do not consider it their job to simply write programs – they reason from the point of view of meeting the needs and solving the problems.
And this is important because it is not necessary to write a program for every task: in some cases it is enough to use an existing program or to combine several programs.
And by acting proactively, it is sometimes possible to get rid of the need to do this task at all: developing good programs often involves planning to prevent some problems and related tasks in the future.
For complex tasks you have to write several programs. In some cases you need programs that work in parallel, in others they are launched sequentially. Sometimes it is enough to train users to solve a task.
Before writing the code, the developer will ask the following questions:
- What tasks do I try to solve?
- How can I solve a task without programming?
- What can you do to make it easier to write code for solving a task?
Code quality
In quality programs, the code is clear and easy to read, they can be easily expanded, they work well with other software, and their support does not turn into a nightmare. Quality of a code should not become a victim of compromises; use of fast, but inaccurate decisions because of deadlines, excessive excitement, excitement, irritation etc. – is unacceptable.
One of the major aspects of working out of software is designing from zero of the product ready to expansion. Modification of appendices after their release – the fact with which it is necessary to reconcile. Users will need more and more functionality, they will want to use the application was even easier.
The application component is not usually very useful in itself. The use of software starts to come in handy when multiple components interact with each other, exchange data, and work together to present data and interfaces to users.
And with this in mind, it is necessary to develop programs. What messages does the software accept? What events are monitored? What messages does it issue? How does authentication and authorization work when transferring data?
Another important aspect of writing good programs is the clear code but not the number of tests or the number in the code coverage report. Everything is simple here. Think about it: will others be able to read the code? Or, what’s better, will you be able to understand it yourself after a few weeks by writing the code today?
Readability of the code is much more important than it may seem. Unfortunately, there are no convenient indicators for estimating this characteristic. It will be useful to remember well-proven programming methods and templates but it is often not enough.
A good developer with experience simply develops an intuition that tells you how readable the code is. Here is a good comparison: to write a concise text, it is not enough to have a large vocabulary.
Any program at some point is bound to go wrong. The main feature of good software is that it is easy to fix a program that has already been released. If the program generates an error during operation, there should be a clear message about it, which will be recorded somewhere centrally, so that errors can be tracked.
When reporting a new error, the person responsible for correcting it should be able to perform debugging, connect to the system at any time and get information about the context of execution, as well as check the expected behavior of any component of the system.
Work environment and testing
When a developer writes a program, he checks that it works in many different environments, on machines with different resources and in different time zones. The software must run on screens of different sizes and orientations, with limited memory and low processing power.
For example, if software is written for a web browser, it should run on all major browsers. When creating classic software, it should run on Mac and Windows platforms in most cases. If the application you are creating depends on receiving the data, it should continue to work even if the data connection is slow or even absent for some time.
To write a software component, developers try to think through all the possible scenarios that can be imagined and plan to test them. They start with what is called a default scenario (or “happy path”) where nothing unexpected happens, and all the possible problems along the way – which is important – are documented and a test is planned for everyone.
Some developers start by writing “test cases” that imitate such scenarios. Then they write the functional code that goes through these test cases.
Developers should understand the requirements to software and they are often ambiguous and incomplete. The developer’s skill is not in how he or she writes a solution but rather in what solution he or she considers necessary.
Cost and efficiency
In most cases, the developer can solve the problem quickly. If you think it’s expensive to hire experienced programmers, think about it: the more experience a programmer has, the faster he or she will create a functional, accurate, reliable solution that is easy to maintain. And that’s less cost in the long run.
Besides, you should also take into account the “cost of work” of the program: any software consumes computer resources and they are not free. The developer will write an effective program that will not use PC resources without the need.
For this purpose he can apply, for example, caching of frequently used data, and it is only one of, probably, thousand tools and ways which help to raise efficiency and speed of work of the program.
Perhaps a novice programmer will give you a cheap solution, but working with this solution can cost you and your customers a lot more than if you hired an experienced developer who is first and foremost looking for an effective solution.