Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Too "smart" for my own good?
11 points by CptCodeMonkey 1766 days ago | hide | past | web | 14 comments | favorite
Fairly competent full-stack engineer that has worked for the last six years as a contractor/freelance engineer.

I've given a go at being an employee with mixed experiences: second to last was a startup but lost that due to my father's soap opera like death; and now at a software services company.

It's tough to gauge input from the startup due to fallout from my father's estate. Conclusion was while smart, I was also too slow.

Current employer, the CEO explained why they were having a hard time finding me hours is that I have a habit of providing unconventional solutions ( Made a NoSQL wysiwyg CMS for Facebook apps, used sqlite instead of an in house XML powered CMS, and insisted on unit-tests for another client). Instead of being laid off right there, they were going to try a devops role for me and then if it didn't work lay me off with severance.

Still smart, but not providing the results they desire.

While I feel like I generally made the right decisions, the impression from the PM's is that I didn't. I could try and lawyer my way through and try and prove that I was aiming for the least riskiest approach but that is a losing game as I am fighting impressions and not facts.

Besides jumping ship and finding employment elsewhere ( and very possibly experiencing the same problems ) is there an alternative direction? Maybe the devops role will work better, but maybe it won't and the same problems will continue. Has anyone been in this situation with their career and what did you do in response to make yourself a better/more viable employee?

Just a bit of input from a former PM turned developer, and consider that we don't REALLY have much info to go on from what you've said, but your 4th and 6th paragraphs lead me to this concept.

You may be right that you created the correct technical solution, but not every consideration should be a technical one. From a business perspective there are MANY other considerations. You created an 'unconventional solution'. That may be a problem for many businesses, and rightly so. If they were to bring other devs in, what is the lead time needed for a dev familiar with the companies systems to be able to update the system you created. There is a cost involved in that. If the solution you came up with is non-core to the business, that is possibly more problematic, as they are dedicating extra time to a non-essential system simply because it was written differently from the way the company normally does things.

Much of it could be simply a personality issue, and possibly with the PM, not you. You clearly care about your performance and capabilities, so I'd sit down and have an honest discussion with the PM or CEO about what you're trying to accomplish, and make sure that everything you are doing is for them, and make sure they understand that.

In the end, you're developing FOR THEM. I think a few developers could be happier if they realized their job isn't to create the most technically correct/superior code, but to make the business owner happy.

The way I think you make them happy is to give them what they want. If they ask for A and you give them G, that isn't what they wanted. But MY SOLUTION IS BETTER you say. Great, but you still need to satisfy the employer, and the best way to do that, and make them want to keep you around, is to make them want G. I think if you go in with this perspective, and sell them not only on the code you create, but also on your understanding of their business, and ability to make good platform decisions for the business, they'll look at you quite differently.

Hope that helps.

Unfortunately I had to cut it down to 2K character so might have missed enough information to be useful.

The NoSQL thing was a total failure on my part, yes it was a really cool idea but I was dealing with vague requirements ( and didn't qualify like I should have).

Trying to explain myself has been fairly useful as it's brought up questions I didn't ask, like why didn't the PM's tell me their complaints up front instead of waiting until the CEO had to get involved. In retrospect that's actually kind of upsetting.

Also three rules as a contractor/freelancer I try to abide by:

#1 Always make your client more money then you cost

#2 It doesn't matter right/wrong if the client isn't happy ( unless they're crazy )

#3 Ignore #2 if it threatens rule #1 by managing expectations ( try to avoid using the word no ).

Last things, long time ago I was on a team that made our own web framework ( routing, MVC, ORM, etc ) and while it worked, it was a failure because of a lack of referential integrity, high cost to spool up new dev's, and lack of an external community support. Since then I try to avoid building my personal space shuttle ( really complex/cool stuff ) for paid work.

I think the reason I am still with the company is that they're in a badlands between small one off projects and more long term/perpetual projects which I've excelled at ( and they're still adapting too ) and I am wondering if the CEO realized that the PM's didn't convey an of their concerns to me before going to him.

So it looks like I need to have some more conversations with the PM's themselves ( I can turn on a dime if given constructive feedback).

Here are my contractor/freelancer rules:

1. Make the customer happy 2. Deliver in the fastest, cheapest way possible. 3. if you come to a dificult decision or a better way layout options, pros and cons and let them make the decision. 4. CYA, do it in writing. 5. if you come across a problem that's going to delay delivery let them know as soon as possible.

You've got the right attitude, and I think that is going to bode well for you. It didn't really come across in your original post.

Best of luck.

It sounds like you have great technical ability and could easily solve these problems in the way your boss would like. So the problem is communication between you and your boss, that you aren't understanding exactly what he or she would like you to be doing.

Regardless of whose fault it is, it sounds like your work-communication skills could use improvement. And in my opinion, this is one of the easiest ways we can add value to our role as developers.

You can make it your business to ensure that all the details of each project are in shape and make sense before you start.

Because your boss said he doesn't like unconventional solutions, perhaps for the next few projects before you get too far along, make a technical plan and run it by him or her to get their input. If they protest, you can make a case for your way but if they would like you to use a different technology, well, they're the boss and you do it their way. Make it part of your job description to keep your boss informed of the major decisions you are making as you work on the project. If he knows about something, it means he has signed off on it and if the solution ends up being "too unconventional" it is no longer your fault.

Basically, you are learning how to make your boss happy with your work, as he is not. This will probably mean letting go of controlling how things get done and taking the initiative to communicate more, and that is something you are going to have to decide if you can be happy with.

If you need more autonomy you could find a small startup or founder who needs a technical partner; a job situation where you will have full say of how everything gets done. Maybe that is where you will be happiest. Regardless of where you end up, working on communication skills never hurts.

I can't speak for others but I've dealt with some devs who generally try to do all sorts of things but rarely did that contribute to doing anything better or solving problems better. I might be misinterpreting what you're saying but it sounds like you're one of those types of devs.

I don't have issues with devs who wish to contribute and brainstorm but going off and doing their own thing and thinking its better may cause more issues than necessary. It's always better to at least iterate with the team first. I think they're saying you're smart in that you're capable, but perhaps just doing all the wrong things with your skillset to the culture they are looking to establish and the way they do things.

The issue doesn't sound like a title/role problem, it sounds like how you work vs how these places work to solving the solutions they're trying to get to.

I am not sure if I am. Are you talking about someone as described by the Daily WTF's "Complicator's gloves" http://us.thedailywtf.com/Articles/The_Complicator_0x27_s_Gl...

If so, I generally keep my more insane idea's to unpaid pet projects and hugely resent dealing with code where it becomes apparent that the developer was bored out of their mind OR was trying to add some new tech to their resume bullet list.

Also, if I am just not the right fit for this company, how would I go about finding a company that fits me better? I am in my 30's and while I've done well ( with positive post 6 month reviews by client's and their engineers ) I've never really found an ideal company to stick with. Job adverts seem kind of useless as almost every company is "New", "Exciting", and or "Fast paced". On the positive software engineers are a rare commodity but on the downside it's like the real estate market where you're unlikely to just "find" good opportunities by accident.

Do you like to develop and improve the latest technology? Do you contribute to the projects you're bringing into your job? If so, look into getting a more "low-level" job in that you build software and tools that other developers use to build business projects.

Do you like to advance the cause of the latest technology? Look into being hired as a developer evangelist.

If what you want to do is use the technology to build business applications, then I urge you to develop a side project using your favorite technology and transfer as many good qualities of those technologies as possible into your day work. For example, your skill writing and organizing Clojure functions will certainly improve your PHP functions. Later on, you might find a job that requires your kind of tech or your side project might become your full-time project.

I only say this because you mentioned that some PMs had some problems with your work. People who gravitate to one of the PM roles are problem creators. They are not users and they are not developers. In order to make a living they need to extract value from the dev process. One of the methods in which this is done is politics, gatekeeper-ism, and gridlock. This manifests as FUD to upper management. If the project or technology is not seen as one the PM has instigated and is in control of, they will fight it and you with FUD. Never mind the fact that the PM probably knows nothing about the technologies in question. Unfortunately you will probably need to find some new clients.

I get the smart but slow thing ALL THE TIME.

When on contracts I often have quite heated debates because everyone who is running, is almost always running right into a brick wall that they refuse to acknowledge... until it happens.

And then guess who they turn to to dig them out of the shite? Oh yes the smart guy (who saw it coming).

It pissed me off to the extent that I made a conscious decision to break free of the contractor world and go it alone.

I probably am slow, but I like to refer to it as considered. It means I take the best possible path having weighed up the odds, and not rush into the one that seems obvious.

It means sometimes I end up with a counter intuitive result, which works far better than the one other people expect to be the answer.

And I'm much happier with that.

> having a hard time finding me hours

In my experience/interpretation, this is code (intended, I suspect -- but it could be otherwise) for "start looking".

P.S. I don't have a management/HR perspective on this, but I also suspect it may be part of laying a formal paper trail and documentation for a subsequent layoff or termination.

If they can document an inability to find you / your role work, this lends credibility to their decision to to terminate. Their communication of this to you becomes part of the record.

P.P.S. It may also be considered, on the part of management, as a kindness. Rather than terminating you immediately, they are giving you... a "nudge" to start looking while you are still employed.

(Of course, should you find something else, this would also save them from a possible claim for unemployment insurance -- said claims having an effect on the amount of the premium they pay for that insurance, as I understand it.)

"here's a bunch of problems we have with your work... oh, and we're having trouble finding you hours..." I think your analysis is correct.

It seems like OP just makes much more complicated solutions than necessary. I've had coworkers that would spend two days developing some fancy solution using all kind of complicated algorithms and technologies that honestly just didn't NEED that level of engineering (and no real benefit was seen from doing it). While a more robust solution is TECHNICALLY better, the overhead it costs really doesn't account for that in many cases.

If you take the devops position it will be very hard for you to become a developer again later in your career. Instead, leave, and go to a company that values you more.

I am in my 30's so maybe a change won't be too bad. On the other hand I've never really been able to find my ideal dream job ( more engineering based with Python and at least partial telecommute ).

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact