Cast Iron
Cast iron skillets are incredibly versatile pieces. Their key strength is that they retain heat incredibly well, can be seasoned to be almost as non-stick as Teflon pans, and can go from stove-top to oven without turning dinner into a literal toxic goop.
Seriously, you can kill yourself if you put a Teflon pan in the oven for long enough. Just don't do it.
Cast iron skillets need to be seasoned in order to be effective. The "seasoning" of a skillet is a series of layers of polymerized oils built on top of each other, ultimately creating a smooth surface. You generally need to continually build up the seasoning on a skillet as a regular form of maintenance. The abridged version of how to season is to apply a thin layer of Crisco oil to a cleaned skillet, then bake it in the oven at 450~ degrees for an hour. You'll polymerize a layer of oil. Cook fatty things like steaks, cornbread, what-have-you with lots of butters and oil and you'll build up layers of seasoning while you cook.
It's easy. Just by using a cast iron skillet properly, and giving it the post-cleaning-seasoning, you'll end up able to fry an egg in your skillet.
It is common to purchase a cast iron skillet that comes from the store with a small layer of seasoning; generally, these skillets are fine for cooking high fat items, but can easily be wrecked (temporarily, of course; you can always put in some TLC and re-season a skillet) if you misuse it and cook something too acidic before enough seasoning is built up.
Old cast iron is generally sought out after for its smoothness, and occasionally (when passed down as an heirloom piece), for a seasoning that could have been built up over nearly a century. A quick search for Griswold on Ebay yields over two thousand results, many of these results being for cast iron skillets.
No matter what field your career is in, you'll probably hear the phrase "seasoned" and "unseasoned" a fair bit when someone is describing how experienced someone is. People new to their job and field are referred to as unseasoned. People that have demonstrated reliability and proficiency are "seasoned". It's fairly similar to cast iron. Maybe you'll hear a variation; "raw" is another one commonly used.
A while back, I worked at a company that had an ambitious goal: they wanted to invest in people. They wanted to help people become better developers and so they would hire people that were not yet reasonably seasoned and that were still early in their journey as developers.
At face value, this is an incredible thing that afforded many people an excellent opportunity. That is not the point of this post. Despite the frustrations this caused me during my time there, this is a fundamentally good thing to do.
These people were the newly purchased skillets, from your local Cracker Barrel; the kind that claim to be seasoned on purchase, but really aren't. They came from bootcamps, they came from a certain controversial online school, they came from learning in their spare time. They came from the factory with a very thin layer of oil, and that was enough seasoning to get them through the door.
There were a handful of other developers that acted as an army of Griswold #7's that your grandma used for sixty years.
If you're not one of those people that for some reason finds themselves hunting locally for old cast iron, the Griswold cast iron pieces are approximately a century old. Cast iron itself is referred to as seasoned when oils and fats have polymerized and created a non-stick layer to cook on. It's one of the many things that makes cast iron skillets so useful. Generally, older cast iron is valued for being well seasoned, hearty, and well constructed.
I had no qualms with being hired to get the job done. My job was simple: develop fast enough and well enough to complete the projects under-time and under-budget, and teach the junior developers everything humanly possible. This was fine.
The fundamental problem came from witnessing the following pattern over months:
- The junior developer would start working on a project
- The project would need more senior developer workers to actually get it completed
- The junior developer would be sent off to get trained in a new technology of some sort to be useful in a theoretical project down the line
- Rinse
- Repeat
In my two years at this company, I witnessed people getting certificates in things like Angular 5 development, while being unable to grasp fundamental JavaScript syntax and not knowing what ES6 was. I had to run multiple training sessions on how to branch in Git, or how to write a custom binding handler in Knockout.JS. The fundamentals were not there. There was no seasoning. The ability to apply their knowledge beyond something identical to what they have already been shown was not there.
You cannot fry an egg on a poorly seasoned skillet. You cannot send someone off to get certification if they do not understand what's going on below the surface even a little bit.
A common mistake among sophomoric cast iron owners is to apply many layers of initial seasoning, and then to not consistently reapply seasoning to their skillet under the assumption that just by cooking with oils and fats that they are keeping their skillet seasoned. Over time, the seasoning on the skillet will become uneven, patchy, and it will require a good seasoning anyways.
Over time, I found myself twenty thousand leagues below the surface. I had all the pressures of the projects falling on myself and a few others, while the junior developers were simply getting pulled out of the fire to get some new certification. It was suffocating. To this day, that company has their juniors posting on LinkedIn about their new training certificates, or some new buzzword they've learned.
I watched many people leave that company, and few of them were the junior developers. The majority, by and large, were the most seasoned developers.
There is a common misconception that developers enjoy their job so much that all they care about is the code that they write, and that if they could they would simply write code all day long. That is treating developers as inventory, and not as people. People need to grow. They need to feel useful beyond just generating revenue. They need to feel like they're not being exploited.
At this company, and many others that I hear about, junior developers are allowed to grow, and ultimately figure out what they cannot seem to work on (for preference, or skill-set). Senior developers experienced no growth, and as such ended up capped in both salary and skills. The argument there was that senior developers were getting paid more, and therefore had to spend more time working to earn that extra money. They were not allowed to spend any time bettering themselves, because they had to spend the time making the money subsidizing the resume of a junior developer that did not understand what they were doing in anything but a superficial level.
The argument that they are paid more, thus shouldn't be given time to better themselves, ignores the developer in any meaningful way, and treats them as a transactional item. Ultimately, companies are shooting themselves in their own foot by not allowing their best players time to do anything not directly work related:
- They cause more rapid and more common burnouts in their top developers
- They cause more turnover due to an unhappier work environment
- By limiting their developers to only work with what the company works with, and never exploring alternate routes, they pigeonhole a developer into seeing all problems as the same type of problem over time. All tools become hammers, all problems nails
- By not allowing your top talent to diversify, you are limiting the ways that your company can grow and solve problems and end up relying on R&D to be done by people that are not quite ready to research hard problems and come up with proper solutions
So remember – your developers are people, and they need mental stimulation and even a little bit of time exploring alternate options, new techniques, and such. No one should ever be committed 100% to client work / directly working on product work.
That's just asking your developers to stagnate, and then for your company to stagnate as well.