Advice to yourself in the past
I have very little experience (in total, I worked as a programmer for 16 months), however, I would like to give some advice to myself, in the past, well, in other words, to all those who are currently studying at the university and plan to become a software developer. In no way pretend to wisdom or experience. After a little thought, I realized that all these tips are more relevant than ever to me today. I published the first note on my blog last year, and now I am publishing a list here, expanded by the advice of the readers of the blog.
All tips are autonomous and their order does not matter.
What language should any developer know? No, not Si and not Java. English. Learn English, and not only technical, but also conversational.
Program. Program. Program. The managers of the company where I work are of the opinion that the programmer’s resume is github. Of course, this is just an expression, the point is that the programmer is expected to receive code first, and then ratings, recommendations and certificates. Program. Experience is more important than grades. If the employer insists otherwise, think twice before getting 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 underpins the UNIX philosophy. It does not necessarily become a cool sysadmin and raise a dozen servers, it’s better just get used to the principles of work and the UNIX way.
Mathematics is the main thing. Despite the purely consumer orientation of many software companies, fundamental 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. The site of the StackOverflow - your best friend. Ask questions online, among friends, teachers, colleagues. A stupid question is better than ignorance.
Get to know 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 tool convenient for you.
Learn to use a debugger. It is so critical that it is completely incomprehensible why universities pay so little attention to this.
Get familiar with 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 a methodology in your own with another project.
Get familiar with design patterns. They have already spoken about this a hundred times, but I will repeat it. Here you will not get away and apply at least a couple of basic patterns somewhere simply must. Take out your phone and look at the first program that comes across: imagine how you can apply any pattern to its development.
Program as a team.Even the two of you will get a good experience, especially if you apply the above tips: use a version control system, apply some methodology, use some kind of pattern. Perhaps at this moment 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 around, 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 for yourself.Sometimes I hear something like “we are taught something, but I don’t know where it will be applied in life.” Such people are often so sure of the futility of some of this knowledge that after graduation they work in some other specialty because they were not taught to program in the programming language that is popular today. Forget the phrase "I won’t need it in the future." When a kindergarten is taught to read, no one prepares professional readers. Children are just taught to use the tool to get information.
Get used to the idea that coding is far from the only thing you have to do . Most likely, the developer will need to work with clients, look for solutions to problems, fight 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 hate with quiet mats under your breath.
Insist on a pleasant environment. For a good employer, the main thing is the productivity of the developer, and if you do not like the workplace, it is difficult 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 the Pareto principle. 20 percent of the effort gives 80 percent of the result. This, of course, is not the rule, but a very obvious trend.
Read the classics: Code Complete , The Pragmatic Programmer , The Practice of Programming , Design Patterns .
Learn to plan. The same university assignments - evaluate how much time it will take you, and at the end, analyze the work. Do this constantly and for different types of work. A developer who does the work on time is much more valuable than a developer who sometimes does the work faster than others. And don’t worry, if you don’t learn to clearly assess the amount of future work, nobody knows how to do it :-)
Set priorities. One more tip from Captain Evidence. Together with the previous advice, you can significantly increase efficiency.
Do not get hung up on job security.Do not work against your will just because money is being paid here and now. The best way to secure 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 :-) Nothing good can end without pleasure.
I hope in another five years I will supplement this list with new tips, but for now you can advise something yourself.
All tips are autonomous and their order does not matter.
What language should any developer know? No, not Si and not Java. English. Learn English, and not only technical, but also conversational.
Program. Program. Program. The managers of the company where I work are of the opinion that the programmer’s resume is github. Of course, this is just an expression, the point is that the programmer is expected to receive code first, and then ratings, recommendations and certificates. Program. Experience is more important than grades. If the employer insists otherwise, think twice before getting 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 underpins the UNIX philosophy. It does not necessarily become a cool sysadmin and raise a dozen servers, it’s better just get used to the principles of work and the UNIX way.
Mathematics is the main thing. Despite the purely consumer orientation of many software companies, fundamental 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. The site of the StackOverflow - your best friend. Ask questions online, among friends, teachers, colleagues. A stupid question is better than ignorance.
Get to know 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 tool convenient for you.
Learn to use a debugger. It is so critical that it is completely incomprehensible why universities pay so little attention to this.
Get familiar with 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 a methodology in your own with another project.
Get familiar with design patterns. They have already spoken about this a hundred times, but I will repeat it. Here you will not get away and apply at least a couple of basic patterns somewhere simply must. Take out your phone and look at the first program that comes across: imagine how you can apply any pattern to its development.
Program as a team.Even the two of you will get a good experience, especially if you apply the above tips: use a version control system, apply some methodology, use some kind of pattern. Perhaps at this moment 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 around, 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 for yourself.Sometimes I hear something like “we are taught something, but I don’t know where it will be applied in life.” Such people are often so sure of the futility of some of this knowledge that after graduation they work in some other specialty because they were not taught to program in the programming language that is popular today. Forget the phrase "I won’t need it in the future." When a kindergarten is taught to read, no one prepares professional readers. Children are just taught to use the tool to get information.
Get used to the idea that coding is far from the only thing you have to do . Most likely, the developer will need to work with clients, look for solutions to problems, fight 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 hate with quiet mats under your breath.
Insist on a pleasant environment. For a good employer, the main thing is the productivity of the developer, and if you do not like the workplace, it is difficult 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 the Pareto principle. 20 percent of the effort gives 80 percent of the result. This, of course, is not the rule, but a very obvious trend.
Read the classics: Code Complete , The Pragmatic Programmer , The Practice of Programming , Design Patterns .
Learn to plan. The same university assignments - evaluate how much time it will take you, and at the end, analyze the work. Do this constantly and for different types of work. A developer who does the work on time is much more valuable than a developer who sometimes does the work faster than others. And don’t worry, if you don’t learn to clearly assess the amount of future work, nobody knows how to do it :-)
Set priorities. One more tip from Captain Evidence. Together with the previous advice, you can significantly increase efficiency.
Do not get hung up on job security.Do not work against your will just because money is being paid here and now. The best way to secure 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 :-) Nothing good can end without pleasure.
I hope in another five years I will supplement this list with new tips, but for now you can advise something yourself.