

Ask HN: Too "smart" for my own good? - CptCodeMonkey

Fairly competent full-stack engineer that has worked for the last six years as a contractor/freelance engineer.<p>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.<p>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.<p>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.<p>Still smart, but not providing the results they desire.<p>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.<p>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?
======
pedalpete
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.

~~~
CptCodeMonkey
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).

~~~
sharemywin
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.

------
fringedgentian
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.

------
OafTobark
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.

~~~
CptCodeMonkey
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...](http://us.thedailywtf.com/Articles/The_Complicator_0x27_s_Gloves.aspx)

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.

------
1123581321
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.

------
chris_dcosta
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.

------
codeonfire
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.

------
pasbesoin
> 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.)

~~~
xauronx
"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.

------
cmccabe
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.

~~~
CptCodeMonkey
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 ).

