Tips from the technical director of an IT company to a bootcamp graduate
The article was translated for you by Chuck Groom , a programmer with 18 years of experience, currently working as a technical director of a large company from New York. Chuck is often looking for employees for his company and in the article he tells what qualities and experience a bootcamp graduate should have (as well as a university or courses) in order to be hired.
In the role of technical director of my own IT company, I often look for new employees. I often speak with bootcamp graduates who spent 3-6 months there. The main question that interests them is how to get a developer’s place.
Skillbox recommends: A two-year hands-on course “I am a PRO web developer . ”
We remind: for all readers of "Habr" - a discount of 10,000 rubles when writing to any Skillbox course on the promotional code "Habr".
I must say that training in a bootcamp or anywhere else is not at all a guarantee of the transformation of an ordinary mortal into an experienced programmer. To become a developer, you need thousands of hours of self-study and practice in software development. Yes, bootcamp is a great start, but then you need to continue to learn.
This is where the novice programmer should focus on, who wants to start a career:
- Writing a lot of code while working on a project. The task that you like to perform - the key to rapid learning. In addition, you need to have a repository on GitHub, this is both a portfolio and an argument that allows you to give a certain credibility to a newbie.
- The study of basic things, the basics of programming. First, at the interview very often they are interested in whether the applicant knows the basis. Secondly, the specialist himself needs this in order to understand what he is doing.
- Networking. You need to meet with colleagues and potential employers, “sell” yourself. Weak networking often leads to difficulties in finding a job. Conversely, attending conferences, hakatons, events for programmers allows not only to communicate with "brothers in mind", but also to establish a connection with a possible employer.
Solve real problems
The specific task that you have undertaken to perform means much more than simple coding "in a vacuum". The point is that if you are learning something, do not just do it, try to apply your knowledge. For example, help the open source community project improve it. All you need at the stage of formation is to choose an interesting project, a task where you can show everything you are capable of. Try to make something unique, you should not create another website with recipes.
When working on a project, post the results on GitHub.
The results of your work are placed in the open GitHub repository. Do not worry that your code is not perfect, just try to make it as readable as possible (and, of course, working). Do not forget about automated tests and adding well-written readme to projects.
Employers often rate programmers for their github. They want to see examples of work, and your task is to give them.
One of the ideas to do: create a skill for Alexa.
This is useful for improving the skills of a programmer, and revealing - because this skill will be available to all. Developing modules for a digital assistant from Amazon is definitely a wow factor that can attract an employer to you.
You can start simple. First you should see what already exists. Then try to develop your own skill, make it functional, polish. So you will understand how the IoT device works, get invaluable experience and the first (or second, third) account work for your portfolio.
And you can also implement something for a potential employer.
This is a great option. If you want to get a job in a particular company, try to do something useful for it. For example, when I was working at Xmarks, a colleague and I interviewed an applicant, a guy who showed a demo of a project where our APIs were used. The project was interesting, we realized that the applicant really tried and knows our product in addition, and took him to work.
Master the basics
Take time to learn the basics of software development — general data structures, programming techniques, and concepts. With questions about them there is a chance to continue to meet at one of the interviews. But, more importantly, these are common tools that every software engineer should have in their luggage. You must clearly understand what is a good program that works correctly and quickly.
You should be familiar with lists and dictionaries of your chosen programming language.
- As for listings, you should know:
- syntax for working with any element in the list;
- syntax to get the nth item from the list; the concept of index and indexing 0;
- The principle of sorting a list is to realize that if the list is long, it may take some time;
- differences between arrays and lists; stacks and queues.
For dictionaries, the key elements of knowledge are:
- dictionary syntax for searching and inserting;
- the concept of a pair of "key - value";
- search by key;
- common use cases: “attribute package” to describe things, reference table;
- communication between dictionaries and JSON (serialization);
- the concept of hashing functions (and how they are associated with dictionaries);
- principles of using cryptographic hashes, such as SHA-1.
There are a lot of concepts you can learn. But the main thing is the understanding of the principles of working with functions and a far from nodding acquaintance with object-oriented programming and its logic.
Functions are the basic building blocks of programs. There are many nuances of their use - from a good selection of names to an understanding of when it is better to use which function. All this comes with experience.
As for object-oriented programming, you need:
- well versed in instances and classes;
- not less well in inheritance (subclasses);
- know how to define a class using the initialization method in your chosen language;
- Be prepared to discuss encapsulation, abstraction, and polymorphism.
Butcamp graduates often have little knowledge of databases. If this also applies to you, I advise you to start exploring relational databases and SQL immediately. In addition, try setting up a PostgreSQL or MySQL database on your computer.
Also keep in mind that MongoDB is not SQL, so the interviewer is far from always, being interested in experience with databases, asks about MongoDB.
Here the tips will be general: it is worth exploring the main issues that may be caught in the interview, on the Internet. In addition, join forces with your friends and try to interview each other.
The art of interacting with people increases the chances of getting a great place in the company.
An important point for a networking programmer, as I said, is his GitHub. In addition, you should have a current LinkedIn account with a large number of contacts. I use LinkedIn as my own resume, this time. Two - with the help of this social network I am looking for the people I need. Well, if you have a lot of links in LinkedIn, you can get to know a huge number of specialists, including potential employers.
The Internet is not all. It is important to get out of your comfort zone (no matter how beaten the phrase is) and meet people face to face. Attend meetings, approach strangers and introduce yourself, and also communicate with people interesting to you. It is quite normal to initiate acquaintances with those whom you want to know more closely. The key life lesson I learned is that you should not be ashamed to invite someone to have a cup of coffee, even if it is for a couple of minutes.
You will be surprised at how often chance and goodwill open important doors.
And the main thing, of course, is to continue to learn, improve your experience and knowledge. Motivation is what many employers are looking for. Seeing a motivated, albeit novice job seeker, an experienced leader may turn a blind eye to some shortcomings in terms of professionalism in favor of enthusiasm and a willingness to learn further.
- Practical course "Mobile Developer PRO" .
- Online course "Profession Web Developer" .
- Online course "Profession Frontend-developer" .