What is needed for quality web development?

    What knowledge is necessary for a modern, and most importantly, demanded web developer?

    Outside the brackets remains the basic ability to write code and everything related to the ability to work in a team and other obvious things. For our program of the course "Web Developer" , which starts on August 5, we outlined the following range of knowledge and skills, considering them fundamental in the specialty:

    Firstly, the code review: it’s worth writing such a code that it is reusable, understandable and simple, this includes DRY, KISS, cyclomatic complexity, readability, premature optimization, clean functions, static analysis, compliance with the style guide and tools to track everything of this. This is like design or psychology: everyone considers himself an expert, but not everyone is such in practice - clear principles are important here, a systematic approach is, of course, practice.

    Secondly, it would be nice for the developer to be familiar with the specifics of Python, syntactic sugar and the engine compartment. How to use generators, iterators, decorators and context managers, how to apply MRO in practice and deal with memory leaks - all these are useful practical skills that make the code more concise, understandable and “more maintainable”, and the product more stable and adaptable.

    A good developer can do the API: he can quickly do REST on Django, knows the good and bad practices when implementing the API, and also understands what GraphQL can be useful for and what are its pitfalls. Beckenders increasingly have to make APIs and, importantly, be able to do it correctly.

    By the way, the back-end will have a hard time without basic knowledge of the front-end - it would be very helpful to be able to collect the minimum front-end for the cool back-end on your knee, wrap it on Bootstrap or Material and revive it with the help of the good old jQuery. We are not talking about a full-stack developer, but for the sake of any sneeze, waiting for the front-end is not the most productive way to conduct development.

    Thirdly, it will be hard without knowledge of the common DevOps tools: how and when to use Fabric and Docker, what are the pitfalls of containerization, how to set up a simple and competent deploy.

    So that development does not turn into a permanent fix for bugs, such a developer will be very helpful in understanding autotests: when to write, and when not, where is the line between the lack of tests and one hundred percent coverage in each commit, how to deal with “bad-smelling” tests, how many tests should to be, and also to be able to argue the waste of time on them - all this seems obvious, but in reality it does not always work out.

    There is usually a lot of data, and they need to be processed quickly, so you need to understand relational data warehouses and communicate with them: how to design so that it does not hurt later, how not to spend seconds on unnecessary fuss inside ORM, how to optimize PostgreSQL.

    It will be cool if such a developer understands asynchrony: how it works, when you need it, how to use it. The topic is important because async is new sexy - this approach allows you to do many things quickly and conveniently.

    What do you think is critically lacking in this list? Maybe something superfluous? Share your opinion and let's make the industry better!

    Also popular now: