I have very little experience (I worked as a programmer for a total of 16 months), however, I would like to give some advice to myself-in the past, or, in other words, to all those who are currently studying at the university and are planning to become a software developer. In no way do I pretend to be wise or experienced. A little thought, I realized that all these tips are as relevant as ever for me today too. I published the first note in my blog last year, and now I am publishing a list here, expanded by the tips of blog readers.
All tips are autonomous and their order does not matter.
What language should any developer know? No, not Sy and not Java. English. Learn English, and not only technical, but also conversational.
')
Program. Program. Program. Managers of the company where I work, hold the opinion that the programmer’s resume is github. Of course, this is only an expression, the point is that the programmer is expected first of all by the code, and then by evaluations, recommendations and certificates. Program. Experience is more important than a point. If the employer insists on the opposite, then think twice before you get a job with him.
Get to know UNIX. Installing Ubuntu and compiling the kernel is not familiar with UNIX. Read about the engineering and scientific foundation that underlies the philosophy of UNIX. It does not necessarily become a steep sysadmin and raise a dozen servers, better just get used to the principles of work and the UNIX way.
Mathematics is the main thing. Despite the particular consumer orientation of many software companies, the basic sciences remain the foundation of everything.
Ask questions. Naturally, if you did not find the answer in Google. Accordingly, do not ask questions that Google can answer.
StackOverflow is your best friend. Ask questions on the Internet, among friends, teachers, colleagues. A silly question is better than ignorance.
Get familiar with version control systems. At least with the main ones - SVN, Git, Mercurial. Open the repository on your machine and use it for homework and your own projects.
Get to know modern development tools. Often, universities do not pay attention to development environments and other programs and utilities necessary for full-fledged work. Many IDEs are free, try Eclipse, NetBeans, Emacs, Xcode, get used to the principles of work, find a convenient tool for you.
Learn to use the debugger. This is so critical that it is completely incomprehensible why universities pay so little attention to it.
Get to know your development methodologies. It is difficult for them to come up with an application in university life, but it is still possible. At a minimum, you can try using some methodology in your project with a friend.
Familiarize yourself with the design patterns. I have already spoken about this a hundred times, but I will repeat it. Here you will not turn away and apply at least a couple of basic patterns somewhere simply required. Take out your phone and take a look at the first available program: imagine how you can apply a pattern to its development.
Program in a team. Even the two of you will get a good experience, especially if you use higher-level tips: use the version control system, apply some methodology, use some pattern. Perhaps at this point it will seem to you that all this does not make much sense and it would be much easier and faster to write code without messing up, and, most likely, you will be right, but do not forget - all study is more an exercise than a job. Practice pair programming.
Work on your own projects. Back to the first point - program, but not limited to homework or exercises from books. Start your project.
Learn a new programming language. Sometimes I hear something like "we are taught something, but I do not know where it will be applied in life." Such people are often so sure of the uselessness of some of this knowledge that after graduating from university they work in some other specialty because they have not been taught to program in today's popular programming language. Forget the phrase "I will not need it in the future." When they learn to read in kindergarten, no one prepares professional readers. Children are simply taught to use the tool for information.
Get over the idea that
coding is far from the only thing you have to do . Most likely, the developer will need to work with clients, search for solutions to problems, deal with tools and technologies.
Make decisions and convince people. If you do not agree with the project manager or client, then try to convince them instead of performing the task you hated with quiet mats under your breath.
Insist on a pleasant environment. For a good employer, the main thing is developer productivity, and if you don’t like the workplace, then it’s hard to be productive. This concept includes not only a table and a chair, but also a work schedule, a building, an office, an atmosphere, development tools, and so on.
Do not forget about the Pareto principle. 20 percent of the effort gives 80 percent of the result. This, of course, is not the rule, but an obvious tendency.
Read the classics: Code Complete ,
The Pragmatic Programmer ,
The Practice of Programming ,
Design Patterns .
Learn to plan. The same university assignments - estimate how much time it will take for you, and at the end, analyze the work. Do this constantly and for different types of work. A developer who performs work on time is much more valuable than a developer who sometimes performs work faster than others. And don’t worry if you don’t learn how to clearly estimate the amount of future work - nobody knows how to do this :-)
Set priorities. Another tip in from Captain Obvious. Coupled with the previous advice can be at times increased efficiency.
Do not focus on job security. Do not work against your will just because now and here they are paying money. The best way to protect your career is to constantly develop and work with pleasure.
And most importantly:
if you do not like programming, then do not become a programmer . Very simple :-) There is no way a good work without pleasure can end.
I hope that in another five years I will add new tips to this list, but for now you can recommend something yourself.