Planets

Space Ships

It’s awesome to be a young student and learn a lot of cool stuff about programming. It is even better to have the opportunity to learn in a big company, with a lot of senior programmers who can answer all of your questions.

This is what we intended to do with the first version of Emag’s Internship Program. We selected 16 students out of 800 applicants and created 4 technical teams. Then we gave each team a project to work on for 2 months. We used SCRUM as a management tool and we divided the period in 4 sprints.

I had the great opportunity to be the mentor of one of these teams. My role was a mix of program organizer, technical team leader, scrum master, product owner and of course teacher. As a teacher, I didn’t offer them lessons on how to do different things. I believe a lot in self learning, so I empowered them with directions where they can find solutions to every problem they had.

It was a great period and a huge learning opportunity. My interns have learned a lot of new technologies: SOLR, Elastic Search, logstash, kibana, PHP, MySQL, Javascript (JQuery), Symfony2, RabbitMQ, and I learned how to bond a team of 5 total strangers and create a great product.

Here are some things I have learned from them:

to have success on a big project, you need to first focus on the team. People need to be open, available for any questions and to offer help, befriend the other team members. Honesty is a key part of the success of a team. I periodically held one on one meetings with all of them to check their expectations, their problems, their ideas, how they work with each other.

you need diversity in a team. The best ideas that were born inside the team were from conflicts between different personalities. If everyone is open to different ideas, this can lead to better ideas, thus a better product.

When learning a new programming language, you need to take it one step at a time. It’s better to learn how to code in a new language then jump directly on a framework, because you understand really better the though process behind that language.

When developing a large project, with several people, you need a management process in place. Scrum was great for us because it allowed us to discuss every day and see where we are in the development of the project. Also it allowed us to see who is overwhelmed by work and to distribute resources in that direction (i.e if someone had too much work, someone else jumped in and helped him).

New technologies are best learned if you can test them while learning. They had to learn a lot of new technologies in very little time. Were they to read a 600 pages book before jumping into code, that would have slowed their process. However, after learning the basics, they directly started to code and learn along the way, easing their learning process and discovering problems they never though would appear.

The product they have been working on is simply called Product Matching and it’s objective is to match the documentation of several different products and decide which ones are identical.

Here is what my team thinks of the Internship program:

Silviu Andrei Dragnea (Faculty of Computer Science from the Polytechnic University of Bucharest)

“The first day at eMAG was very exciting, given the fact that the company’s headquarters were presented to us and eMAG overall and how each department contributes to offering quality services to its clients. So far I got used with the project that I would have to develop together with my coworkers. . Although initially everything seemed really crazy, now things are clearer. George Olah was there for us from the first day and he made sure that we would stop being shy towards each other and towards him. He helped us integrate in the eMAG team.”

Daria Nedelcu (UPB Faculty, Computer Science)

“This internship program is my first work experience in an organized environment and it is very enjoyable and fun. So far we have learned how to use many new technologies and how to integrate them into our project,t Product Matching, which I find very interesting and complex. EMAG team is very friendly and willing to help us and teach us new things, for which we are all grateful.”

“I applied for this program looking for a challenge and I can say that so far my expectations have been met. I had the opportunity to supplement my knowledge in practice, and to use technology completely new to me and learn about which steps to take to develop a project. I came into contact with well trained and interested IT people, from which I’m learning something every day.”

Dragos Alexandru Mincu (Politehnica University of Bucharest)

“In the first weeks of this internship I had the opportunity to get familiar with PHP syntax, with specific NoSQL database Apache Solr, with Solarium library that integrates them both. My mentor, George Olah, is a person with good experience in PHP programming and web development. One thing I appreciate is that he built ​​his professional skills by learning and working on his own projects. People who work at eMAG are sociable and a good company for your free time.”

What do you think about an internship program? Would you join Emag’s Internship Program next year?

Romania (and the world) faces today a crisis on tech development workforce. There are more jobs than programmers. These leads to senior developers receiving a lot of emails with job opportunities, many of those being ignored.

