heathlilley
heathlilley on Hacker News
I wish I knew how much I didn't know. Self-awareness for the win.
He and his coworkers might not have been "Senior" before and they still might not be fully senior, but they are MUCH closer now.
>Ding!
>Gratz!
Kobayashi Maru
If you can't find a solution, change the problem.
I have had great success in re-working the requirement when something seemingly impossible has been proposed by a user. IMHO, this is because what makes something impossible is usually an additional (and often negotiable) requirement.
Sure there are still times when this won't work either, but it should help reduce that number.
I remember talking to a previous boss saying, "I've been thinking of starting skunk works project 'X'. Where 'X' was introducing an ORM, JQuery, or cleaning up some old code/modules. And the answer was always "I'd rather you work on the backlog [of features]."
IMHO, he line of thinking where employers want you only grinding on today's problems rather than additionally incrementally honing the skills to innovate is a broken methodology and does not work for software. The barrier to learning these skills is too low to expect people not to want to do these things and it keeps getting lower.
Well I'm here to say that you can break the shackles. At 37 I might still toil in the Java mines during the day, but at night I am learning Ruby, Rails, NoSQL, zsh and other Open Source/less than enterprisey stuff.
I might not be able to debug a rails app as fast as I can a JEE app but I can still grok/reason/solve issues on the platform.
I think of it like this, Craftsmanship is about having the discipline to dot 'i's and cross 't's. It's about scrubbing out the pans after your done cooking a meal, because while you might be able to keep reusing a skillet without cleaning it to produce delicious meal after delicious meal quickly, eventually, you're going to send a customer to the hospital.
Keeping code in small readable chunks that have automated tests makes it easier to maintain and if this hasn't been your experience then I would say you haven't been doing it correctly.
Sounds like something out of Dune.
I agree, that is why it's up to the developer to improve their skills if they don't want to keep writing Action classes and POJO JDBC classes for that legacy Struts 1.1 webapp.
This is similar to a realization I had a few years ago about my own career and training. I got it in my head that my company should provide training to use the newest technologies for their benefit. It only took a few years of the "it's not broken so don't fix it" culture to realize they don't care how it works, as long as it works. And that I am responsible for my own growth. The cost is using my own free time and resources, the value (aside from learning) is that I get to choose what I will learn, hello JQuery/Ruby/MongoDB/Heroku.
TLDR: Growing on your own is more fun and enriching than being dependent on others.
Usually reserved for legacy databases with lots of custom queries and jdbc code, mybatis (previously ibatis) is a pretty flexible solution. Hooks into Spring pretty well too.
http://www.mybatis.org/core/
IMHO this the "Get's things done." part of the developer skill set defined by Joel Spolsky. A wizard at solving problems without an eye on maintainability or the long term picture.
The antithesis of this is the "Smart" guy who can design the "perfect system" upto and past the release date.
Because you can't make money off somebody's creativity unless you can control and direct it.
It reminds me of something my father told me when I was figuring out what to take in college..."Find something you like to do and you will never work another day in your life."
His advice was not absolute, there are bad days, but overall he was correct. I wake up almost every morning looking forward to what I will solve/build that day. He was a chef, provided a great life for his family and still experiments in the kitchen even in retirement.
I think the "software as a craft" argument also fits here as people who like to program like to tinker at home much like wood working in your garage.
Posted by
heathlilley on Tuesday September 13, 2011 @09:40AM
from the codeproject.com dept.
Whining ---------------------------> Fixing
Asking for permission -------------> Asking for Forgiveness (Professionally)
Gaming as a hobby -----------------> Learning as a hobby
Working hard ----------------------> Working smart
Speculation -----------------------> Communication
Competition -----------------------> Cooperation
I think there is something incredibly powerful about a continuous integration system that is fully bootstrapped. Being able to know the instant something is broken and run a single build script after a SCM check out to have a fully functioning system should be the goal of every enterprise system, IMO.
Proper unit tests with broad coverage are foundational to both of these ideas.
Also beware the "if it ain't broke don't fix it" types who always view system design and framework suggestions as general programmer whining and thus not worth investing any time. A lot of times this is true but prolonged adherence to this will leave you with a fairly antiquated technology stack.
Are you talking about learning new tech or just coding? I can't separate the 2, I don't feel qualified to know something unless I have coded it.
I did lose my desire to learn though...
6 years ago, my career turned into a job. This was partly because we got tired of looking at the "next great Java framework". "Standardization" was what was asked for, "stagnation" was the result.
Then about 2 years ago I started learning things on my own time. I installed Ubuntu, started playing with Ruby/Rails:Python/Django, automated unit testing, reading blogs, even started taking classes again. My desire to learn is more intense now than it was 10 years ago. It is aggravating not being able to use the new stuff at work but with enough practice I will become proficient enough to leverage it elsewhere.