Articol publicat in: Calculatoare

It is said that working with friends can only ruin those friendships. After some years of working with some of my best friends, I reckon it seems right sometimes – sharing a professional life with your friends makes you highly prone to conflicts that can rot your personal relationships; nevertheless, in the long term, it turns out to strengthen your friendships and add quality to your work environment, especially if those people are very skilled professionals. If you surround yourself with very smart people , they will challenge you to do your best. The workplace is no exception.When you are contributing your code to five or more projects, it is noticeably helpful to have an work environment set up for improved productivity, frequently being added new tools to speed up the development and remove repetitive work. From the moment of checking out a project to the moment of building in one step and deploying your code, the ability to move fast when manipulating a complex system where each project has its own bucket of {x testing, y freeze, z production} machines, and quite a few dependencies {Hadoop jobs, Solr indexes, HBase databases, MongoDb sets, cronjobs …}, should motivate and trigger humbleness to a web- developer. Such a technical background and extremely skilled TechLeaders and SysAdmins in a company, not to mention concepts that you can often hear about in Facebook TechTalks or on sites like highScalability.net – they not only add a lot of value to programmers ‘ experience and skills, but they also keep them tied to such a company.To make it clearer, there aren’t too many places where I could see large projects with static text resources (Javascript and CSS) built in one step in a single file, with versioning – so you can always revert to a previous revision in production; this was so much better than the common approach which requires developers to put all their static code in a single file, failing to provide only what is needed, so that no additional static content is uselessly served for a certain page request. Yes, I know I said I’d make it clearer ..
What is more, it is also nice to have code reviews, management classes, presentations on tech/business matters; it is good to securely and easily work from home, to have a free phone subscription and a parking place (with the downside of being the permanent onCallEngineer or so called TeamLeader for a certain project [joking, it is always a great privilege, especially on weekends and vacations] ).Besides, it is nice to use Hg instead of Svn. Svn pollutes your source folders and doesn’t allow symlink versioning, to name just two shortcomings. Mercurial gets you closer to learning the fancy Git. By the way, I will never forget to sync early, sync often as once upon a time, the story goes, I had to write this sentence down 20 times, on a cheatsheet I had the pleasure to compose for my colleagues after reading the Mercurial book. As I was probably the only one who read that guide, they should never forget me. ( I am too good to be true, for anything else, you have Mastercard. )Speaking of my former colleagues, I enjoyed a lot their company on lasertag or Pool evenings. Also, having lunch together is certainly another ingredient for team jelling – the authors of Peopleware were right, how weird… Oh, having a gym on-site is also a great benefit, of course. It is even better if you make use of it, which I did not.Last but not least, the Scrum/Agile way of working is as beneficial and refreshing as going to the gym, I can find no argument against it. Besides, I can assure that having a pretty, blonde, extremely well organized and protective, “profi” Scrum Master to run the processes makes it even more pleasant.Long story short, having a marvelous techEnvironment and outgoing colleagues is great, maybe required, but certainly not sufficient for a successful business.I regret I haven’t had the chance to do Unit Testing until present times. I guess it has to do with some obsession to deliver as fast as possible. Done is better than perfect and perfectionism is a condition, I could hear often. What if you are far away from being in a team of perfectionists ? I agree - it is wrong to polish the lower side of the banister, but can you still invoke that if the upper side is as smooth as sandpaper? Given these, it may become absurd to keep hearing “we have too many bugs!”. Of course we do. It is also proven that Unit Testing can help a lot to reduce them and you always have the Project triangle to remind you about the basics.In addition, as I mentioned team jelling, I must emphasize some ideas about what surely prevents teams from jelling: a ‘quality, when time permits’ philosophy; a high turnover; always changing teams and no product ownership; individually rewarding, praising or criticizing team members; work conditions which are less than quiet; wasting people’s time in meetings with no outcome ; building things too complex from scratch; the inability to explain to a developer why you’re building a particular feature, not to mention failing to provide market research data; a focus factor of 100% taken for granted in the above-mentioned conditions. Been there, done that, NOT OK.All in all, given the many times I said to myself that I am working in the best web company in my country, I find the overall experience of extreme value and I wish I be able to build even more value with it. I also hope these ideas be source of improvements. Feedback is very useful and important, generally, and particularly – regarding the ideas of this essay. So reactions are welcome.
Notes on this:
It’s highly subjective. I have been forced, in the interest of brevity, to leave out the words “in my opinion” from the beginning of each sentence, because, as it turns out every single sentence on this blog is my opinion. And it is not complete, but it is probably a good start. Joel SpolskyThese are random thoughts, in no particular order of importance.