Code != Clothing, or How to neatly structure your code

Having been worked with countless technologies , frameworks  and 3rd party libraries, I can say that I have seen almost every possible way of organising the code for a project. From the approach of putting every file in a single folder “just for now” (where “now” becomes “forever”, because moving things around is just too complicated), to the one of creating humongous, monolithic do-everything libraries (which I nicknamed “walls of code”), to have everything is in one place, to the theoretically more rational modular system, where files are organized in sub-folders.

The reason why I stress the word “theoretically” is that, while the idea is certainly good, it can still lead to a messy, hard to maintain mass of files. The key of everything, in this case, is finding what logic should be used to structure the code. It may seem a simple question to answer, but the way one answers to it can lead to nasty surprises. Read more

The first rule you need to observe to become a Professional Developer

The inspiration for this post came to me while reading a few invitations I received from some of the “modern contracting” websites. I’d like to thank them for giving me a chance of some good bashing, but I won’t write their names here as they don’t deserve free advertisement.

A bit of background

I registered on some of these websites some time ago, because I needed to outsource some work I could not do myself. Despite being the Client and, thus, looking for someone to hire, I also completed my professional profile in the Contractors section. I did it  because I like to know the background of people with whom I collaborate, and I think it’s only fair that they get to know about me as well.

The drawback of this is that now I also appear as a Contractor, which allows other Clients to invite me to submit proposals to their projects. I was aware of this, and I thought it would not have been a big deal to reject an invitation, from time to time. Also, I saw it as an opportunity to get in touch with new prospective Clients and establish a relationship outside these platforms. Things went as expected for a while, until I started receiving invitations so disgustingly arrogant that ticked me off. Read more

A new section is open: Downloads

Over two months have passed since my last post, and I realize that the backlog of the things I wanted to write about is growing every day. However, I’m stubborn and I won’t get discouraged, especially now that I learned how to stop making goals, and I switched to projects. Much better feeling, stronger sense of accomplishment, definitely a better way of planning. If you’re a supporter of the idea the one should set goals, you definitely have to try working on projects instead. I promise you won’t go back to goals, ever. This is a topic for my other blog, though, and I might discuss it there.

Back to the original topic

As written in the subject, I can finally open the Downloads section, and I’m doing it by publishing a script that will hopefully save a good amount of work and some serious headache to all Developers who, like me, start working with the powerful, yet very complicated, Magento E-commerce framework. Read more

Overview of a Developer’s Career – What Software Development is not

As I mentioned in the first post, some of the people who asked me how to become a Developer gave me the impression of having the wrong expectations. To avoid disappointment, it’s a good idea to have a look at what not to expect from a career in SD.

It’s not a “get rich quick” career

IT seems has been in a state of constant growth for many years now, and it seems it’s only going to get bigger. The market offers plenty of opportunities for a skilled Developer, and, due to the high demand of such professionals, salaries are fairly high. However, you must not expect to become a millionaire. Even if you aim to become the best Developer in the world, you won’t become rich just for that.

If your main goal is making a lot of money, I’m afraid you’re on the wrong path. You should be learning business and marketing instead. In fact, the founders of Google, Facebook, Microsoft and so on were not such great Developers at all. What made them successful were excellent timing and business skills.

Of course, you can always learn those skills as well, but the hours in a day are limited and chances are that you will have to choose something to leave behind. The truth is: Software Development doesn’t bring money. Sales bring money.

It’s not always fun

There will be moments when you’ll ask yourself why you didn’t choose another job, or simply didn’t work in your parents’ farm, instead of dealing with yet one more frustrating issues. Even if you spend sleepless night to make sure everything is perfect, you’ll always have someone in the team who will screw something up. And that person may be you, since you didn’t sleep for so long. The best thing you can do is to accept that issues are normal, and be ready when they arise. Take it easy, your passion must not be a reason to destroy your health.

It’s not an easy discipline

This is probably one the reason why so many “Developers”, to put it clearly, suck. SD is complex and it requires you to have at least a basic knowledge of other fields, such as System Administration, Networking and Design. You then have to put the pieces together, and make sure they run smoothly. Even from a pure coding perspective, you have to learn best practices, know when to use them, learn how to do proper testing, and get used to the fact that you’ll work on the same thing over and over until they are complete. Finally, you have to cope with the fact that the only projects that you’ll ever close are the ones you’ll abandon. All the others will, hopefully, in constant evolution and you’ll work on them for years.

Bottom line

