Start Me Up

Becoming A Better Developer, Part 1

Pablo Picasso: "Junior developer after her first day", Oil on canvas, 1901-02

Pablo Picasso: "Junior developer after her first day", Oil on canvas, 1901-02

So you want to become a better developer? This guide is divided into four parts, the first one (the one in your hands right now) is devoted to people wanting to start a career in software development.

Tips to help you improve are shown in bold.

Personal experiences will appear in colored boxes like this one.

Vocation And Devotion

You want to try out the profession of software developer for fame and riches. You have heard that recruiters are offering very well paid jobs, and that all of the cool girls and boys are working in the field. So how can you get in?

First let us do some soul-searching. Do you really want to spend your days (and some nights) crouched upon a computer keyboard, letting a screen (however large) be your only contact with the world? Do you have in you the will power to spend countless hours tracking a bug?

Software development is not an easy career to follow. Many people have found that there are other profitable career paths, some of them related to software development: marketing, design, UX, sales.

Is University Worth It?

The profession of software developer here in Spain is taught in "ingeniería informática", which is an adaptation of the french term "ingénierie informatique". In the US there are several universities offering "computer engineering", whatever it is; and some even offer software engineering.

But honestly, any other science-related degree can be good enough.

Not even a degree may be necessary. Many fine developers have just studied secondary school, and maybe earned a title in vocational education and training. Not that University is worthless; but its value depends a lot of what you do with it.

I studied physics, under the notion that I could learn how to program by myself, but I would never get to learn science properly if I studied computers. I believe I was basically right: it was one of the few good decisions I made as a teenager. Still, studying software engineering is fine really.

And University is not necessarily the best way to work as a developer. So if you are doing it as an investment and getting into an enormous debt, please reconsider.

Bootcamps

There is an easier way to acquire some education and access our noble profession. It is a great day for software development: our skills are in such high demand that many cool companies are willing to take in people that have learned the basics in 8 to 12 weeks. These bootcamps are not cheap though: prepare to pay about a thousand dollars per week.

Intensive courses are not just for outsiders. I have met quite a few people that were already working as developers, and just wanted to recycle themselves in a different field.

How can you know if a bootcamp is any good? It depends a lot on how exigent they are. If they are ready to accept anyone then the level is probably not very high. But if there is a selection process just to get in, and many people are rejected, then you can trust that it will be worth it. Keep in mind that only hopeless cases fail to finish the bootcamp, so any selection needs to be done before it starts.

 Pet Project

The hardest aspect of learning a new language, framework or environment is to keep the motivation up. That is why by far, the best way to learn anything new is to start a pet project using it. That is because the project supplies the necessary motivation to delve into new waters, and even to enjoy the journey.

This is also a great presentation card for a prospective employer.

For a few years I was writing a book that never materialized, in an obscure editor called LyX. I started eLyXer to help me convert it to HTML; it was very useful to learn Python. Later on I started milliearth, and loadtest, two projects that have helped me learn a lot of Node.js.

Even if your pet project gets nowhere near your original objective, the learning experience will probably compensate for it.

Pet projects are not just for job seekers; they are great for developers of all levels.

Getting That Job

So you have decided you want a certain job. How can you get it? Julia Grace, Director of Infrastructure Engineering at Slack, says:

[...] find someone at the company (search their About pages, which often have links to employees’ LinkedIn, Twitter accounts, etc.) and email that person asking about the company. I’m not saying you should harass them, just politely reach out, indicate you’re interested in the company, ask for advice on how to apply. Most people want to help.

The whole article is very interesting as it reframes a lot of common points of view.

Do not throw CVs around like it's Christmas; instead, focus on places where you really want to work. Research them, check what they like, what they looking for, prepare for the kind of interviews that they do. Keep in mind that it is better to apply to 5 places thoughtfully than to 100 random companies.

The first decision is if you prefer to work at a startup or at an established company. Take into account that startups will probably offer more responsibility and will have you do many different tasks, while large companies tend to have established roles and it can be difficult to change projects. Whatever rocks your boat.

Many companies will feature coding tests: give you an assignment to complete in a set time. From the point of view of the employer it's only natural that you should show how you build software if that is what you will be doing at work! Each test should not take longer than a couple of hours.

At mediasmart we create a coding test with five or six stages. Several of our developers will do it beforehand to gauge how long it should take, and keep only enough stages for an hour or so. We send the first one by email the morning before to all candidates so they can do it at their leisure, and they always have something to show. The rest of the stages are done under our supervision, and they have to complete as many as possible in an hour. It is an excellent way to test the abilities of a candidate. There is a certain pressure in the on-premises test, but knowing how they perform under stress is also valuable.

Once we had a candidate that said that he had completed the first stage the night before. When asked to produce the code, he said that he had solved it "in his head". Bad sign! Afterwards he was not able to complete even the first stage, which supposedly he had finished at home. Maybe he was an excellent developer but he failed to prove it. Imagine if we had trusted his word.

Do your research for an interview. Prepare to show your work, and how you work.

Other companies like to place you in front of a whiteboard, make questions about algorithms and ask you to solve theoretical problems. I distrust these tests; they are nothing like the work you will later do. But hey, if Google do it, then it cannot be wrong, right?

In any case, many people spend months preparing for an interview at Google. It may be worth it given the salaries they pay!

Study how the companies you like hire, and prepare for it.

Conclusion

In this first part we have seen how to start working as a software developer. It is important to choose the right company, or you may end up wasting a couple of years of your career.

Part Two

The next installment is out! Dedicated to juniors starting to work.

Published on 2016-10-06, last edited on 2016-12-04. Comments, improvements?

Back to the index.