I decided to write this article based on my own reflections on this problem. I am receiving every week several offers from companies in and outside Romania. I’ve seen several patterns on this offers, both good and bad. I warn you from the start, this article is a subjective view on the problem, based on my own experience. It might or might not be true for others.

Talent in a technology company is very important. In programming, we call talented people senior developers/rockstars/gurus/hackers. These are the guys that besides coding anything you give them, have the vision on how your software should be expanded in the future and architect it for further development and scalability.

These people are hunted by a lot of companies and receive a lot of offers. They never have to worry about losing their job or finding a new one. While they work for a company, they receive a lot of offers from others. But most of these fail because their offers are not attractive. More than that, most of the offers look the same.

Below is a list of things I think would trigger a senior developer to become interested in your company. They would work for me.

1) Be interesting

If your company, culture and projects are not interesting, then whatever you do, it will fail.

Why is your company better than others? Why should I work for you and not your competition? Work on this. Think what would trigger developers creativity and productivity. Most good programmers like to work in challenging projects, taking them from the very beginning to scaling them to millions of users.

2) The office as a home

We love flexibility. Some of us work best from 7 am, others wake up at 1pm and start to work at 4pm. Offer us flexibility in schedule and an attractive office where we would love to spend our time.

Personally,I love the comfort of my house. During the summer, I like to be able to take my laptop outside and work from my patio, feeling the warm breeze of the air and hearing the music sang by the birds. I like to take short breaks and lay down on my rocker.

If you are a startup, don’t rent an apartment. Rent a house. Have beds, rooms, a yard where people can take a short break. Think of the days when you will need your team to stay over the schedule and work on the project. We don’t mind staying more if needed, but we do if we don’t feel like at home.

We spend the entire day at your office. Make it a loveable place. Make it feel like home. You will see how our productivity raises.

3) Make us feel important

We are not robots. Don’t act like we would be. We are intelligent and creative people who can come up with solutions to problems that people don’t even see yet.

When you tell us about your projects and explain the role we will take, make sure you explain how important these roles are for you, the company and us. This will make us responsabile and let us understand that our talent will be used for something important.

4) Have a Team page on your website

and create a custom profile for each member of your team. Show the world how important everyone is. Then, after we will help your company get big, we will be proud to show our friends that we’re part of that. It’s simple for you to do that page, but once we get the feeling to be part of something big and the world can see that, well…we will really be part of it. There will be very few chances that other companies will attract us.

5) Linkedin – don’t send email templates

If you approach us with an email template, changing only our name (like most newsletter system do), we will think you are cheap and treat your email as spam. If you don’t take the time to write us a specific email and do your research about us before contacting, then we won’t take the time to reply. Write a short email, telling us where you found out about us and what opportunity you are offering. Use one sentence for each. Make us feel important and show us why we are a great fit for your project.

6) Be careful on calls

Some developers don’t like to be called directly, without any other introduction. Others will only respond to your calls because they are too busy or to lazy to write emails. However, when you call, make sure they understand from what company you are calling. In 95% of the calls I receive I need to ask again what company contacts me because the operator skips very fast over this important detail.

7) LinkedIn – Use InMail, don’t add us as friends

Again, like stated in point 6, don’t be cheap. We will make a false (or true) impression on you. When you add us as friends, we will think that you’ve added a lot of other developers and are not interested in who replies. That’s called spam. Spend those few cents to reach us because we will consider you really wanted to contact us. I know a lot of my friends who reply only to InMail and ignore all friend requests from HR.

8 ) Be serious

Once I’ve replied to your email, set up a discussion as soon as possible. Don’t let time pass by. I will get less interested by your offer and consider you unserious. You don’t want to disappoint the people you want to recruit. Set up the discussion in 2-3 days, not 2 weeks.

9) Offer competitive benefits

You want to recruit someone that is contacted by a lot of companies? Well, you need to be different. Just writing in your job description that you offer a competitive salary package won’t work. Especially if that competitive salary is exactly like the one offered by all the companies.

