Coding is not about Code:

Solution Design

Evan Cole, Director of Elewa Academy
20 January 2018
At the beginning, I was fresh from the world of research and computer science. The web, software development and teaching were all brand new to me. I had big ideas about the brilliant algorithms and software I’d be building, and all the clever ways I would teach CompSci to beginners so I could train the most sophisticated junior developers EVER.
I was lucky enough to be set straight immediately. The hints were everywhere: students telling me they just wanted to build things that worked, me struggling to fit the fancy stuff into my own projects, and other companies in our incubator getting started with business degrees and some Meteor.js. I saw the facts, but I didn’t get what good development is about until I was faced with maintaining a bad software solution.
Elium Academy was still brand new, we didn’t even have a website yet (and you’re nothing these days without a website). There was too much to do and not enough people or time to get it all done. We divided up tasks, and one of our team ran off with his project. He stayed home for over a week, working furiously to develop a mission-critical piece of software for our upcoming launch. His solution was amazing, it took me over a month to understand how it all worked. There were abstractions on abstractions, only a few central configuration points, classes and constructors all over, over 15 folders and 30 files – he had built an architectural marvel! We were now ready to begin … designing our static web site.
Yes.  The piece of software I described dynamically rendered and served our static web site.  For an entire week he did nothing but build a piece of software that does exactly what WordPress or any number of existing services already does in 5 minutes.  Not only was this an enormous mis-allocation of his precious time, but we continued to loose time over the coming months fixing bugs with no docs, making simple visual changes, and fixing merge issues from our non-developer design and marketing interns.

Being a good developer isn’t about sophistication, it’s about judgment.  It’s often better to use the known than to make your own.

Using the known can be better than making your own.
Frameworks are clever solutions to common problems.


Take the time to learn why your framework is well designed.

My idea of what a developer does, and even what a developer is, has changed enormously since those early days. I now understand that being a developer in a small-medium company isn’t about sophistication, it’s about judgment – choosing the simplest and most maintainable solution possible for your company’s unique circumstances. Not writing code can be the hardest, and best thing to do.
The developer’s primary concern should be leaving behind an understandable, maintainable, and relevant solution for their clients and co-workers. Sometimes this means writing no code at all! But that’s ok. Programming is just a means to an end. In the current tech world there exist so many great SAAS’s, frameworks, and open-source projects that the most effective solution is often to string together a few things that already exist. Don’t worry, your coding skills weren’t wasted. You were the only one able to read all the documentation, understand your company’s mission, and write the scripts necessary to tie it all together.
By now I’ve spent a lot of time teaching web development and talking with developers from all backgrounds. I’ve come to believe that programming and being a good developer are completely different skills. Certainly developers need to know how to program, but without the complementary skills you might be doing more harm than good.
What’s so cool about this perspective on being a developer is that it’s inclusive to different experience profiles and gives some good ideas for how to make the jump to developerhood. Many of the most important developer skills have nothing to do with coding. This means if your programming skills are growing slowly there’s still a lot you can do. I have seen that learning the soft skills at the same time, or even before, advanced programming has enormous benefits for students. It ensures good habits are deeply ingrained into their programming process, and it enables them to always be improving even if their coding skills are stagnating. Beginners can be better developers than their coding skills alone would indicate.
Developers are in-house tech consultants who build and maintain their own work.
Here are few skills programmers of any skill level can begin practicing immediately that will improve their value to their customers, team mates and employers ASAP. Careful, the first one might feel counter-intuitive!
1. PROBLEM UNDERSTANDING – Analyze and constrain your goal:
Many people talk about problem solving, I believe in problem understanding. In programming, problem solving is the process of breaking large problems into smaller problems whose solutions can be automated and reassembled. Only after fully understanding the problem and properly constraining your options (by budget, time, focus, …), can you begin coming up with optimal solutions.
2. DESIGN THINKING – Incremental, user-centric development:


Whatever you’re building, it’s probably not right. Learning to start small, seek feedback, and recognize when you’re wrong are necessary for design thinking. Build up your full solution in simple steps, seeking feedback and improvements at each step. Get all the details right.

3. CONTEXT SENSITIVITY – Who, what, when, where, why, how?


Who will be using your solution?   Who will be maintaining your solution?  What skills and experience are available in your team?  How long will this problem be relevant?  …
Be aware of all relevant factors then use your best judgment to keep things simple for everyone.
4. DOMAIN SPECIFIC EXPERTISE – Grounding and delivering:

The first 3 skills are pretty general, they will serve you in any project, tech stack, or industry. But they aren’t enough. You need to have the specific knowledge necessary go the last mile – master your stack and understand your industry. The difference between an successful release and a PR disaster can come down to a quirk in your chosen framework.

You should be valued by the time you save others, not the amount of time you work.
Happy learning!
Share your thoughts
Become part of our open community, and get coding!
Related Articles
Start Learning

Start Learning

Get free access to our open and available curiculum. Be ahead of the future and start learning now!

Thank you! We will send you the curriculum soon!

Subscribe To Our Newsletter

Subscribe To Our Newsletter

Join our mailing list and receive cool updates about our curriculum, approaches to 21st century learning, coding, market orientation, etc. 

You have succesfully described. Prepare to receive the news as it comes in!

Pin It on Pinterest

Share This