Our Lord and Motivator, Darth Vader

Tips & Tricks on Becoming Successful in Software Development

The Story so far

Filip Babic
COBE
Published in
8 min readDec 13, 2017

--

I was like you once. So were my colleagues. Just another student, graduate, or even an employee. We were all trying to find a new pastime, which could prove to be lucrative in the future. Some of us were geeks and sci fi lovers, some were plain gamers, some liked to party rather than spend their time with a computer.

Yet we’re all in the same world now. A fast paced, ever-changing world of software. And somehow, even though we didn’t have a single clue about code, nowadays we’re learning new things daily, broadening our expertise, working together to bring new abstract solutions to our shared problems, and most importantly, having fun doing so.

Let me spark your interest…

Life is a lie

So you want to become a programmer, someone whose only purpose in life is refining caffeine into pure code? You want to work long into the night, being the only person with lights on at 3 am? You want to see the code in traffic lights, elevators and have characters pour down in front of your eyes, just like they do in The Matrix?

If you’ve heard these in the past, let me tell you something: most of it is bullshit. The massive amount of stereotypes concerning programmers is the first obstacle in your way. Working long night hours, drinking tons of coffee and having no social life is not what development is about.

Most people give up by thinking that development doesn’t suit them, or because someone says it doesn’t suit them. Anyone can be a developer, and earn their living by programming.

The only thing development really does to you is make you think clearly and logically through everything, but it does not turn you into a code spewing machine!

Choose your own path

The first point you need to pass is choosing something you want to spend a few months or years doing. The sheer amount of materials on the Internet is overwhelming. From tutorials (paid & free), Youtube videos, books, to articles, podcasts and who knows what else, the sources are inexhaustible.

How to get pointed in the right direction then? Simple answer — you don’t. There is no right direction, nor one direction that is better than all the others. To each his own. Find something you think is fun, and stick to it.

For example, you don’t have to be forced into doing mobile just because it’s popular right now. You can take up Clojure, and find just as exciting opportunities as you would with Kotlin or Java.

In the future, if you want or need to change your platform, having previous knowledge will supercharge the learning process of the new platform. It all comes down to the same book where only the authors are different.

The Devil is in the Details

Now you’ve chosen a righteous path. But wow, where to go next, there is so much stuff to learn!

If there is anything I could advise you it would be this: never delve too deep into documentation. Reading documentation is one of the core ways of learning new APIs, but often it causes headaches due to too many details.

Once you start reading into a Class, it often is connected to 2–3 other Classes, which of course you start reading about next. Then those Classes are connected to 2–3 more and so on and so forth. After a while you’ve gone so far away from the starting Class that you don’t even know what you’ve been reading about.

Take for example the Android’s Activity. It’s inheritance tree is so large that Android Studio freezes a bit once you start opening it up. Fun fact, you don’t even have to know more than half of it.

So when you’re looking into something new, take 15–20 minutes to check it out thoroughly. If you happen to find anything new along the way, but it would take more than 5 minutes to read about, write it down to have a look at later.

Moreover, if you’re dealing with a problem in your code or whatever it is you’re learning, and it’s taking a lot of time, try saving it for later. I cannot emphasise how many times a complex problem, which had been bugging me for hours, was solved in 5 minutes the day after. Once again the solutions tend to pop up in your head while taking a shower, funny thing.

Do not succumb to tunnel vision.

Go with the flow

Even before you create a steady routine for learning, you’ll set a goal for yourself. A piece of advice: don’t. At least not in the way I’ve seen people do before, which is setting deadlines, or planning out their entire day.

The best depiction of development learning curve ever.

From what you can see above, the curve is not linear, it’s not exponential, logarithmic, or any mathematically representable structure.

Learning development is a series of ‘random’ events which launch your skill level far above. That bit of randomness makes development very unpredictable, even more so because no two persons are the same. Everyone functions in a different way, holds concentration for different periods of time, and can take in a different set of information per day.

This is the core reason why I think setting up certain deadlines, like I’ll learn Rx in a month, or I’ll wake up at 6 AM, code for two hours, then read 50 pages of a book and what not, is the worst thing you can do to yourself.

You, me, or anyone else after a month of planning everything out

I’ve seen this happen on a few people so far. Most importantly I’ve seen this happen to me, in my early days of programming (I sound old for someone who’s 21). My first couple of months were:

  • Wake up at 5:30 — 6:00 AM (depending on the day)
  • 30 minutes of daily human things (hygiene, food)
  • Code/read articles/read dev books up until 7:45 AM
  • Endure college up until 2:00 PM on average
  • Working & learning dev stuff up until 10ish PM
  • Repeat

I managed to go a full month or two without losing my mind. The worst thing is, everything I’ve gone through in my study process was only half absorbed. I’ve neither learned much nor have I properly understood the little I did manage to learn. And I was only in the learning process, I hadn’t been on a real project at that time; if I had, I’d have burned out much faster, breaking the project along the way.

So try to find your own pace, learn as you go without forcing anything. If some things don’t sit with you at the time, skip it and eventually you’ll learn that too. No one can know everything, and not at once.

Strength in numbers

One-two, one two, one-two

Fascinating creatures, ants. The combined mass of ants on our planet is larger than that of humans. They are uncountable, and yet they all (more or less) work together in harmony. A quick biology retrospect, but important for my next point! :]

So far everything’s been about you and you only. The next important thing you have to realise is: development is not a one man job. Most definitely you’ll be working in a team. Even as a freelancer, you have to work with someone else (how else would you work on a project).

Your team may be same platform peers, or multiple small teams of different platforms. Nevertheless communication is the key. I’ve solved countless complex problems in minutes just by talking to my teammates and having a fresh set of eyes gaze at the issue at hand. This goes along with what I’ve said for tunnel vision.

While learning or working, if you talk to people, even if you’re on different platforms, you can face use cases which you’d usually oversee by yourself. Having a healthy, diverse, open-minded community around you is like putting fertilizer on a plant, it helps you grow extremely fast.

Be a part of the community, or if there is no community, create one! Gather a group of friends that are all interested in similar things, try organizing presentations, lectures, open classes, and see where it goes.

Here in Osijek we’ve organised the first Android talks almost two years ago. People liked it instantly, and we’ve had a dozen so far. Even better, now there are iOS talks, Frontend talks, Design talks, Product management talks and I’ve probably forgot a few more.

We’ve tried to gather a community of Android devs to share stories, experience, learn new concepts and if anything just hang out. Ever since that, the whole thing caught on like wildfire.

We even encourage new developers to work on some topic, no matter if they’re confident enough to do it. Even though being 20 and holding a presentation in front of 30–50 people, who on average are way more experienced than you, may sound scary, it’s an amazing confidence boost. It will prepare you for client meetings, help you better present yourself when needed and make you more expressive! There isn’t a single downside.

“Nothing can stop a man with the right mental attitude. Nothing in the world can help a man with the wrong mental attitude.” — Thomas Jefferson

Success is a series of steps

You cannot succeed in a day. Nor does anyone expect you to. And you certainly shouldn’t expect to become a skilled programmer in a day or a week yourself.

It’s a fun, albeit bumpy, process in which you’ll come from being a mentee to being a mentor, but you have to play along, have fun and believe in yourself. If you don’t believe you can manage it, then most probably you won’t.

Good luck! And stay positive. :] ❤

--

--

Writer for

Android developer. Praise Kotlin :] Keen and enthusiastic learner and mentor, passionate about teaching and helping others. GDE @ Android, Osijek, Croatia.