Recommendations for starting a career

    Based on the recent conference in Yaroslavl State University on March 25, which came to very few people, I decided to write a small motivating post for students and novice programmers / IT specialists. You can watch my presentation from the report on skydrive . Here I will try to briefly cover as much as possible this report.

    This is purely my flight of thoughts, I do not pretend to any revelation or novelty. I started writing it immediately after the conference (a month ago), but somehow I could not finish it. It is crazy insane that besides me, everyone wants to share with students and novice developers. Here are just in the last couple of weeks two topics with similar topics (and also transcripts from conferences) have been noticed:

    Well, before us more than once they raised this topic. I recommend reading and charging with all these topics.


    Poor education


    This is exactly what our students and teachers are talking about in Russia: we have a terrible education. Students often say that the university does not teach what is necessary in practice. How many topics we saw last year on the habrahabr resource about this (I restrained myself, and did not answer any). On the other hand, I was lucky to take advanced training courses (as a teacher), at which I talked with teachers from other faculties, and where we tried to solve and think about problems that we ourselves had put forward. So, the main problem we had that we put forward was the passivity of students in learning. Suddenly, huh?

    We also hear from students complaints about bad employers who do not hire them because they have no experience and they have nowhere to get experience. Employers, in turn, say that students are very stupid and not prepared for the job.

    So what, in my opinion, should be taught at the university? Students will need knowledge of programming languages, because C #, Java, C ++, ASM (and that, anything is possible, such work may come across). Then students need to be able to create client applications, therefore, WinForms, WPF, MFC. Web Development: PHP, ASP.NET, ASP.NET MVC (ASPX / Razor). Data needs to be stored: SQL-92, TSQL (MsSQL), PL-SQL (Oracle), MySQL, PostgreSQL. Well, they will not be asked directly from students to contact the database, therefore: ORM, Hibernate, NHibernate, Entity Framework, Linq-To-SQL, ADO.NET. We still have technologies around: Silverlight, WCF, WF, knowledge of SOA. You also need to know some development frameworks: Sharepoint, Microsoft CRM, SugarCRM. And stop, we talked about web programming: XML, XHTML 1.1, HTML 4, HTML 5, CSS 2, CSS 3, XPath, XSLT, Well, and where without JavaScript. Well, the basics, the basics: Continuous Integration (CC.NET, nAnt, TeamCity, TFS); Familiarity with CVS, SVN, Git, Mercurial, TFS repositories; patterns: GoF, MVC, MVVM, MVP. You also need to know the different development shells, tools (Debuging, Profiling), and heap up smart words: TDD, IoC, Scrum, Agile, etc. You know, I even doubt a little that I named 70% of what I had to learn and use in my 6 years of practice (well, it’s already forgotten that once, as a student, I wrote programs in Borland C ++ or Delphi for a penny , although for me then it was a lot of money). I want to pay attention to the number of years, only 6 years. And I’m more than sure that over the years I will have to (if I want to develop) once again return to what I consider to be the past stage, and what I already consider material to be recognized, as well as that in a couple of years I will be able to supplement this list with a large number of technologies. Now, take another look at my list. Almost all of these technologies are interconnected by Microsoft (80%), well, that's how my career turned out. This is just Microsoft. The Ruby developer will write another list, and the Embedded device developer will write his own (they will, of course, somehow overlap with mine). Moreover, here I practically did not write versions of platforms yet. When current freshmen graduate from the university, this list can also be amended and modified. So what really needs to be told at universities? Exactly what they are now telling. No more no less. What difference does it make, which subset of the many IT will tell you, and how much. 100% coverage will not work - that's for sure, even 10%, and the difference is that one university tells 0,0005%, and the other is 0.0006%, small. There are fundamentals, they are told in all universities, and they should be enough. Depends, of course, on the teachers, how they are served.

    “We were taught at school, but we must study at university.” A silly expression, but if you think about it, it makes a lot of sense. This is what you need to build on.

    Self learning


    Where to get knowledge? In the Internet. Even I (at my 26 years old) did not have the opportunity to surf the Internet at the university. I remember that my friend and my classmate chose one night on the weekend, bought beer, an Internet card and went to surf the Internet (cheaper at night). According to the stories of my older comrades, we were also very lucky, even though we had computers at home, and someone still had to break through to the computer to try and see something. Try whether the code that I wrote on the paper works. Now everything is easier. Everyone has computers, the Internet is also available. And you know famous IT resources without me.

    A very good option is to sit on specialized IT forums. Just read first. Then read through unresolved problems, look for solutions in Google, and solve other people's problems. Then learn to see problems on the surface. Or you can solve them yourself without any problems. I did this when I was learning ASP.NET. I climbed into the GotDotNet forums, and I downloaded it very well on this topic. Learn from the mistakes of others.

    Another option is OpenSource. Its a huge amount. Look for interesting designs for you. Begin to study the code, follow the changes, look for errors, read the recommendations for the project, implement them, send your patches to the main developers of the project - in time you will be given rights to the project. Do not ask immediately to give you access only because it is interesting, first you need to prove yourself. Honestly, you will never find a super OpenSource project in which the code will be 100% perfect, this just doesn’t happen, so just look for an interesting project for you, but not perfect. And moreover, most often you have to delve into the old (legacy) code, get used to it from the cradle.

    You need to go to everything for free (conferences, classes, courses) that is available, and no matter what religion you are. You need to read everything that only comes to hand, and for which there is time. Do you know that there is such a profession as a usability specialist? This is the man who read a very tedious document about what forms should be in Windows7, as well as having little knowledge in psychology.

    No extra knowledge


    This is better described in one of Joel Spolsky’s articles, Advice to students of computer science . It describes why you need to be able to write, why to be able to talk, and why you need an economy. Homework - Read this article if you haven’t read it yet. And I, even at the conference retold it, will repeat, I will not.

    Before preparing for the conference, I looked into the history of my mailbox. See what I wrote and how, as a student. Well, firstly, it's hard to find something without a mat, and secondly ... Just look. Here, for example, once:



    But, for example, two:



    The second letter, so I wrote an official letter, I wanted to publish my work (was fond of Photoshop design) on some site. I remember that once I even almost got a job in a magazine as a designer. In general, write correctly. To me, that “writing style" still sounds like a hitch, although I had a solid four at school. Try to write competently everywhere, even in icq, where, as it seems, there are no literate people left.

    What to start doing tomorrow?


    I consider these books to be bibles for myself. I have already read each of them 2 times for sure. At first, when I was almost a student, I read, but remembered little of everything. The second time, when a little knowledge has already been gained. And it would be necessary to return to them a third time, in order to read how to feel how it helped or will help



    me. Occupy yourself with something. Until now, there is not a single normal Twitter client, everything sucks. Well, write and you are your sloppy client. There is only one normal free phpBB forum engine, and that is on php. There is still no notebook on amazon kindle (the idea is already full). Steal ideas, remake them, implement doubles. Look at the television, and there 99% of the programs are stolen from the west. It’s also possible to steal IT, honestly. Let even your program be used only by you and a couple of your friends - the role will be played by the fact that you have brought some (albeit even very small) project to the end.

    If you do the same task twice - here it is work for a real programmer. Automate everything. Lugging wallpapers with atata branches ? Write a program that will do this for you and expose you new wallpapers according to the parameters from this RSS. First write a simple non-working program, follow it, develop it, let your friends use it. Make a normal GUI, put it on the Internet. And do not forget to share with me.

    Be a programmer


    The most basic thing is to go through the stage when a person turns into a programmer (the benefit of mathematics is quite close). These jokes about the “boil the kettle” algorithm (do they still know it, right?), Or about the fact that the programmer, crossing the road with one-way traffic, looks in both directions - they are not just like that. This is a way of thinking. You can not believe anyone, you need to check the external parameters. You need to be able to see errors. You can never rely on a smart user. This, by the way, is one of the mistakes of our teaching that teachers allow students to make bad programs initially. Students do not validate data, make terrible interfaces. My students are not lucky now, I took up them.

    To stretch yourself, start by reading this book.



    Good puzzles are collected there, you can work out and solve them. You can just look and parse the answers. You can parse the answers and try to write in another language (sometimes there are small language-specific differences).

    Get a job


    Actually, the last thing to do is get a job. So everything is simple and corny. Do not run after the money, if everything is correct consistently, then they themselves will come. Look for work where you think they will give a lot of knowledge, invest in yourself. Being at conferences - make acquaintances, among peers, among speakers, look for smart questions that you can ask somewhere on the sidelines, just so that your face might be put off somewhere by the speaker. At the present time, the most difficult thing for employers is to hire an interested person in work and in the development of people, if someone once remembered you at some conference is already a big plus.

    When I got a job on a construction site after the 3rd year (then I already worked as a programmer, but there was not much work, but I wanted to earn some money for a vacation), I got a job very simply - through my friends I found out where the nearest construction site is and how to contact the main team leader. I came to him at 8 in the morning (already with clothes for changing clothes) and asked how I could be useful. Obviously, after 15 minutes I was already working in my sweat. For a month I collected money, thought I would work and more, but there was still work for the programmer.

    Actually, what prevents to do the same with IT companies? Come to them at 2-4 courses, choose one of you interesting (fortunately everyone has sites), prepare yourself well - find out what the company is doing. Find the chief manager or director or someone else and explain the situation that you want to start working with them at the end of graduation or even earlier (for example, there is no 5th year at YSU), what needs to be done. Tell me that you are ready for a year to simply disassemble tasks for free, try to solve, etc. I think that the employer (smart employer) will be pleased with the student concerned.

    And don't be afraid of never completed interviews. Any person has several. Go home and just figure out why you couldn’t get through it.

    Also popular now: