Who are you? Where are you from and what is your backstory?
I’m Benjamin Spak born in New York and raised in central Florida. T-shaped front-end web developer & digital marketing veteran. Passion for crafting intuitive user experiences. Self-motivated, collaborative, with a strong sense of JS, UI, UX, CRO & SEO best practices.
Worked with notable clients: Smucker, Wells Fargo, Karma Automotive, Signature Flight Support, KMI International, Wiley Publishing & Tickets At Work (EBG).
Enhanced communications at the Space Life Sciences Lab (SLSL) for CASIS. Created a 6-computer communications center to facilitate transmission of mission-critical information to the International Space Station (ISS).
Founded the #301DaysofCode initiative to inspire & advocate for Jr. web developers.
What made you get into programming?
In a word ‘Myspace’. I know, yikes, and elder millennial! I think Myspace and Neopets got several people on board. Initially, I wanted to be a designer, so I picked up some photoshop, and did custom Myspace layouts for a few local bands and businesses in high school.
After taking a few additional courses in web design in high school, I learned the now dated process of creating a layout in Photoshop, slicing them & coding them in Dreamweaver. When it came time to learn PHP I hit a wall and set aside coding for around 5 years. Eventually, while bored in the Air Force I began to pick it back up, along with online marketing.
What made you create #301DaysOfCode?
I started #301DaysOfCode because I wanted to take myself from being an internet generalist to a programmer within the year. My plan was to build on my knowledge base for 301 days and then use the remaining 64 days to find a job. Without intending to, I wound up inspiring a few people to join me in my journey. Now, #301DaysOfCode continues to grow! I’m astonished and really proud of what community members have achieved by dedicating themselves to the challenge.
What does your process for learning to code look like?
I usually, use last minute learning. This is where I will provide a longer project timeline so that I can pick up new skills and learn new things as a project calls for it. Usually, I’ll have a work project act as a forcing function to spur me to learn something new in order to complete a task.
What does your process for building apps look like?
My approach depends on if I’m working on the front-end, back-end or fullstack. If working on the front typically I’ll start with a wireframe and then do a low fidelity mockup because it makes it easier to sell the concept to management.
If I’m working on the back or full-stack then I’ll write out the logical steps needed to complete the functionality of the project. Usually, writing the steps out as comments. Then, I’ll build out the necessary features described in each comment. Once I have all of the disjointed functionality down, I’ll refactor the code with clearer variables and function names and remove most of the code comments.
I very much buy into the clean code approach; code should read like English. Functions and variables should be self explanatory and not leave you scratching your head about what a function or class does when you get back to work on the code after the weekend. Keeping this approach & mindset helps make it easier for anyone else who may read your code in the future as well.
Do you face any particular challenges when building over a period of time?
I quickly lose interest in projects. Unless, I’m getting paid for them, I rarely enjoy working on something long term, my attention span is too short.
Are you currently learning anything new?
Right now I’m focused on honing my Django and Python data science skills. Within the next year I would like to put those skills towards machine learning so that I can further automate my workflow.
Advice for those learning to code?
Learn from as many sources as possible. I know several newbies who ‘learn to code’ on platforms like freeCodeCamp or CodeCademy and then think they are job ready. Unfortunately, when they do interviews they are woefully unprepared to solve challenges on their own.
Don’t make the mistake of going through an institution, college, boot camp, or online course and think it prepares you. Knowledge is not experience. I’ll repeat that because it’s important; knowledge is not experience. Experience is continued failure. Experience leads to success.
If you want to be a quality programmer, you need to learn to be comfortable with failing potentially hundreds of times before you get a program to work properly. Don’t let that scare you off! Be bold and brave in the face of challenges!
For the difficulty it brings with it, programming is a fantastic career choice! Great pay, an awesome and supportive community and you’re always learning something new! If you love learning, and you like a challenge stick with it! It may take a few years to get to the point where you can make the apps you dream up. Ultimately, learning to code is like learning to read a book; it is now an essential skill.
What’s your tech stack?
What have been influential books, resources and links that have helped you?
I am a firm believer all sources of information are not created equal. You either get the best, or you waste your time.
In my opinion. Don’t buy programming books. They are usually outdated by the time they are published.
Recommended free sources of information:
Traversy Media: https://www.youtube.com/channel/UC29ju8bIPH5as8OGnQzwJyA
Charisma on Command: https://www.youtube.com/channel/UCU_W0oE_ock8bWKjALiGs8Q
Notable people: (Uncle) Bob Martin’s talks. Clean code, and one of the agile programming forefathers. Watch his talks on YouTube - as many as you can find.
Where can people learn more about you and your work?
People can mostly easily access me on Twitter: https://twitter.com/benjaminspak
If you have a programming or career related question, please join my Discord community http://codecareer.org/discord