Benefits include the working environment, company culture, break & free time opportunities.

Startups have an ace in their hands above all established companies, of which i will talk about in the next point.

10) Startups – Talented people are your investors

In a startup, talent is extremely important. In the seed and angel stage, the investors look mostly at your team. They want to know that you have the talent to make your dream possible. But talented people are also investors in your company. They trade their time and talent, the safety of a job at a big company for your dream. They believe in you and your dream and are offering to help achieve it. They become “smaller” company founders and as a consequence are offered stock options. These are worth 0 in the beginning, but can be worth billions. What gets them there is execution. And you can not execute great without an amazing team. That’s why you should treat your team members as investors. They don’t offer you money, but are offering something thats worth the same as money.

Recruiting developers is a hard job today if you are making something normal. Work hard, offer extraordinary conditions and challenging projects, be different and you will become a magnet for both developers and clients. Stay unique!

—–

What other tips for recruitment would you add to the above list? Write them in the comments.

As we move deeper in the age of social networks, a new shopping experience takes shape: social shopping. Shopping with your friends has always been a fun way to engage in actions with them and do things together, but can this experience be moved online ? Can you enjoy online shopping, from the front of your pc as much as real-life shopping where you see your friends face, expression, smile? While this is a matter that we can not prove yet (maybe until we will have virtual reality or shopping inside applications such as Second Life or IMVU), we can definitly create a fun and helpful experience for customers. It has been shown several times that people tend to ask questions about products in social networks (such as Facebook or Twitter) before they buy and they base their decisions on their friends opinions.

In this article I will talk about ways in which we can use social elements inside the shops we create. I will cover aspects such as why are these elements important and about a mindset that we need to have when we introduce them: where can we use Facebook comments to increase sales, what should we let visitors tweet about, etc. The article will not include how-to aspects because the Internet is already full of these and a simple search on Google can reveal them.

So what is social shopping? Social shopping is a new method that uses the power of social networks to aid the customers with the ability to communicate online with their friends about the products they want to buy. To understand why this is important, let’s see some statistics:

32% of consumers think better of a brand or product that has been recommended1

46% of online shoppers are undecided what they want to purchase online1

90% of consumers online trust recommendations from people they know; 70% trust opinions of unknown users2

When asked what sources “influence your decision to use or not use a particular company, brand or product” 71% claim reviews from family members or friends exert a “great deal” or “fair amount” of influence.3

83% of online shoppers said they are interested in sharing information about their purchases with people they know, while 74 percent are influenced by the opinions of others in their decision to buy the product in the first place.4