There would be much more to write about becoming a Developer, but I covered some of the most important points. At least, you should now be able to evaluate your priorities and see how they would fit a career in Software Development. If you think it’s your future, I hope I’ll keep having you amongst my readers and I’ll do my best to help you.

In my future posts, I’ll write about the concepts of working smartconstructive laziness and effort investment, from a Developer’s perspective. See you soon!

Overview of a Developer’s Career – What Software Development is

A demanding and rewarding career

As for all professions, Software Development requires time and dedication. It’s one of the jobs you can’t do “just because you didn’t find anything else”. A good Developer cares about what he’s doing, he likes to find his own errors and goes through a path of continuous improvement. A typical working day won’t necessarily be 9-to-5, and you’ll often find yourself thinking about new solutions and methods outside the office. That doesn’t mean you will turn into a socially inept, lonely geek, but simply that it’s a profession where curiosity and willing to constantly learn are a must.

Does that mean you’ll always be “on the job”?
That largely depends on you. When I started, I was so eager to learn that I got books about everything related to Development (at that time, “everything” involved much less stuff than today). I spent nights studying, experimenting and banging my head against the wall to understand why something didn’t work as I expected. However, that was because I had an absolute burning passion for it. Even without being such a maniac, you’ll be able to go far by simply keeping yourself up to date.

One important suggestion that I can give you is to always keep in mind that you set your own standards. Once you’ll land in your first Development job, it will be ok to show enthusiasm and passion for it. Companies appreciate efforts and, sometimes, they reward it.  Sometimes.

However, don’t expect the rewards to always be proportionate to your efforts, especially when you go the extra mile on a daily basis. If you tell your employer that you can’t believe you’re getting paid to do something you would do for free, 24 hours a day, you are actually offering yourself to be exploited. One day you’ll like to spend time on something else, and your company won’t accept it, as you worked ’round the clock so far.

In short: find your passion, cultivate it, but don’t brag about it with your employer.

A profession where you actually DO things

One of the most important aspects of SD is that it allows, and requires, that you do something. You have to design an application or a library, write code, to test it, interact with your team, prepare analyses, learn new technologies and so on. Perhaps you won’t have to do them all, and, for sure, not at once, but you’ll be busy. Very busy. There’s really a lot to do once you’re in this world, and the best thing is that, once you’ll have found your method, it will get easier. You’ll be surprised of how much you’ll be able to deliver!

Additionally, if you’ll work smart enough (more on this later) the reward will be having your name on some popular application, and the chance to work with equally talented individuals. Note that I didn’t mention the possibility of becoming filthy rich, because that’s not on Developer’s career path. A Developer is a maker, a creator. The greatest reward one should expect is the satisfaction of having done a good job, every day. Counting the money belongs elsewhere.

A profession that can grant you excellent flexibility

Software Development can give you enormous flexibility, if you are able to handle it. It will probably take a while before companies will trust your self-management skills, but, when it will happen, you’ll enjoy a level of freedom that not many people can have.

Freedom in terms of time

Everything you’ll be working on will have a deadline. By that day, you’ll know that some things will have to be in place and working as per specifications. How you will make that happen will be up to you. In my recent employment, I work from home 90% of the time. Of that time, most is spent in the evening, or in the night, as I mind my little daughter during the day. So far, results have been excellent.

Freedom in terms of location

Thanks to the progress in telecommunications, working remotely is easier than ever. As long as you’re be able to communicate with your team, and deliver your work in a timely manner, it doesn’t matter much where you are. This gives you the chance of going on a trip (almost) whenever you like, for as long as you like. Of course, if your company is in Europe and you go to Japan, the time difference may make things more complicated, but that would be an extreme case.

The two freedoms combined

Personally, I always liked short trips, but, with standard annual leave, it’s not possible to take one or two days off every weekend. Being able to manage time and location as I see fit, I can book accommodation for mid-week dates and outside of main holiday periods. This means big discounts, less traffic and less stress. I can work from anywhere, as long as I have an Internet connection and a quiet room (essential, as SD requires focus).

Let’s now go the the the third and last part, titled What Software Development is not, in which I’ll explain what not should not be expected from a career in Development.

Do you want to become a Software Developer?

Since I started contributing to a few blogs related to the world of Software Development, I’ve received several emails in which the readers asked me to give them suggestions and recommendations on how to become a Developer. While reading these emails, I noticed each one seemed to have a different reason for wanting to become a Developer, and, unfortunately, my experiences taught me that some of those reasons are the wrong ones. Therefore, I think it’s worth spending a few words in clarifying what such profession involves. Read more