views:

612

answers:

9

Hello all,

I have joined recently a small web company, whose only product now is a web product, which until now was being developed by another company (it was outsourced). Recently I am appointed as Tech Lead here with following responsibilities:

  • System Optimization for performance and scalability - front-end and back-end - match global benchmarks.
  • Usability testing and interface modifications.
  • To be on the lookout for interesting applications world-wide that have relevance to our product.
  • Integrate apps and work done by freelancers into the system - might need to interact with them for their technical requirements from our end.
  • Develop/deploy and manage our presence on other social networks - e.g. Orkut and Facebook - by the app route.

The standard of code developed is very bad and insecure, with no sense of aesthetics in design either. You can understand the quality of code if I tell you that if you click the remember me option while signing in, your username and password are stored in cookie... that too in cleartext format! They don't use SVN and majority of development is still done by that company only... I am the only guy working here in Mumbai while the other company is in Calcutta, and still they don't use SVN :(

Now my boss, who is the founder of the company, wants to rollout new features very fast, but he fails to understand that writing bad code (like the earlier company) is easy, I can also write bad code that will work but that won't be scalable nor will be fast, and most importantly it will not be manageable... and the web site will suck as before... but I don't want to do that, ... I want to improve the quality of code, with implementing good design process and patterns.

Also, I am working in JS nowadays, although I know it very well but sometime it happens that I am stuck in a cross-browser issue that I didn't expect and it takes time to resolve that and more importantly test it on major browsers, but he asks why so much time is wasted. Writing backend code is easy - you have to test once - but in JS/CSS you have to manually test it on various browsers.

Now that I have explained my problem, what do you guys suggest? Should I look for another job or try to explain. If I should try to explain... then please tell me what I should explain because my company's founder doesn't understand tech and the head of the company who has developed the code that's being used, and is still developing major part of code, is so dumb that he feels that login process should be done by Ajax and if JS is off or not loaded then that's the user's problem, not his. This and the previous example can explain fairly well about his knowledge about standards, security and accessibility.

Regards

+6  A: 

After reviewing all the code, procedures and intended plans I would draw up a document detailing all the tasks with rough estimates and dependencies to achieve wins... quick and otherwise.

You then give this to your boss and discuss with him the way forward. If you don't like what you hear get a new job!

Tony

Tony Lambert
A: 

As far as your javascript issue goes, consider using a well tested library like jquery or scriptaculous...these should have less cross browser issues to deal with than your own code.

frankodwyer
A: 

ya !! i did that .. i reviewed all code, made some necessary optimization, developed classes to efficently manage assets(image/js/css) and to cache them, not only i was not appreciated ..infact it was considered as if i haven't done any real work.

infact i joined on around 15th of october and i am not paid for that fifteen days becuase i was studying the system, making plans and researching on how other people do samething in better way.

what he needs is job done whether u use a dirty method or do it properly in small time .. but as every developer knows writing managable code takes time.

@frankodwyer i am using YUI for new developement, infact earlier code was a mix of prototype+jquery ,.. and ya both libraries were downloaded on same page

and @Ubersoldat maybe my english is bad .. but question is not about english.

Gaurav Verma
if the code is as bad as you say, optimisation is the last thing you should be doing. make it work in a repeatable fashion first. develop tests, source code control, etc.
frankodwyer
i too thought so,but when i joined first thing my boss wanted was to speedup the site ,..but how can a site will load properly when total number of HTTP request is around 60, and as i said loading two libraries loading on same page.so i just made it cachable and tried to reduce no. of request.
Gaurav Verma
"infact i joined on around 15th of october and i am not paid for that fifteen days becuase i was studying the system, making plans and researching on how other people do samething in better way." That sucks, and would be illegal here in the States. You should be paid for that sort of work.
ceejayoz
+1  A: 

A lot of developers are in the same situation. There are no easy solutions. First talk with your boss about the security issues. Convince him that code made by a third party company should be code reviewed by you.

Ask someone else (an independent person) to do a code review and ask him/her to write a few recommendations.

tuinstoel
+6  A: 

If you were not paid for 15 days work I don't think it is a good company - that is just miserly. It might be better for your well-being to leave.

Joe R
Amen to that. Would be illegal here in the States.
ceejayoz
+4  A: 

A long time ago I had a boss not unlike yours. After way too long I had to admit myself that my boss will never be able to provide the work environment I want to work in and left the company.

Given the fact that your boss refused to pay you for your analysis speaks volumes about his perception of what software engineering is all about. It seems you have already tried enough to improve the situation. Even though more trying might improve your situation slightly, it seems unlikely that you'll ever go to work happily.

It appears that you should be looking for a new job.

Andreas Huber
+2  A: 

You need to talk in money terms to your boss, not technical ones. Understand his business plan and then explain how the changes you want to make will earn or save him money in the time scale in which he is working. Try to quantify the sums of money involved. Agree with him which changes will have the greatest financial benefit and on a plan to implement those.

We all know that having a well-founded architecture is necessary for a long-lasting product, but if his plan is build it quick, sell it quick, and scrap it quick, then many good engineering practices may not actually pay off for him, and you should bear this in mind.

If such a plan cannot be formulated, then you should move on. However, make sure you leave all your reviews and recommendations for the person you takes your place. If they agree with your assessment, then maybe the boss will be more accepting on hearing the same story a second time. At the least, you will save that person much of the dilemma you face.

Alohci
+4  A: 
what to tell an MBA Boss ??

From your description, "Goodbye!" would be the best thing to tell him.

Steven A. Lowe
+3  A: 

Unfortunately, there's no easy way to do what you're wanting to do. I've been in a similar situation myself and I can tell you that you don't have an easy way out. Business people (who are good) generally don't interfere if they feel that you have a grip on things and understand the technical aspect enough that they don't have to worry about it.

The problem in your situation is that your predecessor made your boss used to the fact that feature x would only take y months when it really should have been given z months. The only way to undo this is to make your boss aware of the technical issues involved and in terms he can understand. As has been pointed out above, put your arguments in terms of money. Show him that your predecessor did y which is forcing you to z now when you really could be doing x. If he's a good boss, he'll eventually understand.

If he's a bad boss, then he won't understand and you're better off leaving.

Jason Baker
i tried .. and ultimately decided to leave the company. thanks everybody
Gaurav Verma