Developers who can build things from scratch
aaronstannard.com
aaronstannard.com
So even developers who can build things from scratch use frameworks when needed.
This was inspired by a lecture I gave to some entrepreneurs on Friday (I put a link to the slides in the post) - these folks are people with business / design backgrounds who are trying to figure out how to realize some idea they've been working on. It was part of a larger course they were in - my role was just to give them the CTO / technical co-founder's perspective on what to look for in building their early tech team, picking a technology stack, etc...
I ended up really having an intense discussion with them on "finding the developer to implement an idea from nothing" and tried to capture that in the blog post.
So one trait a from scratch developer must show, is being a toolsmith. Most startups do not have the time to build everything from scratch. Instead they have to pick tools to solve their problem. A toolsmith can quickly validate if a tool is suited for the task, and is able to create new tools if necessary.
So there are few things one can check before hiring a developer: A toolsmith published his tools, frameworks or libraries. A bughunter contributed to 3rd party projects. ...
Or in short: A developer who did things from scratch, will be proud showing them. An this will show where his strong and weak points are. ( e.g. my weak point is design )
A great salesperson with a great idea, can recruit developers to implement the idea. It's rare, but I've seen it happen.
That's hard enough even for us in the game.
By reading the linked article?
Presumably the previous not-so-great programmers, who are now VP of Engineering. Or do you fire those guys?
https://en.wikipedia.org/wiki/Peter_Principle
I've learned to never work for someone who can't do your job, and that includes "Founders" and "startup people".
A decade ago I wrote most of the software for a DARPA Grand Challenge autonomous vehicle. Now that was "from scratch". Almost every file was 100% new code. There were no libraries for that stuff back then. Unless you're doing something exotic like that, or have severe performance requirements, or are producing something for very high volume production, working "from scratch" seems pointless.
Maybe. Platform limitations are a thing. And you started out your comment with the observation that not everything is a web-app.
Way (way!) back in the day, I had to implement SGI's new OpenGL spec on SunOS. Because it didn't exist, and we needed it for some internal semiconductor CAD programs. Which is to say: the CAD program developers had SGIs and the rest of semiconductor design had sun boxes.
You might be doing embedded, or robotics, or process control or field-monitoring or flight systems, or ... In many (most?) of those, you make a new directory, fire up vi on a main.c file and go from there. If you are lucky (and luck seems to improve w/ time, I will admit), you have enough headroom (space, performance) to do a lot of it in Python. Often not, though...
It's truly rare to find techies who are more excited to see the end result in the hands of productive and happy end users than they are about the technology used to build said solutions.
The trait is more a mindset, a philosophy of empathy than it is a technical skill of building software.
I can appreciate really nifty code, but I also get very happy to see my code get used by other people.
One is more of an intellectual satisfaction, and the other is more of an ego boost.
When working on a project (that may sound boring like a stock-management system), and during the endless development of this (keep adding functionality the employer asks for) starting to want to use this system yourself for daily stuff (hey I have a lot of electronics that could and would profit from a stock-system to find all my shit).
Oh and on top of that constantly keep having thoughts about how I could improve the flow and stuff.
Does that fit into that description of "techies who are more excited to see the end result in the hands of productive and happy end users than they are about the technology used to build said solutions"?
So the 'from scratch guy' is a technical person that cares about closing the loop instead of working on technical puzzles inside his comfort zone.
Me I have two things. I hate working on anything and then have it not ship (What I could have spent the last three months in Costa Rica working on my tan? Seriously?) And I like when I see people using the stuff I worked on. Nothing better than to see that customers are ordering your product and the company is shipping it and making money without having you to be involved.
I worked on a project where we had to remove jQuery from the page, and it was a nightmare for all the developers that had never written vanilla JavaScript.
These days, I don't use jQuery or bootstrap, or lazy loading libraries because I can just add the functionality I need by myself.
I see many people, doing 'from scratch' the same things for years just for the sake of it. Without realizing they are wasting time and introducing the same bug/mistake because they can't learn anything new. And when you present them framework, library or snippets, they are reluctent to learn or simply discover them. I find the lack of curiosity and self questionning very disturbing, for a community that introduce themselves as rockstars and elite of society.
So a developper that can from scratch is for me, actually less interesting than a developper that know how to reinvent himself.
I think the key there is that he is in somewhat of a niche: client-side iOS programming. By limiting the set of problems which he is reimplenting "from scratch" again and again, he has some hope of getting very efficient at the "from scratch" approach (he becomes an expert in that approach). I also think this approach is probably only realistic for very small slice of people (top-level talent whom are also lone-wolf contractors (no oversight, no collaboration)).
And, uh, quite tetchy if I even hinted at the possibility there were better ways to write that stuff. These people also expect to be the only ones who know Haskell in the area and are, ahh, unprepared to be wrong.
For what it's worth, don't judge Haskell by these people anymore than you'd judge any other language by its worst adherents. It may not be The Answer To Everything (TM) but it is worth some study at some point by any developer interested in progressing their skills.
A thing that miss from the list of competency is to fight thoot and nail feature creep.
We just released our mvp within a week of the estimate and it was hard to fight back all the 5 minutes types of addition that came to mind to everyone on the project.
A mvp is also an idea factory and over excitable folks will be gmtempted to add loads of stuff before user validation which kind of defeats the whole scope of it
What you should be able to do is look at the needs, break them down, and communicate (and eventually develop based off such) different approaches based in the business need.
Honestly, every new project rest api or below, I look at problems as a clean slate and then weigh other team members, long term plans, quickest path(as needed), Eric.
I would think most schooled software engineers would have the acumen for such.