I had a chat recently with someone about engineers, and it is because of that chat I feel I need to write this, because the person I was talking to made some interesting points about engineers (mainly in Silicon Valley, due to their geographical position at the moment, but this I’m sure it’s often the case allover the world). First of all, I ought to mention that the person I spoke with about this is highly intelligent and educated, and spent most of their career surrounded by engineers; as such, the opinions expressed are not based on hear-say but rather on things they encountered themselves while dealing with engineers.
Even more, I agree with some of the points we discussed about — and sadly, I see the industry promoting some of them, in my opinion, to the detriment of (software) engineering. As such in an (ahem!) uncustomary fashion for myself, I set off to
moan blog about it 🙂
So here’s the thing, I read every day articles and tweets and opinions about what makes a very good software engineer. Some of these opinions originate in the Valley, some originate elsewhere in USA, some in Europe or across the world, however, there is a common theme to these: that the ideal software engineer plays very well in a team and as such is very willing to follow trajectories set by others and sets off very willingly to execute them. And I partially agree with some of this — after all, as engineers, we get paid to accomplish something at the end of our work day. I agree also with the team playing factor — it helps greatly if you can get an engineer who can gel well with the others and based on that, when required, facilitate the inter-team communication. My friend, Ian Cackett, had a great post recently talking about why everyone should have a stab at a project on their own which I highly recommend reading — and he makes a very good point there: by doing so, one learns about all possible facets of executing on a software project, from idea to productionizing it; this learning then can only benefit the individual contribution when thrown in a team! So just being good in a team I don’t think qualifies someone as a good engineer. Just as well as working very well on his/her own doesn’t too!
There is one aspect that is missed out lots of times about really good engineers — and I think it’s the lack of this ingredient that gives us, engineers, this aura of socially-awkward geeks, sitting in a corner by ourselves: creativity! The industry has put so much emphasis on “team”, “skills”, “experience” that we completely forget about the fact that ultimately, as software engineers, we are creating things! It’s like being a writer, sitting down in front of a white page and bringing to life amazing vivid pictures which tell a story — instead of that though, we sit in front of an empty text editor and bring up to life …products!
I touched on this before in my blog, in one of my speeches for Toastmasters, where I compare an engineer to a poet. Granted, that was a bit romanticized, for the purpose of giving the speech some more “oompf”, however, the core still stands I think. We, engineers, are to a certain degree the creationists of today’s world. I mean there are movies being made nowadays about Facebook and about the late Steve Jobs — these guys are today’s artists! And if you watch the movie “Jobs” or “The Social Network”, one thing main theme in both of them is creativity.
We have entire batallions of recruiters and HR personnel nowadays trying to select the “team players” from “non team players”, the seniors from juniors, the scientists from engineers, the thinkers from doers yet nowhere I see creativity being mentioned as a key requirement. If you ought to go through all the job postings as an outsider with no idea about what a software engineer does, really it sounds like we are just weird creatures who sit down in their chair for about 20 hours a day, surrounded by the team and the project managers and execute exactly what is said to us. We can write good documentation, good code, can test our own code, can deal with production issues and can communicate with others. But we can’t … think for ourselves pretty much it seems! We can’t (and aren’t required to!!!) create anything. Really? Is that what software engineering is all about?
Even worse, while that stereotype might apply to large sluggish corporations, is this what software engineering is all about in the heart of it, in Silicon Valley? I’ve written about this in one of my LinkedIn posts too: isn’t creativity paramount in this job, especially if you are a startup looking to disrupt your vertical? Don’t you want each and every one of your engineers to be creative, to help you carve new paths and come up with new ideas?
Hamid Ghanadan did an awesome job in his TED talk and brought up the same issue in the scientific world: creativity is needed there too! (What do you know? 🙂 ) Turns out the same applies there too: you can traverse all the whitepapers and publications in your field and be a really good scientist based on achieving that, but without creativity, the bridge in between observation and hypothesis is difficult to cross. In fact, Hamid argues, all scientists are creative — you cannot be a scientist if you’re not creative! (Yet, it seems, just like in our case, no one acknowledges this!) We need creativity to push science forward — and similarly, back to our engineers, we need creativity in engineering!
Yet, just as in the case of scientists, no one seems to acknowledge this in the case of engineering. Why do I see always the same job posts everywhere not focused on this aspect at all? Even more so, the recruiters who approach me on LinkedIn never mention anything about it — they will go to large extents to paint a very nice picture about the company they are recruiting for (which I understand totally, they do need to sell the company to me, right?) and then followed by something like this:
“They are looking for a senior Java techie, with strong experience with Amazon Cloud and NoSQL technologies to help them create the next generation platform for …”
And that’s it!
To me, the above reads like this:
“We already know what we want and we need a coding monkey to type the code for us cause we don’t know how to. You will be sitting in a cubicle and receive tasks via email and deadlines. Don’t talk to us, we’ll talk to you.”
I dare all recruiters and companies out there posting jobs and mail-blasting the hell out of candidates to go over all of their emails sent and find an instance where creativity is being mentioned. And if you did that, well done to you sir/lady! You are probably going to get that candidate and you deserve to! Because you understood, unlike the rest of them, that us, engineers, in order to be decent at what we do, need that bit of creativity!