81% of respondents said they`d received advice from friends and followers relating to a product purchase through a social site; 74% of those who received such advice found it to be influential in their decision.5

Facebook and Twitter users spend 1.5x more online than the average shopper6

About 29% of respondents aged 18-34 said they have discovered a product or service through a social network.7

Using social elements in the right place can help us convert visitors into customers. Let’s see some examples.

Facebook and social shopping

Facebook is one of the best tools for social shopping. You can use the Like button to gain fidelity from users and later inform them about discounts or offers, post to their wall, invite their friends to join shopping and get discounts together. All of these are simple to implement and Facebook Developers section covers them in detail.

You can also implement the shops you create directly in Facebook using Canvas. This way you will pass over the border between shops and the social network as you will allow users to shop directly from their favorite website. This has several benefits: it can be very user friendly as people will shop without leaving Facebook and it can gain trust from users because they already trust Facebook. This trust can be extended to some degree if you use Facebook Credits (however you need to play carefully with this, as Facebook takes a commission that not many of your clients will want to lose).

However you decide to implement these features, it is very important to keep in mind that you need to not be overwhelming and to plan very carefully every element. For example, it is good to have the Like button customized for each product and placed near the “Add to cart” button as this is a call to action that your client will want to do. Also, it would be a good idea to place a post to News Feed box under these where you will let the user ask his friends what they think about this product. We will probably show you how to implement this in a future article.

API Graph can help you learn more about customers without asking them to complete forms. The information you learn about them can be used later in newsletters or in personalizing their experience trough the shop. For example, if you learn that your customer is a woman of 36 years old you can recommend specific products for her which would be different from those shown to a man that is 57 years old.

A very important aspect that you should consider is letting users signup and login with Facebook. This would be a 2 click-steps, instead of completing a very long form. You can take the other information you need, such as shipping address or phone number in the Checkout step, when the user buys first.

All of these are cool, but the most important aspect of social shopping is perhaps the communication that increases sales and converts friends of customers into customers. Communication leads to trust, and opinions about products from real people and especially people that we know in real life increase conversions. This is why Comments provided by Facebook should have a central role in your ecommerce application.

Facebook Comments

Have you ever based your purchase on the reviews a product had? How important it is to know who wrote that review, if it is fake or real? Using Facebook Comments can help us in several ways:

Facebook Comments show who wrote that review – you can see a few words about that person directly in the comments box or you can click on their picture and view their profile.

Facebook orders comments by order of relevance for you. Comments are ordered to show users the most relevant comments from friends, friends of friends, and the most liked or active discussion threads, while comments marked as spam are hidden from view.

You can reduce SPAM because writing comments/reviews is not public. Users need to signup to Facebook or to a 3rd party client such as Yahoo, AOL or Hotmail in order to write.

You can administrate all of your comments directly from Facebook

Facebook includes a basic grammar filter that:

Fix common grammar mistakes (e.g. convert ‘dont’ to ‘don’t’)

Facebook Comments are viral – every message users post is also shown in their News Feed – you can reach their friends and then their friends friends creating a viral loop that brings new customers for your clients.

Trims extra whitespace

Auto cases words (e.g. capitalize the first word of a sentence)

Expands slang words (e.g. plz becomes please)

Adds a space after punctuation (e.g. Hi,Cat would become Hi, Cat)

Maybe you are wondering why, as a developer, should you care about the number of customers your clients have or gets thanks to you? The answer is simple: because there are a lot of developers that do exactly what you do so you need to differentiate, to stay above. These social elements can help you achieve exactly that goal.

You can also use a programming language to dynamically change the href portion for every page.

Social shopping outside Facebook

Social shopping is not just for Facebook. Any social tool, such as Twitter or MySpace can be used to create something unique. However, you should keep in mind that all of these have something specific. Twitter is not a social network in the real sense of the word, but a news network. It is great thus to use it to inform people. Give valuable information to customers that they will want to share with their friends. Place Tweet buttons in your products page, in your wishlists (“I like these products from SHOPNAME: product1, product2, product3.”) and anywhere you can give users something valuable to share.

Create a points system based on actions users do in shops (reviews, adding products to wishlist, sharing with friends) and reward them with gifts or discounts.

It is also great to use tools others have created and decrease the time you spend coding your own. Addthis.com provides a wide list of networks where you can share information, while OpenInviter provides a huge lists of networks where you can send invitations to friends. Online shopping tools such as ShopSocial.ly or Squeeqly.com can add a plus of professionalism to the shops you create. ShopSocial.ly let’s your users discuss about products they like, while Squeeqly rewards customer with discounts for sharing their purchases on social networks.

In this article we have discussed about social shopping features that you can add to your shops and create unique ecommerce websites. In future articles we will discuss about the ways we can code these features in our applications.

The Casidro projects consists of a database of over 2000 libraries from Romania. The module created for Bibnat.ro consists of an administration panel where they can manage all the libraries and where they can import new libraries from Excel files. In the frontend we have created a map with regions which brings you to lists of libraries from the corresponding regions when you click on them. There are also features such as search, edit, add and delete libraries.

Universal War is a science fiction browser game created between 2000 – 2004. The player becomes a commander of a planet and he needs to develop this planet to success by diplomacy, economy, politics, military actions and technological research.

My name is George Olah and I am an entrepreneur and web developer. My favorite web domains are web development, online gaming, gamification and social shopping. If you need any work done in these fields please contact me!